在我的 opengl 应用程序中,我想定位人物以查看相机,为此,我为所有对象定义了 2 个向量,正面和向上。
我使用 gluLookAt 来控制相机,所以我需要的向量 newFront 和 newUp 很容易知道。
我用来控制每个图形方向的代码是:
m4D orientate(v3D newFront, v3D newUp)
{
double angle = angle_between(front, newFront);
v3D cross = normalize(cross_product(front, newFront));
m4D matrix = rotate_from_axis(angle, cross);
up = normalize(up * matrix);
angle = angle_between(up, newUp);
cross = normalize(cross_product(up, newUp));
return(rotate_from_axis(angle, cross) * matrix);
}
当矩阵堆栈只有这个矩阵时,此代码运行良好,但如果我推动先前的矩阵旋转(当然是前向和向上的向量旋转),它会失败。
我有什么错?