四元数与欧拉角

mrb*_*rbm 30 math graphics algebra

嗨" Quaternions "和" Euler Angles "方法
优点缺点是什么 - 哪一个更快? - 哪一个需要更少的计算努力? - 哪一个更准确,(圆整错误)?


Chr*_*ica 28

欧拉角更易于理解,也有利于将旋转分解为单独的自由度(对于运动关节等),但具有模糊性和万向节锁定等缺点.在实践中,我更喜欢四元数,因为它们更容易计算(对于计算机而不是人类)并且更有效.当通过欧拉角旋转时,你必须进行三次旋转并将它们相乘,而四元数只有一次旋转,因为它已经编码了sin和cos,从四元数到矩阵的转换非常有效.


Jim*_*wis 8

从Christian Rau的答案中略微提出一点:

欧拉角的规范存在模糊性:哪个角度适用于哪个轴?使用约定的代码(偏航,俯仰,滚动)将不会与假设(滚动,俯仰,偏航)的代码互操作,并且从查看代码时可能不明显,使用哪种解释.

四元数不会受到这种模糊性的影响,因为它们只表示单个旋转,具有明确定义的轴.

  • 我还意味着模糊性,不同角度三元组(单一约定)可以指代相同的旋转. (4认同)
  • 这不一定是极端的万向节锁壳,每次旋转都可以由多个欧拉角三角表示,即使在相同的惯例中也是如此. (2认同)

Fax*_*Fax 7

正如其他答案中指出的那样,四元数比欧拉角有很多优点。然而,欧拉角确实比四元数有一个优势:

\n\n

欧拉角可以告诉您旋转的方向和大小。当您将欧拉角转换为四元数时,该信息会丢失。例如,(-270\xc2\xb0, 0, 0) 和 (1170\xc2\xb0, 0, 0) 的欧拉旋转产生相同的四元数 (-0.7071, 0, 0, -0.7071)。

\n

  • 是的,基本上没有人知道这一点。在内部,人们应该始终将方向值存储为欧拉角,以防止这种信息丢失。只是暂时将该值转换为四元数以进行其他计算。如果您需要某个方向的偏航幅度,而您只将四元数存储在内存中,请放弃……该信息将永远丢失。这是一个明确的好处。 (2认同)