Math ';差异';在两个四元数之间

Math ';差异';在两个四元数之间,math,ogre3d,quaternions,Math,Ogre3d,Quaternions,我在食人魔工作,但这是一个一般的四元数问题 我有一个对象,我首先对其应用旋转四元数Q1。稍后,我想让它看起来好像我最初将对象旋转了一个不同的四元数Q2 如何计算四元数,该四元数将获取已旋转Q1的对象,并将其对齐,就好像我所做的只是将Q2应用于初始/默认方向一样?我在看lerping,但我不确定这是否只适用于方向而不是旋转?听起来你想要的是Q1乘以Q2的倒数。按Q1的倒数进行变换会将对象旋转回其原始帧(如您所说的初始方向),然后按Q2进行变换会将对象旋转回其新方向 请注意,四元数的标准定义以从右到

我在食人魔工作,但这是一个一般的四元数问题

我有一个对象,我首先对其应用旋转四元数Q1。稍后,我想让它看起来好像我最初将对象旋转了一个不同的四元数Q2


如何计算四元数,该四元数将获取已旋转Q1的对象,并将其对齐,就好像我所做的只是将Q2应用于初始/默认方向一样?我在看lerping,但我不确定这是否只适用于方向而不是旋转?

听起来你想要的是Q1乘以Q2的倒数。按Q1的倒数进行变换会将对象旋转回其原始帧(如您所说的初始方向),然后按Q2进行变换会将对象旋转回其新方向

请注意,四元数的标准定义以从右到左的乘法顺序应用变换,因此您需要将其计算为Q=Q2*Q1^{-1}。

这样想

QInitial * QTransition = QFinal
通过将两边乘以QInitial ^{-1}(^{-1}是四元数共轭)来求解Q变换

就这么简单

  • 请注意@Dan Park-如果你不同意我的数学,请对我的答案发表回复,不要更改数学。据我所知,这是对的

将一些答案标记为正确如何?再看看数学溢出。。。(顺便说一句,我无法回答)这是一个老话题,但为什么这是正确的?我可以通过代码验证它,但我相信矩阵旋转的工作方式是相反的。例如,如果我想删除MInitia,我会从左边用MInitial^-1乘以两边,因为MInitial^-1*MInitial=Midentity。四元数“乘法”不像矩阵乘法那样向后。我在网上找不到可靠的解释,但我知道这是在柯伊伯的“四元数和旋转序列”中。()-我不是说你应该去买那本书来证明你自己(尽管这是一本好书),但我记得在那里我学到了矩阵和四元数运算顺序之间的区别。谢谢你的回答。如果我再次陷入困境,我会去买这本书,但现在我很高兴它能起作用
QTransition = QFinal * QInitial^{-1}