Нормальное столкновение двух точек - PullRequest
2 голосов
/ 26 июня 2011

Я пытаюсь вычислить нормаль столкновения двух точек. Мне это нужно для уравнений реакции на столкновение для расчета новых угловых и линейных скоростей.

Этот сценарий происходит, когда, например, углы двух 2D или 3D-боксов сталкиваются друг с другом. Каково было бы их нормальное столкновение?

Теперь я знаю, что в случае столкновения вершины и грани нормаль столкновения будет просто нормалью грани.

1 Ответ

2 голосов
/ 26 июня 2011

Не определено. Технически, нормаль столкновения должна быть нормалью на поверхности препятствия их конфигурации пространства (то есть совокупности всех преобразований, где эти два объекта пересекаются). Вот интерактивная демонстрация, которая может помочь:

http://www.pfirth.co.uk/minkowski.html

В результате, если объекты не являются гладкими, то четко определенная нормаль не будет существовать в точках недифференцируемости на их границе. Вместо этого вы получите конус возможных нормалей.

          ^
          |
          |  normal cone
          |
----------+---->
~~~~~~~~~~|
~obstacle~|
~~~~~~~~~~| 

Таким образом, вы можете использовать любой нормаль в этом конусе как тот, который вы используете для разделения двух объектов, например:

          ^   ^
          |  /
          | /  possible normal
          |/
----------+---->
~~~~~~~~~~|
~obstacle~|
~~~~~~~~~~| 

Теперь принцип наименьшего действия гласит, что правильное решение здесь должно быть нормалью, которая выполняет минимальную работу, а экстремумы здесь - это только стенки конуса. Это означает, что в отсутствие каких-либо других взаимодействий мы могли бы просто предположить, что импульсная сила направлена ​​в одну из граней. Чтобы решить, какой из них, опять же, принцип действия говорит, что вы должны выбрать нормальный, который работает меньше всего. Чтобы понять это, вы просто вычисляете реакцию столкновения для обеих граней, а затем выбираете грань, импульсная сила которой имеет наименьшую величину.

...