继我的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);
我希望你理解我的意思。
答案 0 :(得分:1)
但是当我在x和y键之间切换时,它总会跳回到初始位置。所以我从来没有从新职位获得轮换,但始终从程序开始的那一轮获得轮换。
当然可以。您的代码完全按照您要求的方式执行。您没有向我们展示Quaternion::mult(Quaterion&q1,Quaterion&q1)
的作用,但我怀疑它用q1和q2的乘积替换了四元数实例的内容。您需要将当前方向乘以q1 * q2以获得新方向,而不是用q1 * q2替换当前方向。