Re: Trace me!
От: FreshMeat Россия http://www.rsdn.org
Дата: 17.04.05 23:40
Оценка: 5 (1)
Здравствуйте, hemmul, Вы писали:

H>Часто/Обыцно/Иногда для определения находится ли точка внутри или вне плоского многоугольника используется трассировка лучей – смотрят сколько раз произвольный луч выпущенный на свободу из этой самой точки пересекает границу многоугольника. Если это число чётное – точка внутри. Нечётное – вне.

( небольшая придирка — на самом деле, наоборот, если число пересечений нечетно, то точка лежит внутри )
H>Но есть меленькая хитрость: если на пути луча встречается вершина – сушествует опасность что она будет посчитана два раза: по одному пересечению для каждой из двух сторон смежных в ней…
H>При проверке пересечения считается что для каждой стороны только одна вершина ей принадлежит (а-ля "начало") а второй находится в полном распоряжении смежной стороны. (на рис. точка А принадлежит стороне AB, точка B – чтороне BC, точка C – чтороне CD и т. д.)
К сожалению, это решение (как и многие подобные предложения) ошибочно.
Контрпример

Луч проходит через вершину многоугольника, получаем одно пересечение, но тестируемая точка не лежит внутри. (Описание наиболее продвинутого алгоритма, основанного на таком подходе лежит здесь, но метод так же уязвим для критики)

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

H>Но мы ведь люди трёхмерные, поэтому давайте перейдём в пространство!

H>Итак, дан некий трёхмерный многоугольник. Ясно, что при трассировке луча опять возникает проблема множественного учёта пересечения с рёбрами и вершинами – почти так же как и в уже рассмотренном случае…
H>Внимание вопрос(Ы):
H>* Сушествует ли тут "лечение" аналогичное 2D-варианту? (точнее: "в каких случаях оно сушествует?")
H>** Если да, то сколько сушествует различных вариантов распределения принадлежности рёбер/вершин граням?
H>** Если нет, то, естественно, почему?
Ответ, конечно, неспортивный, но лучше провести прямую не проходящую через вершины
ПС. Под трехмерным многоугольником понимался многограниик?
Хорошо там, где мы есть! :)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.