我正在尝试在几何面上绘制法线手柄(到目前为止是一个高矩形),在面的中心并沿着法线指向。
我正在使用以下代码进行操作:
Vec3 up(0.0, 1.0, 0.0);
Vec3 angle_to_rotate = up.cross(face_normal);
double dot = up.dot(normal);
float rotate_angle = std::acos(dot);
Mat4 matrix;
matrix.translate(face_center.x, face_center.y, face_center.z);
matrix.rotate(angle_to_rotate, rotate_angle);
glMultMatrixd(matrix.copyGL());
然后我在世界空间中绘制一个高立方体(y up)。
这有时可以正常工作,但有时(二维 45 个角度)会失败,或者角度方向正确,但矩形看起来像在 z 轴上旋转并且未正确对齐。
这是在OpenGL中实现与(可能将来垂直于)正常对齐的绘图对象的正确方法还是有更好的方法?