代码之家  ›  专栏  ›  技术社区  ›  peter.murray.rust

我什么时候需要使用四元数?

  •  19
  • peter.murray.rust  · 技术社区  · 15 年前

    多年来,我一直在执行2D和3D操作,包括图形,从未使用过四元数,所以我对它们没有感觉。我知道它们可以用于欧拉角中困难的某些操作,也可以用于找到将一组坐标(X1,X2…XN,X=(xyz))最佳拟合到另一组坐标(X1',X2'…)所需的旋转。。。XN')。

    6 回复  |  直到 15 年前
        1
  •  17
  •   JoeG    11 年前

    它们的内存占用比旋转矩阵小,并且比矩阵和角度/轴表示更高效。

    也:

    • 在两个四元数之间插值非常容易,这对于平滑相机移动等非常有用。
    • 浮点四元数的单位归一化比矩阵表示法的舍入缺陷更少。
        2
  •  3
  •   Stefano Borini    15 年前

    使用四元数还可以处理万向节锁的问题。当你想要执行任意旋转时,它们更容易使用。

        3
  •  3
  •   Ben    11 年前

    • 四元数(或:方向)之间更容易(且定义良好)的插值:生成的运动围绕单个轴具有恒定的角速度,这通常在美学上更令人愉悦。此过程称为“slerp”,对动画/旋转混合至关重要。此外,四元数插值不会受到框架锁的影响。
    • 它们很容易重新规范化。

    缺点:

        4
  •  2
  •   minorlogic    11 年前

    四元数的优点

    1. 快速乘法
    2. 避免额外的(计算)噪声(缩放、剪切),并表示纯旋转
    3. 一些棘手的操作可用,快速旋转集成,扭曲-摆动分解

    欺骗。

    1. 向量的变换不如3x3矩阵的变换快。
    2. 包含4个标量,但紧凑旋转表示只能使用3个标量。
        5
  •  1
  •   Cecil Has a Name    15 年前

    与矩阵相比,四元数的优势不仅在于计算速度更快,而且主要是因为围绕任意角度连续旋转的矩阵表示最终会产生可怕的浮点舍入误差,不再表示适当的仿射旋转。”恢复“旋转矩阵”在计算上比规范化四元数更昂贵。因此,在纯旋转矩阵上应选择四元数。

        6
  •  0
  •   Ray Hulha    11 年前

    与欧拉角相比,它们更易于组合,避免了万向节锁的问题。