forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Алгоритмика (http://forum.boolean.name/forumdisplay.php?f=21)
-   -   Проверка пересечения треугольника и прямоугольника (http://forum.boolean.name/showthread.php?t=19310)

Gector 16.07.2014 14:47

Проверка пересечения треугольника и прямоугольника
 
Простая задача. Нужно определить есть ли пересечение треугольника с прямоугольником.
В сети все советы сводятся к одному алгоритму:
1) Проверка принадлежности точек треугольника прямоугольнику.
2) Проверка пересечения сторон если первое действие не дало результатов.

Но тут у возник вопрос - а нет ли более упрощенного и менее затратного по вычислениям способа? Само собой не обязательно исключать первый пункт, но можно ли обойтись без поиска пересечений по всем 12 отрезкам? Вопрос скорее по оптимизации. Первый вариант алгоритма я уже решил. Но перед тем как делать лучше узнать о более простых способах.

SBJoker 16.07.2014 14:56

Ответ: Проверка пересечения треугольника и прямоугольника
 
если проекции фигур вдоль всех сторон пересекаются - есть пересечение.

Nikich 16.07.2014 15:13

Ответ: Проверка пересечения треугольника и прямоугольника
 
Хотя удобнее фигуры проецировать на нормали к сторонам.

Gector 16.07.2014 15:23

Ответ: Проверка пересечения треугольника и прямоугольника
 
Цитата:

Сообщение от SBJoker (Сообщение 284332)
если проекции фигур вдоль всех сторон пересекаются - есть пересечение.

http://noregret.org/tutor/n/collision/#2
Что-то из этого способа я нашел здесь.
Хотя как мне кажется способ ничуть не менее затратный.

Nikich 16.07.2014 15:31

Ответ: Проверка пересечения треугольника и прямоугольника
 
Способ вообще не затратный.
Сразу проверяй твои фигуры по Bounding box'ам. Очевидно, что если коллизии там не будет, то фигуры не касаются друг друга. В противном случае, юзай SAT( то, что ты нашел на сайте).
А если на это дело ещё натянуть какой-нибудь quadtree, работать будет моментально.


Часовой пояс GMT +4, время: 22:49.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot