四元数旋转不太对

Rotation with Quaternion not quite right

本文关键字:旋转 四元数      更新时间:2023-10-16

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

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

当然有。你的代码正在做你让它做的事情。您没有向我们展示Quaternion::mult(Quaterion&q1,Quaterion&q1)的作用,但我怀疑它用q1和q2的乘积替换了四元数实例的内容。您需要将当前方向乘以q1*q2来获得新的方向,而不是将当前方向替换为q1*q2。