【问题标题】:"Distance" (or angular magnitude) between two quaternions?两个四元数之间的“距离”(或角度大小)?
【发布时间】:2014-04-24 06:00:03
【问题描述】:

我想找到两个四元数之间的“距离”。 “距离”是指一个浮点数或整数,而不是另一个四元数(这就是区别,即inverse(q1)*q2)。我想您可以将我想要的称为“角幅度”。

物理对象从原始角度旋转得越远,我就需要对它施加更大的扭矩。

我不了解四元数所涉及的数学,因此基于代码的示例将是最有帮助的。我查看了其他几个问题,但我认为没有任何答案可以回答我的问题,或者至少没有以我理解的方式回答。

【问题讨论】:

    标签: rotation distance quaternions


    【解决方案1】:

    求差四元数 qd = inverse(q1)*q2)。

    比通过 angle = 2 * atan2(qd.vec().length(), qd.w()) 找到 q1 和 q2 之间的角度 // 注意:有符号

    这里的“角度”,是从 q1 到 q2 的最短圆弧的旋转角度。

    【讨论】:

    • 听起来正是我需要的。我会尽快测试并接受你的答案:)
    • 你能解释一下你是怎么得到这个等式的吗?
    • .vec() 是做什么的?
    • vec() 返回四元数的向量部分 (x,y,z)
    【解决方案2】:

    您也可以使用pyquaternion 中的这个库函数。 Quaternion.absolute_distance(q0, q1)

    【讨论】:

      猜你喜欢
      • 2017-05-22
      • 2011-03-03
      • 2019-05-05
      • 2019-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-16
      相关资源
      最近更新 更多