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

为何四元数-向量乘法会得到两种不同计算结果?

问题原因分析

你的两次输出差异,核心是四元数乘法顺序颠倒,对应两种完全不同的旋转操作:

正确的旋转逻辑

四元数旋转向量的标准公式是 v' = q * v * q⁻¹(当q是单位四元数时,q的逆等于共轭q_conj)。你提供的qv_mult函数实现的正是这个逻辑:

def qv_mult(q1, v1):
    return q_mult(q_mult(q1, v1), q_conjugate(q1))[1:]

用固定的q和v计算,结果应为你给出的Output 2,这是符合预期的旋转结果,手动验算也能对应上。

产生错误输出的原因

你给出的Output 1是q_conj * v * q的计算结果,这是逆旋转操作(把向量往相反方向旋转)。出现这个结果,说明你在某次运行时,不小心修改了qv_mult里的乘法顺序,比如误写成:

def qv_mult(q1, v1):
    return q_mult(q_conjugate(q1), q_mult(v1, q1))[1:]

或者其他颠倒乘法顺序的写法。

额外验证

你的q模长约为1,符合单位四元数要求,因此用共轭代替逆是正确的,不会出现缩放问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 18:35:36