您好
四元数和“ Euler Angles ”方法的专业和缺点是什么方法
- 哪一个更快?
- 哪一个需要更少计算努力?
- 哪一个准确,(舍入错误)?
答案 0 :(得分:25)
答案 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。所以不要让这次旅行永久化,将您的所有信息存储为欧拉角。