Обнаружение столкновений и реакция на столкновение
Я пытался изо всех сил представить несколько движущихся/вращающихся объектов, используя андроиды Opengl. Теперь я хотел бы позволить им столкнуться и ответить реалистично.
Исследуя проблему, я могу найти много ресурсов, которые подсказывают мне, как определить, сталкиваются ли две 3d фигуры в текущем фрейме (или они будут сталкиваться в следующем кадре). Однако мне трудно найти ресурсы, описывающие, как получить информацию о произошедшем столкновении.
Например, используя выпуклые фигуры, я хотел бы знать, какая вершина столкнулась с какой плоскостью сначала, в какое время между кадром. Таким образом, я могу знать, как каждая фигура должна реагировать в своем положении и вращении.
Я могу описать движение каждой вершины лучом и движение плоскостей, а также между каждым кадром. Тем не менее, я немного озадачен тем, как я буду использовать это, чтобы найти их будущие пересечения с течением времени, и будет ли это когда-либо возможной эффективной во времени. Я прочитал некоторые методы для уменьшения необходимости в сложных вычислениях, таких как октеты и столбцы.
Я новичок в этой теме, поэтому любые ресурсы или советы о том, как эти проблемы обычно обрабатываются, будут оценены. Спасибо за ваше время!
Ответы
Ответ 1
Для обнаружения столкновения решение, которое вы ищете, называется непрерывным обнаружением столкновений, и объяснение может быть найдено здесь. Обнаружение контактов между двумя телами относительно просто, особенно если вы игнорируете скорости angular, но если вы выполняете симуляцию с более чем двумя объектами, вам нужно будет решить TOI глобально, потому что порядок столкновений будет иметь значение и не может быть определен путем изучения изолированные пары столкновений (не так просто).
Также вы должны указать конкретную проблему, которую пытаетесь решить, потому что поиск TOI (время воздействия) не является тривиальной задачей и аппроксимация может быть совершенно верной решение в определенном сценарии (например, игровое моделирование).
В блоге который я уже приводил в ссылках, содержатся доступные статьи по этому вопросу и ссылки на дальнейшие чтения, если вы хотите перейти дальше.
Ответ 2
Есть книги по теме, такие как:
http://realtimecollisiondetection.net/
http://www.geometrictools.com/Books/Books.html
Вы также можете изучить исходный код физических движков с открытым исходным кодом, поскольку они реализуют очень подробные столкновения:
http://www.ode.org/
Ответ 3
прекратите изобретать колесо и попробуйте уже проверенные решения.
физика пули (поиск google)
ode показано в сообщении от ville krumlinde
* PS: * обнаружение столкновения является сложной темой и связано с некоторой волосатой математикой. Даже когда вы используете другие библиотеки.:)