Официальный сайт студ.городка НГТУ
Программирование и БД » Алгоритм определения положения точки отн-но n-угольника 

#1  21.02.07 22:39

Алгоритм определения положения точки отн-но n-угольника

Какие существуют алгоритмы? По заданным координатам вершин n-угольника и точки, необходимо определить положение точки (внутри, вне) относительно многоугольника. Проблема в том, что n-угольник не обязательно выпуклый.

Offline

#2  21.02.07 22:45

Re: Алгоритм определения положения точки отн-но n-угольника

пока на ум пришло соединить все возможные точки и потом погрохать перекрещивающиеся. получатся треугольники, попадание в которые и смотреть..

Offline

#3  22.02.07 00:08

Re: Алгоритм определения положения точки отн-но n-угольника

проведи отрезок от точки до самого края поля в любую сторону

если количество пересечений со сторонам чётно то точка не внутри, иначе внутри

Offline

#4  22.02.07 00:36

rzk
Профиль

Re: Алгоритм определения положения точки отн-но n-угольника

s050103613 написал(а):

проведи отрезок от точки до самого края поля в любую сторону

если количество пересечений со сторонам чётно то точка не внутри, иначе внутри

Просто нет слов! Респект и всё!

Offline

#5  22.02.07 07:56

Re: Алгоритм определения положения точки отн-но n-угольника

Мерси, попробую.

Offline

#6  22.02.07 09:49

Re: Алгоритм определения положения точки отн-но n-угольника

Простым перебором всех троек точек, принадлежащих многоугольнику, бъёшь его на треугольники. Далее определяешь, принадлежит ли точка хотя бы одному треугольнику (сумма площадей треугольников, составленных из тройки точек: две от треугольника, третья - твоя, с какой-то погрешностью равна площади саммого этого треугольника). Правда, такой метод сгодиться только для невыпуклых многоугольников.... но всегда можно модифицировать... :)

Offline

#7  22.02.07 11:34

Re: Алгоритм определения положения точки отн-но n-угольника

Есть еще один способ. Из точки проводим отрезки (лучи) до углов многоугольника. Для точки, находящейся внутри многоугольника, сумма углов у лучей =180 гр.

Offline

#8  22.02.07 13:46

Re: Алгоритм определения положения точки отн-но n-угольника

http://portal.standard.net.ru/files/polygon.gif



1. узлы многоугольника задаются последовательно
2. составляешь уравнения прямых проходящих через соседние узлы
3. вычисляешь точки пересечения всех прямых с прямыми y=yA и x=xA (см. рис.)
4. считаешь количество точек слева, справа, выше и ниже заданной точки
5. если хотябы с одной из сторон число точек нечетно, то точка лежит в пределах полигона

Исправлено Jaguar (22.02.07 13:49)

Offline

#9  22.02.07 13:57

Re: Алгоритм определения положения точки отн-но n-угольника

Ли-2 написал(а):

Для точки, находящейся внутри многоугольника, сумма углов у лучей =180 гр.

имхо, 360 гр.
ты ничего не напутал?

Offline

#10  22.02.07 14:49

Re: Алгоритм определения положения точки отн-но n-угольника

Jaguar написал(а):

имхо, 360 гр.
ты ничего не напутал?

Конечно напутал. 360.

Offline

#11  22.02.07 15:35

Re: Алгоритм определения положения точки отн-но n-угольника

тоже, кстати, способ)) но тут к синусам переходить нужно, что не есть гут

Offline

#12  22.02.07 16:57

Re: Алгоритм определения положения точки отн-но n-угольника

Можно триангулировать с этой точкой и посчитать площадь и если отличается от площади ентого самого многоугольника то она лежит вне.

Offline

#13  22.02.07 17:26

Re: Алгоритм определения положения точки отн-но n-угольника

Jaguar написал(а):

1. узлы многоугольника задаются последовательно
2. составляешь уравнения прямых проходящих через соседние узлы
3. вычисляешь точки пересечения всех прямых с прямыми y=yA и x=xA (см. рис.)
4. считаешь количество точек слева, справа, выше и ниже заданной точки
5. если хотябы с одной из сторон число точек нечетно, то точка лежит в пределах полигона

тока не прямых, а отрезков ;-)))

как вариант: а если анализировать пересечения только для одного отрезка, соединяющего точку А и точку на границеи проходящий через центр тяжести многоугольника? так не проще?

Offline

#14  22.02.07 17:28

Re: Алгоритм определения положения точки отн-но n-угольника

В комп. графике много алгоритмов всяких, если не изменяет память то есть алгоритм Кируса-Бэка.
Метода: ftp://217.71.141.40/upload/metods_comp_graph.doc

Offline

#15  22.02.07 19:19

Re: Алгоритм определения положения точки отн-но n-угольника

Всем спасибо... будем мучать компилятор ;)

Offline

#16  23.02.07 13:34

Re: Алгоритм определения положения точки отн-но n-угольника

s050103613 написал(а):

проведи отрезок от точки до самого края поля в любую сторону

если количество пересечений со сторонам чётно то точка не внутри, иначе внутри

Это классический алгоритм. Один из самых простых и верный - лучше использовать именно его

Offline

#17  23.02.07 14:49

Re: Алгоритм определения положения точки отн-но n-угольника

s050103613 написал(а):

проведи отрезок от точки до самого края поля в любую сторону

если количество пересечений со сторонам чётно то точка не внутри, иначе внутри

надо учитывать что пересечет не линию многоугольника а вершину

Offline

Программирование и БД » Алгоритм определения положения точки отн-но n-угольника 

ФутЕр:)

© Hostel Web Group, 2002-2026.   Сообщить об ошибке

Сгенерировано за 0.030 сек.
Выполнено 14 запросов.