Я работаю над чисто непрерывным физическим движком, и мне нужно выбрать алгоритмы для широкого и узкого обнаружения столкновений фаз. «Чисто непрерывный» означает, что я никогда не выполняю тесты пересечений, а вместо этого хочу найти способы отловить каждое столкновение до того, как оно произойдет, и поместить каждое в стек «запланированных столкновений», который заказывается TOI.
Широкая фаза
Единственный непрерывный метод широкой фазы, который я могу придумать, - это заключить каждое тело в круг и проверить, будет ли каждый круг перекрывать другой. Это кажется ужасно неэффективным и лишено какой-либо отбраковки.
Я понятия не имею, какие непрерывные аналоги могут существовать для современных методов дискретного отбора столкновений, таких как квадр-деревья. Как мне предотвратить недопустимые и бессмысленные широкие тесты, такие как дискретный двигатель?
Узкая фаза
Мне удалось адаптировать узкий SAT к непрерывной проверке, а не к дискретным, но я уверен, что есть другие лучшие алгоритмы в документах или на сайтах, которые вы, ребята, могли встретить.
Какие различные быстрые или точные алгоритмы вы предлагаете использовать, и каковы преимущества / недостатки каждого из них?
Заключительное примечание:
Я говорю техники , а не алгоритмы , потому что я еще не решил, как я буду хранить различные многоугольники, которые могут быть вогнутыми, выпуклыми, круглыми или даже иметь отверстия. Я планирую принять решение на основе того, что требует алгоритм (например, если я выберу алгоритм, который разбивает многоугольник на треугольники или выпуклые формы, я просто сохраню данные многоугольника в этой форме).