首页 > 解决方案 > 四元数除法不等于乘以逆(q1 / q2!= q1 * q2^-1)?

问题描述

从几个文档,如[1][2],我了解到对四元数的除法运算相当于乘以它的逆。也就是说,对于两个四元数q1q2,我们有

但是,当我在 MATLAB 中验证这一点时,会给出不同的结果(也可以通过进一步将它们转换为旋转矩阵来验证quat2rotm)。请参见下面的代码:

q1 = [1 0 1 0];
q2 = [1 0.5 0.5 0.75];
q1 = quatnormalize(q1);  % this seems doesn't matter
q2 = quatnormalize(q2);  % this seems doesn't matter

res_1 = quatdivide(q1, q2)               % this will be [0.7385  0.1231 0.2462 -0.6155]
res_2 = quatmultiply(q1, quatinv(q2))    % this will be [0.7385 -0.6155 0.2462 -0.1231]

任何提示表示赞赏。

标签: matlabmultiplicationdivisionquaternionsinverse

解决方案


请注意,四元数除法会导致模棱两可的符号。

您的第二个参考中阅读它指出

莱姆

要对此进行扩展,请查看两种解释的结果:

fgi1

它们的区别在于向量部分中叉积的符号。

我怀疑quatdivide()使用第二个约定,例如

quatdivide(q1,q2) = quatmultiply(quatinverse(q2),q1)

推荐阅读