Сообщество программистов Autodesk в СНГ

Разное => Разное => Тема начата: АлексЮстасу от 02-10-2024, 05:43:57

Название: Есть ли алгоритм получения точки внутри вогнутых или изогнутых контуров?
Отправлено: АлексЮстасу от 02-10-2024, 05:43:57
Задача получения точки внутри контура, заданного полилинией. Если контур выпуклый, то решений есть несколько, в т.ч. лисп Евгения Елпанова.
Если же контур вогнутый (в форме "Г", "П", "С" и т.п.) или продолговатый извилистый, или "разветвляющийся", то точка (геометрический центр, центр масс, центроид) чаще оказывается вовне.
Наверное, есть и общее решение?
Map 3D, например, для своих целей это делает.
Название: Re: Есть ли алгоритм получения точки внутри вогнутых или изогнутых контуров?
Отправлено: Алексей Кулик от 03-10-2024, 10:17:28
https://forum.dwg.ru/showthread.php?t=60792 ?
Название: Re: Есть ли алгоритм получения точки внутри вогнутых или изогнутых контуров?
Отправлено: АлексЮстасу от 03-10-2024, 21:33:21
Спасибо за напоминание о теме "Как определить, лежит ли точка внутри контура" - она сейчас в поисках что-то не попалась.
Задача, лежит ли уже полученная точка внутри контура, кажется решенной. Но мы не нашли в этой теме примера создания точки в площади вогнутых-изогнутых контуров. Не все перепробовали?

Вопрос здесь - получить точку внутри контура любой формы.

Уточню. Точка желательна в интуитивно ожидаемом месте - ближе к средней части площади контура. Чтобы трудозатраты на выискивание созданных точек не были сравнимы с их расстановкой вручную.  ;D
Я не знаю, есть ли математическое понятие для таких точек.
Название: Re: Есть ли алгоритм получения точки внутри вогнутых или изогнутых контуров?
Отправлено: Алексей Кулик от 03-10-2024, 22:24:22
ИМХО "удобство" самая трудноалгоритмизируемая вещь. Так-то можно попытаться найти середину BoundingBox, от него найти самую удаленную точку, и по тому же вектору - наиболее приближенную. Что посередине - можно считать "удобным". Только не универсальным ((
Название: Re: Есть ли алгоритм получения точки внутри вогнутых или изогнутых контуров?
Отправлено: АлексЮстасу от 03-10-2024, 23:21:18
Т.е. математического понятия таких точек нет - мы бы его использовали вместо интуитивного "удобства"...

Полчаса назад сам подумал о примерно такой же схеме.
Только начинать не с середины BoundingBox, а с центра масс - красная точка. (Вдруг окажется в площади).
И брать, наоборот, не самую удаленную точку, а ближайшую, продлевать линию до следующего пересечения, и брать между первой и второй середину. Желтые точки.
Проверить попадание средней в площадь.
(https://i.postimg.cc/8jspbBjv/image.png) (https://postimg.cc/8jspbBjv)
Если не попала, то продолжить дальше. И т.д.
Если вдруг все точки пересечения с контуром окажутся на вершинах с сильным изломом (зеленые точки), то продолжить в противоположном направлении.
(https://i.postimg.cc/nMhpHYKW/2.png) (https://postimg.cc/nMhpHYKW)