在尝试回答another SO question时,出现了如何计算尺寸> 3的欧拉角的问题。 RSpincalc
软件包具有直接的DCM2EA
函数,用于将3d旋转矩阵转换为Euler角或Tait-Bryan角,但这仅处理3维的特定情况。 wikipedia page on Euler angles简要讨论了将Euler角扩展到更高维度的问题,并引用了Italian paper显然将方法推广到更大数量的维度。不幸的是,我的意大利语和我的数学都不能完全依靠这张纸来创建可用的R函数。
至少可以说,我在this answer中使用的当前方法有点麻烦。我使用Ryacas
包创建一个符号矩阵,该符号矩阵是任意数量尺寸的一系列旋转的组合。然后可以相对于已知的旋转矩阵来迭代求解,以找到所需的角度。它可以工作,但是一旦维数达到5个或更多,它就会变得越来越慢。
通过实现Italian paper中的方法还是其他方法,是否有更好的方法来实现此目标?
最佳答案
1972年有一篇有趣的论文here,它解决了在给定N维正交矩阵(我认为是您所拥有的)的情况下计算N维Euler角的问题。我浏览了这篇论文,并给出了您似乎需要的公式:
给定N维欧拉角的变换矩阵
给定变换矩阵的N维欧拉角
由于本文中给出的方程式解决了一种特定的参数化问题,因此可以进行其他参数化,这对于Euler表示来说是常见的。
我没有尝试重新推导和验证它们的方程式,但是它们给出了明确的公式,因此您可以将其用于您已经有了答案的低维度,并查看它们是否同意。
关于r - 计算尺寸> 3的欧拉角/泰特-布莱恩角的模拟量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31566278/