44

嗨“四元数”和“欧拉”方法的优缺点
是什么 - 哪个更快? - 哪一个需要较少的计算工作量? - 哪个更准确,(舍入误差)?


4

6 回答 6

33

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

于 2011-05-14T14:47:10.583 回答
14

四元数避免万向节锁。更多在这里

于 2011-05-14T14:46:31.497 回答
9

从 Christian Rau 的回答中扩展一点:

欧拉角的规范存在歧义:哪个角适用于哪个轴?使用约定(yaw、pitch、roll)的代码不会与假设(roll、pitch、yaw)的代码互操作,而且从代码来看可能并不明显,正在使用哪种解释。

四元数不会受到这种歧义的影响,因为它们只代表一个单一的旋转,具有明确的轴。

于 2011-05-14T16:16:48.343 回答
4

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

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

于 2020-05-22T10:47:23.907 回答
1

欧拉角更快。

欧拉角需要较少的计算工作。

四元数绝对更准确。

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

好吧,为了便于理解四元数。让我们将四个分量一分为二:一个角度和连接到轴原点 P 的 x,y,z 点。 (x,y,z)-P 线表示一个新轴。角度表示轴与实际方向之间的角度。要可视化这个答案,您需要查看这个 5 分钟的视频。 https://eater.net/quaternions/video/intro

于 2020-11-13T14:09:55.430 回答
1

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

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

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

如果你有一个真正的物理万向节,并且给你一个代表该万向节方向的四元数,那么你绝对无法提取万向节用于实现该方向的原始偏航、滚动或俯仰,除非万向节在某处的运动范围内受到限制.

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

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

于 2021-06-13T15:33:03.260 回答