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

Difference Between Combining Quaternion Rotations and Rotation Matrices

两个四元数的旋转与两个矩阵的旋转相加再转成四元数的结果是不是?

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

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

所有函数都来自这里:http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm 并且正在用 c++ 和 mathematica 实现以进行测试

3x3 旋转矩阵与单位四分之一完全对应,直到四分之一符号发生变化(在对 3D 向量执行旋转时,符号无关紧要)。

这意味着给定两个四元数 q1q2 及其对应的矩阵 m1m2,四元数对向量的作用 v 与矩阵对 v:

的作用相同
q2*(q1*v*(q1^-1))*(q2^-1) = m2*m1*v

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