Как определить нормаль столкновения при столкновении ограничивающего прямоугольника по оси?
У меня есть 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