四元数与欧拉角
嗨
“四元数”和“欧拉角”方法的优点和缺点
- 哪一个更快?
- 哪一个需要更少的计算工作?
- 哪一个更准确(在舍入误差中)?
Hi
What is the pros and cons of "Quaternions" and "Euler Angles" Method
- Which one is faster?
- Which one need less Computational Effort?
- which one is more accurate, (in round off error)?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
发布评论
评论(6)
欧拉角比四元数更好。您应该始终将欧拉角存储在内存中,并仅使用四元数进行计算。没有人知道这一点,但我说的是绝对正确的。如果您潜伏在周围,请知道这很重要。听我说完。
原因是因为您总是可以轻松地从欧拉角导出四元数。转换是微不足道的。然而,从四元数到欧拉角的转换从根本上被破坏了。每个四元数都有两个可能的欧拉角,您无法知道您的四元数来自这两种可能性中的哪一种。
对于虚拟世界和 3D 游戏,您始终可以只使用四元数。这是因为您的计算机可以仅在某个方向上绘制物体的图片,而无需实际偏航和俯仰实际的物理万向节来实现该方向。然而,对于机器人和其他现实世界的应用程序来说,转换为四元数时确实会丢失信息。
如果您有一个真实的物理万向节,并且给定了一个代表该万向节方向的四元数,那么您绝对无法提取用于实现该方向的万向节原始偏航、滚动或俯仰,除非万向节在某处的运动范围受到限制。
记住这一点。如果您处于机器人技术或某些机械设置中,请将方向值保存为原始欧拉角。仅暂时转换为四元数仅用于计算。
一旦转换为四元数,基本上就不再返回欧拉了。因此,不要使该行程永久化,而是将所有信息存储为欧拉角。
欧拉角更快。
欧拉角需要较少的计算工作。
四元数绝对更准确。
在欧拉角中发现了一个称为万向节锁的问题。当两个轴对齐时就会发生这种情况。
另一方面,四元数更灵活,并且解决了这个问题,因为它更面向轴。然而,理解起来却很复杂。
好吧,为了让大家更容易理解四元数。让我们将四个分量一分为二:一个角度和连接到轴原点(即 P)的 x、y、z 点。
(x,y,z)-P 线代表新轴。
该角度表示轴与实际方向之间的角度。
为了直观地看到这个答案,您需要观看这个 5 分钟的视频。
https://eater.net/quaternions/video/intro
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
欧拉角更容易被人类理解,也有利于将旋转分解为单独的自由度(对于运动关节等),但具有模糊性和万向节锁定等缺点。在实践中,我更喜欢四元数,因为它们更容易计算(对于计算机,而不是人类)并且效率更高。当按欧拉角旋转时,您必须进行三次旋转并将它们相乘,而四元数只有一次旋转,并且由于它已经对 sin 和 cos 进行了编码,因此从四元数到矩阵的转换非常有效。
Euler angles are more human understandable and also good for decomposing rotations into individual degrees of freedom (for kinematic joints and the like) but have disadvantages like ambiguity and gimbal lock. In practice I would prefer quaternions, as they are easier to compute with (for the computer, not for humans) and more efficient. You have to make three rotations and multiply them together when rotating by Euler angles, whereas a Quaternion is only one rotation and as it already encodes the sin and cos, the conversion from quaternion to matrix is quite efficient.