两个四元数之间的“差异”

时间:2009-11-18 12:25:34

标签: math ogre3d quaternions

我在Ogre工作,但这是一个普遍的四元数问题。

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

如何计算将已经旋转了Q1的对象的四元数,并将其对齐,就像我所做的一样是将Q2应用于初始/默认方向?我正在寻找lerping,但我不确定这是否只对 orientationations 而不是 rotations 有效?

2 个答案:

答案 0 :(得分:31)

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

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

答案 1 :(得分:22)

以这种方式思考

QInitial * QTransition = QFinal

通过将两边乘以QInitial ^ { - 1}(^ { - 1}为四元数共轭)来求解QTransition

QTransition = QFinal * QInitial^{-1}

就这么简单。

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