免责声明:我是专业的游戏程序员,大多数时候都使用四元数,但对我而言它们接近于魔咒。我在数学方面相对在家,但是虚构的数字总是让我感到困惑。我倾向于将quats视为有用,并且最终会多次反转乘法。我试着像在有限成功的矩阵中那样对它们进行推理。
无论如何....
以下是困扰我的事情。当我想围绕对象的局部轴旋转对象时,我将其旋转与代表要应用的旋转的四元数相乘。因此,它是局部空间中的旋转。
现在,如果要围绕世界空间中的轴旋转,我的推理将是:将世界空间中的旋转作为四元数。用四元数乘以对象旋转的逆数。这将使我的世界在局部空间中旋转。将我的旋转倍数与此新的四元数相乘。即:newRot = oldRot *(反oldRot * worldRot)
但是,我需要做的是newRot = oldRot *(逆向oldRot * worldRot)* oldRot。
为什么在与反quat相乘之后为什么还需要在应用它之前与自己的quat相乘?我知道一定有一个完美的正当理由,但我无法说出自己的出路,这让我感到沮丧。我尝试了各种常见问题解答,但大多数问题都涉及数学,因此我不太清楚。
有人可以像我5岁一样向我解释这一点吗?
是不是有点像矩阵平移和旋转(即,您需要将对象移至中心,然后旋转,然后再向后旋转,当您想要围绕其自身旋转项目时:Minv_transl * Mrot * Mtransl)
—
Valmond
I try to reason about them like I would with matrices
-那么您就走对了。如果您了解如何使用矩阵绕对象轴和世界轴旋转,则可以使用四元数来做同样的事情。矩阵和四元数的乘法顺序相同。