在我的 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);
希望你明白我的意思。
But it always jumps back to the initial position when I switch between x- and y-key. So I never get a rotation from the new position, but always from the one with which the programm started.
当然可以。您的代码完全按照您的要求执行。您没有向我们展示 Quaternion::mult(Quaterion&q1,Quaterion&q1)
的作用,但我怀疑它用 q1 和 q2 的乘积替换了四元数实例的内容。您需要将当前方向乘以 q1*q2 以获得新方向,而不是将当前方向替换为 q1*q2。
我是一名优秀的程序员,十分优秀!