c++ - 四元数3轴旋转

标签 c++ rotation directx quaternions

这里有一点帮助。我从硬件陀螺仪接收到每个轴 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/

相关文章:

c++ - 如何将 XML 节点转换为 C++ 结构?

c++ - 指向 int 的指针的引用输出错误

c++ - 警告 : wint to poiter cast

ios - 如何将图像旋转 360 度两次?

c++ - 顶点颜色无法正常工作

c++ - 在 DirectX9 中旋转单个对象

c# - 使用 DX11 渲染文本

c++ - 数据类型与模板参数不同的模板对象

c++ - OpenGL 围绕点移动相机

python - Pygame-如何朝玩家 Sprite 的方向射击?