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