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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Lisp Найти 2 ближайшие точки на окружности

Lisp Найти 2 ближайшие точки на окружности

Ответ
Поиск в этой теме
Непрочитано 15.10.2014, 01:44 #1
Lisp Найти 2 ближайшие точки на окружности
tehkonst
 
Регистрация: 25.10.2011
Сообщений: 132

Есть список точек, которые лежат на окружности.
На рисунке - центры белых кругов.

Нужно из них выбрать 2 ближайшие точки к заданной точке (центру желтого круга).

На рисунке две нужные ближайшие точки выделены красным.

Я предполагаю, что нужно найти точку соответствующую минимальному и максимальному углу относительно заданной точки. Помогите, пожалуйста, с кодом.

Миниатюры
Нажмите на изображение для увеличения
Название: Ближайшие_круги.PNG
Просмотров: 70
Размер:	8.0 Кб
ID:	136758  

Просмотров: 2148
 
Непрочитано 15.10.2014, 07:59
#2
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Во первых не точки, а углы, во вторых что значит помочь?
gomer вне форума  
 
Автор темы   Непрочитано 15.10.2014, 09:17
#3
tehkonst


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


Да верно. На выходе мне нужно 2 точки получить, соответствующие углам.
Спрашиваю, как их проще извлечь? Функциями max и min это возможно?
tehkonst вне форума  
 
Непрочитано 15.10.2014, 12:00
#4
ciril

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


возможно, только не проще ли оперировать не углами, а расстояниями.
ciril вне форума  
 
Непрочитано 15.10.2014, 12:07
#5
Кулик Алексей aka kpblc
Moderator

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


Offtop: Мне кажется, что "к центру желтого круга" ближайшими будут не указанные точки, а 2 точки в направлении "против часовой стрелки от круга". Это так, к вопросу о ТЗ
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 15.10.2014, 19:22
#6
tehkonst


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


Цитата:
Сообщение от ciril Посмотреть сообщение
возможно, только не проще ли оперировать не углами, а расстояниями.
Я сначала тоже так подумал, но тогда получится то, что написал Алексей. Не те точки скрипт найдет.
tehkonst вне форума  
 
Непрочитано 15.10.2014, 20:23
#7
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Код:
[Выделить все]
 ((lambda (f w) (mapcar f (list (car w) (cadr w))))
  '(lambda (x) (polar c x r))
  (vl-sort (mapcar 'abs (mapcar '- alist (nlist ang))'<)
)
gomer вне форума  
 
Автор темы   Непрочитано 15.10.2014, 21:55
#8
tehkonst


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


gomer, расшифруй, пожалуйста, вот этот кусок
Код:
[Выделить все]
 (mapcar '- alist (nlist ang))
tehkonst вне форума  
 
Непрочитано 15.10.2014, 21:59
#9
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от tehkonst Посмотреть сообщение
расшифруй
ну что ты как дите малое, ей-богу
Код:
[Выделить все]
 (defun nlist (n a)
  (if (< 0 n) (cons a (nlist (1- n) a))))
gomer вне форума  
 
Автор темы   Непрочитано 15.10.2014, 22:10
#10
tehkonst


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


Делает то что этот код? Словами расшифруй.
tehkonst вне форума  
 
Непрочитано 15.10.2014, 23:30
#11
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


находит разницу между заданным углом и и углами из списка
gomer вне форума  
 
Автор темы   Непрочитано 16.10.2014, 03:40
#12
tehkonst


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


Спасибо. Сразу видно, когда код настоящий инженер пишет.
tehkonst вне форума  
 
Непрочитано 20.10.2014, 14:52
#13
Эдуард

строительство
 
Регистрация: 16.01.2004
Петербург
Сообщений: 165
<phrase 1=


Здравствуйте коллеги.
Параметр точки лежащей на окружности равен углу в радианах ,

Поэтому предлагаю следующий вариант:
1.Сортировка выбранных точек vl-sort применяя в функции сравнения vlax-curve-getParamAtPoint
2.Выбор 2-х смежных элементов списка с требуемой точкой.
Эдуард вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Lisp Найти 2 ближайшие точки на окружности



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
lisp: Длина по полилинии до точки vosh LISP 19 15.07.2013 15:10
Тригонометрические функции и векторная алгебра Supermax Программирование 149 08.12.2009 22:22
Координаты точки пересечения line и pline (LISP) paradoxvaha LISP 3 10.07.2007 13:04
Lisp - проблема с получением точки? Кулик Алексей aka kpblc LISP 3 08.09.2006 15:14
Вставка окружности в выбранные точки AcadJim Программирование 8 24.08.2006 07:39