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

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

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

Другие вопросы по тегам