组合两个四元数旋转的结果是否与两个矩阵相同,然后将其转换为四元数?
我有一个四元数(q1)和旋转矩阵(m2)作为函数的输入(遗憾的是不可协商),并且希望通过矩阵旋转初始四元数,从而产生新的四元数。我已经尝试了很多方法来做到这一点并且有一些奇怪的结果。
如果我将q1转换为矩阵(m1),计算m2.m1并将结果转换为四元数我得到可能的四元数结果。但是,如果我使用完全相同的函数将m2转换为四元数并将它们相乘(在两个顺序中,我知道它是非交换的)我会得到完全不同的东西。我想实现四元数组合,这样我最终可以从当前的四元数SLERP到结果。
所有函数都来自这里:http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm并且正在用c ++和mathematica实现测试
答案 0 :(得分:1)
3x3旋转矩阵与单位四分之一之间存在精确对应关系,直到四分之一符号发生变化(符号在3D矢量上执行旋转时无关紧要)。
这意味着,给定两个四分之一,q1
,q2
及其相应的矩阵m1
,m2
,四分之一的矢量{{1} }}与v
上的矩阵的动作相同:
v
如果你的程序没有使用任意向量q2*(q1*v*(q1^-1))*(q2^-1) = m2*m1*v
来实现这个结果,那么你的公式可能会出错。