2015-05-12 120 views
1

将两个四元数旋转与两个矩阵相同并将其转换为四元数的结果是?组合四元数旋转和旋转矩阵之间的差异

我有一个四元数(q1)和旋转矩阵(m2)作为一个函数的输入(不幸的是不可协商),并想旋转矩阵的初始四元数导致一个新的四元数。我已经尝试了一些公平的方法来做到这一点,并且有些奇怪的结果。

如果我将q1转换成矩阵(m1),计算m2.m1并将结果转换为四元数,我将得到什么是可能的四元数结果。然而,如果我使用完全相同的函数将m2转换为四元数并将它们相乘(两个顺序中,我知道它是不可交换的),我会得到完全不同的东西。我想要实现四元数组合,这样我最终可以从当前四元数的SLERP到结果。

所有功能都来自此:http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm并正在用C++实现和数学测试

回答

1

有3×3旋转矩阵和单位quarternions之间的精确对应关系,直至在quarternion符号改变(符号当对3D矢量执行旋转时是无关紧要的)。

这意味着,给定2个quarternions,q1q2,以及它们相应的基质,m1m2,在载体上v的quarternions的作用是一样的矩阵的上v作用:

q2*(q1*v*(q1^-1))*(q2^-1) = m2*m1*v 

如果您的程序无法使用任意矢量v实现此结果,则可能是某处出现了公式中的错误。

+1

非常感谢Chris。该公式对于测试我的功能实际上非常有帮助。我认为我的问题稍微更基本(根据我的矩阵的使用情况),但这非常有助于我发现这一点。再次感谢。 –