gpt4 book ai didi

math - 四元数和数值稳定性

转载 作者:行者123 更新时间:2023-12-04 06:19:05 27 4
gpt4 key购买 nike

我正在学习单位四元数以及如何使用它们来表示和组合旋转。维基百科说它们在数值上比矩阵表示更稳定,但是没有给出引用。谁能向我解释(最好是用一些数学推理)为什么用单位四元数来处理旋转(例如对于OpenGL应用程序)而不是旋转矩阵在数值上更稳定?仅仅是因为避免了万向节锁定?

最佳答案

维基百科的文章有偏见。 来自

  • http://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation#Advantages_of_quaternions

  • 截至2014年4月18日:

    When composing several rotations on a computer, rounding errors necessarily accumulate. A quaternion that’s slightly off still represents a rotation after being normalised: a matrix that’s slightly off may not be orthogonal anymore and is harder to convert back to a proper orthogonal matrix.



    这是有偏见的。 重新正交化旋转矩阵并不困难,例如,请参见:
  • Eigen - Re-orthogonalization of Rotation Matrix

  • 和四元数也必须重新规范化:“四元数仍然略微偏离
    表示归一化后的旋转”。四元数在这里没有明显的优势。

    我将尝试在Wikipedia中修复该问题。这种偏见也出现在其他地方的W​​ikipedia中... :(

    回答您的问题。

    更新:我忘了提:云台锁在这里不起作用;四元数和旋转矩阵都不会因此受到影响。

    一些注意事项。 尽管四元数比旋转矩阵更紧凑,但使用四元数会导致整个应用程序中的数值计算量减少,这并不是一个明确的方法,请参阅:
  • http://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation#Performance_comparisons

  • 仅作记录:旋转矩阵已在资源受限的微 Controller 上成功地用于跟踪方向,请参见William Premerlani和Paul Bizard的 Direction Cosine Matrix IMU: Theory。我还具有在微 Controller (MSP430)上跟踪方位的第一手经验,并且我仅次于旋转矩阵对于跟踪方位而言是快速且稳定的。

    我的观点是:当用于跟踪方向时,旋转矩阵和四元数之间没有显着差异。

    如果您已经有一个使用四元数表示旋转的库,请坚持使用四元数;否则,请执行以下步骤。如果您的库已经使用旋转矩阵,则使用旋转矩阵。即使一个表示形式可以为您节省一些浮点运算,更改应用程序/库以使用另一种表示形式也没有任何意义。即使在资源有限的微 Controller 上,节省下来的钱也微不足道。

    我看到的四元数的唯一真正优势是四元数可以用于插值。旋转矩阵和欧拉角都不能做到这一点。
  • Interpolating between rotation matrices
  • 关于math - 四元数和数值稳定性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23146147/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com