2D випробування на вирівнювання об'єкта з обмеженою коробкою


9

У мене є два об'єктивні рамки з обмеженням (тобто не вирівняні по осі, вони обертаються об'єктом). Мені хотілося б знати, чи перекриваються два об'єктивні вирівнювальні поля. ( Редагувати: примітка. Я використовую тест з обмежувальним вікном, орієнтований на осі, щоб швидко відкинути віддалені об'єкти, тому не має значення, якщо квадратична процедура трохи повільніше. )

Мої поля зберігаються у вигляді чотирьох x, y очок Я шукав відповіді, але не можу осмислити назви змінних та алгоритми в прикладах, щоб застосувати їх до мого конкретного випадку.

Чи може хтось допомогти мені показати, як це було б зроблено, чітко і просто? Дякую. (Конкретна мова не важлива. Псевдо-код у стилі С добре.)

Відповіді:


5

Якщо ви знаєте, де його шукати, це легко. Ви шукаєте oobb. Перейдіть сюди: http://www.realtimerendering.com/intersections.html .
Там ви знайдете посилання на цей сайт http://www.geometrictools.com/LibMathematics/Intersection/Intersection.html
і там знайдете правильний код. (ctrl + f "Перетин ящиків (2D)")

Він використовує SAT і містить вихідні коди та статті.


Алгоритм, описаний геометричними інструментами, є таким, на який я б зазначив.
Jari Komppa

Я можу зрозуміти, що це було 4 роки тому, але завжди пояснюю протизаконний зв'язок і все таке. Це досить "Ваша відповідь в іншому замку", і зараз відповідь навіть не здається в другому випадку.
Янв

2

Найпростіший спосіб - це, мабуть, перевірити кожну вершину поля B проти кожної сторони поля A (обчислити підписану відстань). Таким чином ви можете класифікувати кожну вершину як сегмент "спереду" чи "ззаду".

Якщо всі вершини B класифікуються як "перед" одного з сегментів A, B і A не перетинаються; інакше вони роблять.

Це дещо пов'язано, тому ви можете отримати певний приріст продуктивності, зробивши спочатку перевірку кола-кола, використовуючи обмежуючі кола квадратів (тривіально обчислити)


Я спершу роблю тест з обмежувальним віском, орієнтованим на вісь, щоб швидко відкинути віддалені об'єкти ... чи є у вас більше деталей щодо тесту чотирьохквадратичних?
AshleysBrain

тимчасово обертайте обидва квадратики тим самим перетворенням, щоб один з них закінчувався вгору по осі ... потім використовуйте тест SAT як згадуваний notabebe. коли результат знайдений, обертання повернеться, щоб повернути їх.
Стів Н
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.