gpt4 book ai didi

language-agnostic - 是否有将四元数旋转转换为欧拉角旋转的算法?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:52:02 25 4
gpt4 key购买 nike

是否存在将旋转的四元数表示转换为欧拉角表示的现有算法?欧拉表示的旋转顺序是已知的,可以是六个排列中的任何一个(即 xyz、xzy、yxz、yzx、zxy、zyx)。我见过固定旋转顺序(通常是 NASA 航向、坡度、滚动约定)的算法,但没有看到任意旋转顺序的算法。

此外,由于单个方向有多个欧拉角表示,因此这个结果会产生歧义。这是可以接受的(因为方向仍然有效,它可能不是用户期望看到的方向),但是如果有一种算法可以限制旋转(即自由度的数量和每个自由度的限制)考虑在内,并在给定这些限制的情况下产生“最明智的”欧拉表示。

我感觉这个问题(或类似问题)可能存在于 IK 或刚体动力学域中。


澄清一下 - 我知道如何将四元数转换为所谓的“Tait-Bryan” ' 代表 - 我称之为“美国宇航局”公约。这是 zxy 的旋转顺序(假设“Z”轴向上)。我需要一个适用于所有 旋转顺序的算法。

然后,可能的解决方案是采用 zxy 顺序转换并从中导出其他旋转顺序的五个其他转换。我想我希望有一个更“全面”的解决方案。无论如何,令我惊讶的是我无法在那里找到现有的解决方案。

此外,这也许应该完全是一个单独的问题,任何转换(当然假设已知旋转顺序)都会选择一个欧拉表示,但实际上有很多。例如,给定 yxz 的旋转顺序,两个表示 (0,0,180) 和 (180,180,0) 是等价的(并且会产生相同的四元数)。有没有办法通过限制自由度来约束解决方案?就像您在 IK 和刚体动力学方面所做的那样?即在上面的示例中,如果 Z 轴只有一个自由度,则可以忽略第二个表示。


我在 this pdf 中找到了一篇可能是算法的论文但我必须承认我发现逻辑和数学有点难以理解。当然还有其他解决方案吗?任意轮换顺序真的那么罕见吗?当然,每个允许骨骼动画和四元数插值的主要 3D 包(即 Maya、Max、Blender 等)一定已经解决了这个问题?

最佳答案

这看起来像是旧技术被忽视的经典案例 - 我设法挖出了 Graphics Gems IV 的副本来自车库,看起来 Ken Shoemake 不仅有一个从 任意 旋转顺序的欧拉角转换的算法,而且还回答了我关于这个主题的大部分其他问题。书籍万岁。要是我能对 Shoemake 先生的回答投赞成票并奖励他声望点就好了。

我想建议任何使用欧拉角的人都应该从他们本地的图书馆获得 Graphics Gems IV 的副本,并阅读第 222 页开始的部分。它必须是我所读过的对问题最清晰、最简洁的解释。


这是我发现的有用链接 - http://www.cgafaq.info/wiki/Euler_angles_from_matrix - 这遵循与 Shoemake 相同的系统; 24 种不同的旋转顺序排列被编码为四个单独的参数 - 内轴、奇偶校验、重复和帧 - 然后允许您将算法从 24 种情况减少到 2 种。一般来说可能是一个有用的维基 - 我没有来之前穿过它。

提供的旧链接似乎已损坏 here是“从旋转矩阵计算欧拉角”的另一个副本".

关于language-agnostic - 是否有将四元数旋转转换为欧拉角旋转的算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4281268/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com