21

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

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

4

6 回答 6

17

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

还:

  • 在两个四元数之间进行插值非常容易,这对于平滑的相机移动等很有用。
  • 浮点四元数的单位归一化比矩阵表示的舍入缺陷更少。
于 2009-12-03T16:08:03.963 回答
4

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

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

缺点:

  • 主要缺点是它们需要更多的数学运算,并且不如欧拉/卡丹尼角直观。
  • 与仿射变换矩阵相比,四元数只包含旋转,没有平移和缩放。
于 2013-08-02T11:46:41.880 回答
3

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

于 2009-12-04T16:54:38.083 回答
2

四元数的优点

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

缺点。

  1. 向量的转换不如 3x3 矩阵那么快。
  2. 包含 4 个标量,但紧凑的旋转表示只能使用 3 个。
于 2014-03-12T10:27:17.050 回答
1

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

于 2009-12-03T16:18:56.907 回答
0

与欧拉角相比,它们更易于组合并且避免了云台锁定的问题。

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

于 2014-03-11T11:06:22.347 回答