previous question开始,我现在设法用四元数旋转对象,但是仍然存在一个小问题,我不知道如何解决。随着下面的代码,我的对象绕x和y轴旋转。但是当我在x键和y键之间切换时,它总是跳回到初始位置。因此,我永远不会从新的职位开始轮换,而总是从程序开始的那一轮开始。

Quaternion q1    = quaternion->quat_rotate(anglex,1,0,0);
Quaternion q2    = quaternion->quat_rotate(angley,0,1,0);
quaternion->mult(q1,q2);
quaternion->quat_matrix(Matrix);
glMultMatrixf(Matrix);
object->drawObject(Red,Green,Blue);

我希望你明白我的意思。

最佳答案



当然可以。您的代码完全按照您的要求执行。您尚未向我们展示Quaternion::mult(Quaterion&q1,Quaterion&q1)的功能,但我怀疑它用q1和q2的乘积代替了四元数实例的内容。您需要将当前方向乘以q1 * q2以获得新的方向,而不是用q1 * q2替换当前方向。

10-08 05:37