Math 为什么我的四元数在旋转时不断翻转我的对象?

Math 为什么我的四元数在旋转时不断翻转我的对象?,math,language-agnostic,quaternions,Math,Language Agnostic,Quaternions,我使用[wxyz]形式的四元数旋转点。我的初始四元数是标识,[1 0 0] 当我按Q键时,我将当前四元数乘以[0.1 0 1 0]以获得围绕y轴的旋转。这在很大程度上是正确的 但是,如果我继续旋转(只要我按住Q键),我旋转的矩形就会不断地来回翻转,产生一个类似幽灵的图像。它看起来好像是在向前、向后、向前、向后、向前、向后等等 以下是我用来从四元数生成变换矩阵的代码: 1 - 2yy - 2zz 2xy - 2wz 2xz - 2wy 2xy + 2wz 1 - 2xx - 2z

我使用
[wxyz]
形式的四元数旋转点。我的初始四元数是标识,
[1 0 0]

当我按Q键时,我将当前四元数乘以
[0.1 0 1 0]
以获得围绕y轴的旋转。这在很大程度上是正确的

但是,如果我继续旋转(只要我按住Q键),我旋转的矩形就会不断地来回翻转,产生一个类似幽灵的图像。它看起来好像是在向前、向后、向前、向后、向前、向后等等

以下是我用来从四元数生成变换矩阵的代码:

1 - 2yy - 2zz    2xy - 2wz    2xz - 2wy
2xy + 2wz    1 - 2xx - 2zz    2yz - 2wx
2xz - 2wy        2yz + 2wx    1 - 2xx - 2yy
正如我所说,它似乎旋转正确。它只是快速地来回翻转。(如此之快,我无法捕捉到问题的动画GIF。)


有什么问题吗?

我想你的等式在右上角有一个符号,这对你有用吗

1.0 - 2.0yy - 2.0zz,       2.0xy - 2.0zw,       2.0xz + 2.0yw
      2.0xy + 2.0zw, 1.0 - 2.0xx - 2.0zz,       2.0yz - 2.0xw
      2.0xz - 2.0yw,       2.0yz + 2.0xw, 1.0 - 2.0xx - 2.0yy

你知道“0.1”的角度是弧度,不是度吗?是的,它的旋转速度相当快。这会影响旋转量以外的任何东西吗?另外,您是否确保向量部分是标准化的(即单位长度)?您在这个问题中没有太多的细节,所以我只是提到一些可能会有帮助的常见问题。@而且我理解,谢谢。我在乘法后进行了标准化。我的轴旋转计算不正确。还有一个链接指向另一个问题,该问题包含计算它们的准确答案。