2017-08-15 235 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'來獲得真實的角度。似乎需要分別對每個序列執行 這個符號數學。