【问题标题】:'Difference' between two quaternions两个四元数之间的“差异”
【发布时间】:2010-12-17 20:35:26
【问题描述】:

我在 Ogre 工作,但这是一个一般的四元数问题。

我有一个对象,我最初对其应用旋转四元数 Q1。后来,我想让它就像我最初用不同的四元数 Q2 旋转对象一样。

如何计算四元数,该四元数将采用已经旋转 Q1 的对象,并对齐它,就好像我所做的只是将 Q2 应用于初始/默认方向一样?我正在查看 (s)lerping,但我不确定这是否仅在 orientations 而不是 rotations 上有效?

【问题讨论】:

  • 如何将一些答案标记为正确?还要看看数学溢出......(Quaterions让我完全发疯,顺便说一句,我无法回答)

标签: math ogre3d quaternions


【解决方案1】:

听起来您想要 Q1 乘以 Q2 的倒数。通过 Q1 的倒数进行变换会将对象旋转回其原始框架(如您所说的初始方向),然后通过 Q2 进行变换会将其旋转到新的方向。

请注意,四元数的标准定义以从右到左的乘法顺序应用变换,因此您需要将其计算为 Q = Q2*Q1^{-1}。

【讨论】:

    【解决方案2】:

    这样想

    QInitial * QTransition = QFinal
    

    通过将两边乘以 QInitial^{-1}(^{-1} 是四元数共轭)来求解 QTransition

    QTransition = QFinal * QInitial^{-1}
    

    就是这么简单。

    • 注意@Dan Park - 如果您不同意我的数学,请回复我的答案,不要更改数学。据我所知,是的。

    【讨论】:

    • 这是一个老话题,但为什么是对的?我可以通过代码验证它,但我相信矩阵旋转的工作方式相反。例如。如果我想删除 MInitia,我会从左边乘以 MInitial^-1,因为 MInitial^-1*MInitial = Midentity。
    • 四元数“乘法”并不像矩阵乘法那样落后。我在网上找不到可靠的解释,但我知道它在 Kuipers 的“四元数和旋转序列”中。 (amazon.com/…) - 我并不是说你应该去买那本书来证明给自己看(尽管它是一本好书),但我记得在那里学习了矩阵和四元数运算命令之间的区别。跨度>
    • 感谢您的回复。如果我再次陷入困境,我会去买这本书,但现在我很高兴它有效。 :)
    • 这里的第一行不正确。它应该是 QTransition * QInitial = QFinal。首先应用乘法链右侧的四元数。四元数乘法是非交流的,所以你的第二行没有跟随。
    • @Scott 我不确定我是否跟随。我绝对同意四元数乘法不是可交换的,但是四元数(与矩阵不同)从左到右工作,而不是从右到左工作。您能否详细说明您的担忧?这个答案在 11 年里相对没有受到挑战,有 24 票赞成,它与 Jim 接受的答案相匹配。另外,考虑到可能只有 50 个人真正关心四元数,我认为 24​​ 票是相当不错的 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-27
    • 1970-01-01
    • 2020-02-09
    • 2012-05-05
    • 2019-04-26
    • 2016-07-21
    • 1970-01-01
    相关资源
    最近更新 更多