这里有一点帮助。我从硬件陀螺仪接收到每个轴 1 次旋转,因此 3 个轴 (x,y,z) 总共旋转 3 次。当我使用基于矩阵的旋转时,我可能会因为乘法顺序而得到奇怪的旋转(RotX * RotY * RotZ <> RotY * RotX * RotZ),我也尝试过 MatrixYawPitchRoll 但出现了相同的效果。因此我得出结论,我应该使用四元数,但尽我所能,我必须创建 3 个四元数,每次旋转一个,但是当我将它们与乘法结合起来时,我得到与基于矩阵的旋转相同的效果......所以有人可以告诉我吗?我如何正确使用 3 次旋转来创建和组合四元数,而不出现之前的乘法效果?
附注D3DXQuaternionRotationYawPitchRoll 仍然受到与基于矩阵的旋转相同的影响。
最佳答案
四元数并不是消除旋转问题的神奇药膏。所有四元数都是表示特定方向和进行方向变换的廉价方式。
你的问题是你没有将你的方向表示为四元数;你将它表示为 3 个角度。正是这种表现形式导致了轮换问题。
你需要停止使用角度。将对象的方向表示为四元数。如果您想调整方向,请从调整角度/轴创建一个四元数,然后将其乘以对象的方向。重新标准化四元数就完成了。
关于c++ - 四元数3轴旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15444687/