1

继我之前的问题之后,我现在已经设法用四元数旋转我的对象,但仍然存在一个小问题,我不知道如何解决它。使用下面的代码,我的对象围绕 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);

我希望你明白我的意思。

4

1 回答 1

1

但是当我在 x 键和 y 键之间切换时,它总是跳回初始位置。所以我从来没有从新位置得到轮换,但总是从程序开始的那个位置轮换。

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

于 2011-10-29T16:34:10.910 回答