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

时间:2009-12-03 14:44:45

标签: quaternions

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

是否有四元数必不可少的地方?是否存在使解决方案更优雅或更高效的地方?

6 个答案:

答案 0 :(得分:17)

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

此外:

  • 在两个四元数之间进行插值非常容易,这对于平稳的相机移动等非常有用。
  • 浮点四元数的单位归一化比矩阵表示具有更少的舍入缺陷。

答案 1 :(得分:3)

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

答案 2 :(得分:3)

四元数比欧拉角有许多优点,通常更适合3D旋转:

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

缺点:

  • 主要缺点是它们需要更多的数学运算并且不如Euler / Cardanic角度更直观。
  • 与仿射变换矩阵相比,四元数只包含旋转,没有平移和缩放。

答案 3 :(得分:2)

四元数的优点

  1. 快速乘法
  2. 快速到/从矩阵转换
  3. 避免额外(来自计算)噪音(比例,剪切),并表示纯旋转
  4. 简单旋转插值,在自定义情况下可以使用实时动画进行线性插值。
  5. 可用的一些棘手的操作,快速旋转积分,扭曲摆动分解
  6. 缺点。

    1. 矢量的变换不像3x3矩阵那么快。
    2. 包含4个标量,但紧凑的旋转表示只能使用3个。

答案 4 :(得分:1)

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

答案 5 :(得分:0)

与欧拉角相比,它们更容易构成并避免万向节锁定的问题。

与旋转矩阵相比,它们在数值上更稳定,表示(4个数字)更紧凑。