Сравнение координат точек
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Сравнение координат точек

Сравнение координат точек

Ответ
Поиск в этой теме
Непрочитано 29.06.2015, 15:58 #1
Сравнение координат точек
tujn08
 
Регистрация: 26.12.2013
Сообщений: 283

Приветствую всех!

Ищу смежную линию к двум другим. Ищу короткий путь - Л1 пересекает Л2. Есть смежная линия Л3 - через нее путь короче может быть. Но есть где такие смежные линии просто пересекают Л1 и Л2 в их точке пересечения. Тут я вычисляю точки где Л3 пересекает Л1 и Л2 и сравниваю их. Три смежные линии отсеяны успешно, а вот дальше проблема. Даже точность не помогает. Как быть?
Сравниваю 2D/3D точки.

(if (equal s_coord coord2 0.1)
(равны)
(не равны)
)
Просмотров: 5003
 
Непрочитано 29.06.2015, 16:22
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450


Приводи эти точки к одинаковому формату - либо только 2D, либо только 3D. Нередко этого оказывается достаточно.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 29.06.2015, 18:45
#3
tujn08


 
Регистрация: 26.12.2013
Сообщений: 283


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
либо только 2D, либо только 3D
Для уточнения:
Вы поняли вот так: 1) сравниваю 2D c 3D точками. Или 2) 2D/3D с 2D/3D точками ?. Для меня видна разница в п.1, если же п.2 то это что-то новенькое для меня ))
Спасибо!
Буду CAR и CADR щас сравнивать пробовать...

----- добавлено через ~16 мин. -----
(if (and (equal (car s_coord) (car coord2) 1) (equal (cadr s_coord) (cadr coord2) 1) )

та же ошибка. как перевести в 2D?

----- добавлено через ~20 мин. -----
Команда: (princ s_coord)
(-158.825 307.93 0.0)
Команда: (princ coord)
(-158.825 307.93 0.0)

----- добавлено через ~20 мин. -----
Может округлить?
tujn08 вне форума  
 
Непрочитано 29.06.2015, 22:32
#4
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
Сообщение от tujn08 Посмотреть сообщение
та же ошибка.
В чем ошибка то?
Код:
[Выделить все]
(setq s_coord '(-158.825 307.93 0.0))
(setq coord '(-158.825 307.93 0.0))
(if (equal s_coord coord 1e-3)(princ "equal")(princ "not equal"))
(princ)
Цитата:
_$
equal
; 4 форм загружено из #<editor "<Без имени-0> загружается...">
_$
Цитата:
Сообщение от tujn08 Посмотреть сообщение
как перевести в 2D?
Код:
[Выделить все]
(setq s_coord '(-158.825 307.93 0.0))
(setq s_coord_2d (mapcar '+ s_coord '(0.0 0.0)))
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 29.06.2015, 23:28
#5
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450


Код написан черт-те когда, поэтому качество хромает. Тем не менее работает
Код:
[Выделить все]
 (defun _kpblc-conv-2d-to-3d (point)
                            ;|
*    Преобразование 3Д-точки в 2Д
*    Параметры вызова:
*  point  список вещественных чисел (точка)
*    Примеры вызова:
(_kpblc-conv-2d-to-3d (getpoint))
|;
  (list (car point)
        (cadr point)
        (if (caddr point)
          (caddr point)
          0.0
          ) ;_ end of if
        ) ;_ end of list
  ) ;_ end of defun

(defun _kpblc-conv-3d-to-2d (point)
                            ;|
*    Преобразование 3Д-точки в 2Д
*    Параметры вызова:
*  point  список вещественных чисел (точка)
*    Примеры вызова:
(_kpblc-conv-3d-to-2d (getpoint))
|;
  (list (car point) (cadr point))
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 30.06.2015, 07:19
#6
tujn08


 
Регистрация: 26.12.2013
Сообщений: 283


Всем спасибо!
Оказалось все работает исправно. Я переменные переприсваивал и смотрел не туда.
Код:
[Выделить все]
 (setq coord2 coord) ; проверка смежной линии на надежность. Будем сравнивать
									(setq coord s_coord) ; меняем координаты на первые
(f_or_b1) ; вычисляем длину (10 (FINISH до пересечения
(f_or_b1)- тут coord меняется
Я смотрел на coord и s_coord, а надо было на coord2 и s_coord
tujn08 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Сравнение координат точек



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Экспорт координат выбранных точек в *.txt slan.ru Программирование 184 23.03.2023 08:17
Autocad 2014 Civil3D экспорт координат точек COGO относительно ПСК Stoner Вертикальные решения на базе AutoCAD 3 17.09.2013 13:48
Нужен лисп для округлении координат у точек (Points). dotra LISP 4 17.05.2012 05:40
Помощь по Лире Серега М Лира / Лира-САПР 52 28.05.2007 02:47