Matrix 组合四元数旋转和旋转矩阵的区别

Matrix 组合四元数旋转和旋转矩阵的区别,matrix,rotation,quaternions,Matrix,Rotation,Quaternions,组合两个四元数旋转的结果是否与两个矩阵的结果相同,然后将其转换为四元数 我有一个四元数(q1)和旋转矩阵(m2)作为函数的输入(不幸的是不可协商),并希望通过矩阵旋转初始四元数,从而生成一个新的四元数。我已经尝试了很多方法,结果有点奇怪 如果我把q1转换成一个矩阵(m1),计算m2.m1并把结果转换成一个四元数,我得到一个可能的四元数结果。然而,如果我使用完全相同的函数将m2转换成四元数,并将它们相乘(在两个顺序中,我知道它是非交换的),我得到的结果会完全不同。我想实现四元数的组合,这样我最终可

组合两个四元数旋转的结果是否与两个矩阵的结果相同,然后将其转换为四元数

我有一个四元数(q1)和旋转矩阵(m2)作为函数的输入(不幸的是不可协商),并希望通过矩阵旋转初始四元数,从而生成一个新的四元数。我已经尝试了很多方法,结果有点奇怪

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


所有函数都来自这里:在C++和Mathematica中实现,以测试

< P> > 3x3旋转矩阵与单位四分之一之间的精确对应,直到四分之一的符号变化(当在3D向量上进行旋转时,符号是无关的)。 这意味着给定两个四分位数,
q1
q2
,以及它们相应的矩阵,
m1
m2
,四分位数对向量
v
的作用与矩阵对
v
的作用相同:

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

如果您的程序无法使用任意向量
v
获得此结果,则公式中可能存在错误

非常感谢你,克里斯。这个等式实际上对测试我的函数很有帮助。我认为我的问题稍微更基本一些(具体到矩阵的惯用手),但这非常有助于我发现这一点。再次感谢。