我在食人魔工作,但这是一个普遍的四元数问题。
我有一个对象,我最初对其应用旋转四元数 Q1。后来,我想让它就像我最初用不同的四元数 Q2 旋转对象一样。
如何计算四元数,该四元数将采用已经由 Q1 旋转的对象,并将其对齐,就好像我所做的只是将 Q2 应用于初始/默认方向一样?我正在查看(s)lerping,但我不确定这是否仅在方向而不是旋转上有效?
我在食人魔工作,但这是一个普遍的四元数问题。
我有一个对象,我最初对其应用旋转四元数 Q1。后来,我想让它就像我最初用不同的四元数 Q2 旋转对象一样。
如何计算四元数,该四元数将采用已经由 Q1 旋转的对象,并将其对齐,就好像我所做的只是将 Q2 应用于初始/默认方向一样?我正在查看(s)lerping,但我不确定这是否仅在方向而不是旋转上有效?
听起来你想要 Q1 乘以 Q2 的倒数。通过 Q1 的倒数进行变换会将对象旋转回其原始框架(如您所说的初始方向),然后通过 Q2 进行变换会将其旋转到新的方向。
请注意,四元数的标准定义以从右到左的乘法顺序应用变换,因此您需要将其计算为 Q = Q2*Q1^{-1}。
这样想
QInitial * QTransition = QFinal
通过将两边乘以 QInitial^{-1}(^{-1} 是四元数共轭)来求解 QTransition
QTransition = QFinal * QInitial^{-1}
就是这么简单。