Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Проверка на пересечение треугольника и отрезка


Автор: ChofCh 27.4.2005, 18:29
Как реализовать покрасивее? Сейчас проверяю концы отрезка на принадлежность треугольнику (через векторные произведения). Если ни один из них не лежит в треугольнике, то проверяю каждую из сторон треугольника на пересечение с отрезком. Чувствую, что способ не оптимальный, но вот два дня уже туплю и не могу придумать ничего лучше.

Автор: batigoal 27.4.2005, 18:43
А зачем проверять концы отрезка? Пересечения сторон достаточно.

Автор: sh_temp_el 27.4.2005, 20:32
ИМХО можно проверять пересечение проекций

Автор: ChofCh 27.4.2005, 20:44
Цитата(Lamer @ 27.4.2005, 18:43)
А зачем проверять концы отрезка? Пересечения сторон достаточно.

Слово "пересечение" в данном случае не совсем удачно. Меня интересуют все те случаи, когда хоть какая-то часть отрезка лежит в треугольнике (в том числе, если в нём лежит весь отрезок)

Автор: SoWa 15.5.2005, 17:12
Ты знаешь что такое уравнение прямой, нормаль к прямой, как определять точку внутри выпуклого многоугольника? Если да, то дело техники- вогнал формулу и работай, а если нет, то обращайся...

Автор: ChofCh 16.5.2005, 09:56
Эххх... Знаю, знаю. Если бы вы внимательно прочитали мой первый пост, то убедились бы в этом. Мне нужно отлавливать как такие:
Код

--------
|       /
|  |   /
|  |  /
|    /
|   /
|  /
| /
|/
,так и такие варианты:
Код

 \
--\-----
|  \    /
|   \  /
|    \/
|    /\
|   /  \
|  /
| /
|/

Во втором случае ни одна из вершин не принадлежит труегольнику, в первом - ни одна сторона треугольника не пересекает отрезок. Вот я и думаю, нельзя ли как-то объединить это в одну проверку?

Автор: SoWa 16.5.2005, 11:39
М-м-м... Объединить-то можно, но сложно. Ты где и на каком курсу учишься? Если знаешь как определять плоскость фигуры и работать с ней, то с небольшим усилием- прочитай что-нить на сайте РАН об этом есть диссертация, то решишь. А без этого делать две проверки.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)