Методы обнаружения столкновений Continuous Physics Engine

Я работаю над чисто непрерывным физическим движком, и мне нужно выбрать алгоритмы для обнаружения широких и узких фазовых столкновений. «Чисто непрерывный» означает, что я никогда не провожу тесты пересечения, а вместо этого хочу найти способы уловить каждое столкновение до того, как оно произойдет, и поместить каждое в стек «запланированных столкновений», который упорядочен TOI.

Широкая фаза Единственный метод непрерывной широкой фазы, который я могу придумать, - это заключить каждое тело в круг и проверить, будет ли каждый круг когда-либо перекрывать другой. Однако это кажется ужасно неэффективным и лишенным отбраковки.

Я понятия не имею, какие непрерывные аналоги могут существовать для сегодняшних дискретных методов отбраковки столкновений, таких как деревья квадратов. Как я могу предотвратить несоответствующие и бессмысленные широкие тесты, такие как дискретный движок?

Узкая фаза
Мне удалось адаптировать узкий тест SAT к непрерывной, а не дискретной проверке, но я конечно, есть другие лучшие алгоритмы в статьях или на сайтах, с которыми вы, ребята, могли столкнуться.
Какие различные быстрые или точные алгоритмы вы предлагаете мне использовать и каковы преимущества / недостатки каждого из них?

Заключительное примечание:
Я говорю техники , а не алгоритмы ], потому что я еще не решил, как я буду хранить различные многоугольники, которые могут быть вогнутыми, выпуклыми, круглыми или даже иметь отверстия. Я планирую принять решение на основе того, что требует алгоритм (например, если я выберу алгоритм, который разбивает многоугольник на треугольники или выпуклые формы, я просто сохраню данные многоугольника в этой форме).

5
задан Griffin 1 December 2011 в 08:09
поделиться