You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确计算两个四元数间满足一致性的相对旋转差值

立方体旋转示意图

核心原因

你当前公式计算的是世界坐标系下的绝对旋转差,而你需要的是物体局部坐标系下的相对旋转,二者四元数乘法顺序有本质区别。

Quaternion q = B * Inverse(A)的计算逻辑是:先将A从当前姿态旋转回世界坐标系原点对齐状态,再旋转到B的姿态,整个过程的旋转参考轴为固定的世界坐标轴。你的两个测试场景中,虽然立方体B均绕自身Z轴旋转90度,但两个场景下立方体自身Z轴在世界坐标系中的朝向完全不同,计算得到的世界系旋转差自然不相等。

正确实现

要得到与A的全局姿态无关、仅反映A到B局部相对旋转的结果,调换乘法顺序即可:

Quaternion q = Inverse(A) * B

该公式的物理意义是:先将全局旋转变换到A的局部坐标系下,再计算A到B的旋转差。只要B是A绕自身局部坐标轴旋转固定角度得到的,无论A在世界空间中的初始朝向如何,计算得到的q都会完全一致。代入你示意图中的两组测试数据,输出结果都会是绕局部Z轴旋转90度对应的标准四元数,符合预期。

补充说明

  • 上述乘法顺序适配绝大多数图形学领域常用的列主序四元数实现(包括Unity、Unreal、Three.js等引擎/库的内置接口);若使用少数行主序数学库,需对应调换乘法顺序,核心逻辑不变:计算局部相对旋转时,必须先将两个姿态转换到参考物体(A)的局部空间再做差,不能直接在世界空间做差。
  • 示意图中标注的立方体局部朝向箭头不影响该计算逻辑,只要四元数旋向定义与所用坐标系手性匹配,计算结果就是稳定的。

内容的提问来源于stack exchange,提问作者Blubber

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 05:45:42