2017-08-15 316 views
1

给定旋转矩阵的Python:旋转矩阵角度

 | r00 r01 r02 | 
R = | r10 r11 r12 | 
    | r20 r21 r22 | 

和特定旋转序列 'ABC' 其中a,b,c是从 'XYZ' 截取。 是否有一个通用解决方案(用于任意旋转序列)在Python中可用于将旋转矩阵转换为围绕X,Y和Z轴的旋转角度?

+2

请说明“specific rotation sequence'abc'的含义,其中a,b,c取自'XYZ'”。你的问题似乎完整没有这个短语,并且这个短语不清楚。 –

+0

https://gamedev.stackexchange.com/questions/50963/how-to-extract-euler-angles-from-transformation-matrix – meowgoesthedog

+0

这是我相信机器人和3D图形中的一个常见问题。查看“Roll,Pitch,Yaw”和[这个大学页面](http://planning.cs.uiuc.edu/node103.html)确定它们。 – crazyGamer

回答

1

看来每个旋转序列都有其独立的解决方案。给定一个 序列“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 | 

CS为余弦和正弦。 x,y,z索引注释 围绕x,y和z轴的旋转。从这一点,一组方程 可以衍生,即:

  Cy Cz = r00 
     - Cy Sz = r01 
     - Sx Cy = r02 
Sx Sy Cz + Cx Sz = r10 
     ... 

那些需要用于 每个轴的至少一个角度的表达来解决。然后,应用'arcsin'或'arccos'来获得真实的角度。似乎需要分别对每个序列执行 这个符号数学。