给定一个旋转矩阵
| r00 r01 r02 |
R = | r10 r11 r12 |
| r20 r21 r22 |
和特定的旋转序列“abc”,其中 a、b、c 取自“XYZ”。 Python 中是否有一个通用解决方案(对于任意旋转序列)可将旋转矩阵转换为绕 X、Y 和 Z 轴的旋转角度?
最佳答案
似乎每个旋转序列都有其单独的解决方案。给定一个 序列“ZYX”旋转的结果符号表达式 矩阵是
| Cy Cz -Cy Sz Sy |
Rxyz = │ Sx Sy Cz + Cx Sz -Sx Sy Sz + Cx Cz -Sx Cy │
| -Cx Sy Cz + Sx Sz Cx Sy Sz + Sx Cz Cx Cy |
用C
和S
表示余弦和正弦。 x
、y
、z
索引注释
绕 x、y 和 z 轴的旋转。由此,得到一组方程
可以推导出来,即:
Cy Cz = r00
- Cy Sz = r01
- Sx Cy = r02
Sx Sy Cz + Cx Sz = r10
...
需要解决至少一个角度表达式 每个轴。然后,应用“arcsin”或“arccos”来获得真实的 角度。似乎需要执行符号数学 每个序列分开。
关于Python:旋转矩阵到角度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45696408/