四元数与欧拉角

时间:2011-05-14 14:39:50

标签: math graphics algebra

您好
四元数和“ Euler Angles ”方法的专业缺点是什么方法
- 哪一个更快
- 哪一个需要更少计算努力
- 哪一个准确,(舍入错误)?

6 个答案:

答案 0 :(得分:25)

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

答案 1 :(得分:11)

Quaternions avoid Gimbal lock。更多here

答案 2 :(得分:7)

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

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

四元数不会受到这种模糊性的影响,因为它们只代表一次旋转,具有明确定义的轴。

答案 3 :(得分:2)

四元数相对于欧拉角具有许多优势,如其他答案所指出。但是,欧拉角确实比四元数有一个优势:

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

答案 4 :(得分:0)

欧拉角更快。

欧拉角所需的计算量更少。

四元数绝对更准确。

在欧拉角中发现了一个称为万向节锁的问题。当两个轴对齐时会发生这种情况。 另一方面,四元数更灵活并解决了这个问题,因为它更面向轴。但是,它很难理解。

为了使四元数更容易理解。让我们将四个分量一分为二:一个角度和一个与轴的原点相连的x,y,z点,例如P。 (x,y,z)-P线代表新轴。 角度表示轴与实际方向之间的角度。 要形象地回答这个问题,您需要查看5分钟的视频。 https://eater.net/quaternions/video/intro

答案 5 :(得分:-1)

欧拉角优于四元数。您应该始终将欧拉角存储在内存中,并且仅将四元数用于计算。没有人知道这一点,但我说的是绝对正确的。如果您潜伏在附近,请知道这很重要。听我说。

原因是因为您总是可以轻松地从欧拉角推导出四元数。转换是微不足道的。然而,从四元数到欧拉角的转换从根本上被打破了。每个四元数都有两种可能的欧拉角,而您无法知道您的四元数来自这两种可能性中的哪一种。

对于虚拟世界和 3D 游戏,您始终可以只使用四元数。这是因为您的计算机可以在某个方向绘制对象的图片,而无需实际偏航和俯仰实际的物理万向节来实现该方向。然而,对于机器人和其他现实世界的应用程序,在转换为四元数时会丢失真正的信息。

如果你有一个真实的物理云台,并且你得到一个代表该云台方向的四元数,你绝对不能提取用于实现该方向的云台的原始偏航、滚动或俯仰,除非云台在其范围内受到限制某处的运动。

记住这一点。如果您从事机器人或某些机械设置,请将方向值保存为原始欧拉角。仅临时转换为四元数仅用于计算。

一旦您转换为四元数,基本上就不会返回到 Euler。所以不要让这次旅行永久化,将您的所有信息存储为欧拉角。