Как определить нормаль столкновения при столкновении ограничивающего прямоугольника, выровненного по оси?

У меня есть 3d движущийся ящик и стационарный ящик. Я могу обнаруживать столкновения нормально, но теперь я хотел бы сдвинуть движущийся ящик по неподвижному ящику в качестве реакции на столкновение. Для этого мне нужна нормаль лица, которое сталкивается с движущимся прямоугольником. Кто-нибудь знает, как я в этом разобрался? Не похоже, что тест на столкновение дает мне эту информацию. Любая помощь приветствуется.


person Xavier    schedule 29.05.2011    source источник
comment
Какие библиотеки разработчиков игр вы используете? Почему вы не можете получить доступ к объектам коробки и их атрибутам? Требуется дополнительная информация.   -  person zdav    schedule 29.05.2011
comment
На самом деле я не использую никаких библиотек. Просто opengl. Все остальное в значительной степени мое.   -  person Xavier    schedule 29.05.2011


Ответы (1)


Нормаль к грани равна перекрестному произведению между векторами двух соединительных ребер всех ребер, которые примыкают к грани.

Пусть a, b и c - векторы положения 3 из 4 точек на лице:

//edge a<->b
Vector3f ab = b-a;

//edge b<->c
Vector3f bc = c-b;

//normal of the face
Vector3f normal = Vector3.cross_product(ab,bc);

Если вы не знаете, каково перекрестное произведение двух трехмерных векторов, вы можете посмотреть здесь: http://en.wikipedia.org/wiki/Cross_product

person TravisG    schedule 08.06.2011