1.歐拉角的限制
//變成"限制集"歐拉角
void canonize();
(1)歐拉角的表達方式不唯一,會有別名問題。
例如:
pitch:135° 可以轉換爲pitch:45°,heading:180°,bank:180°.
方案:
應該將pitch限制在[-90°,+90°],heading[-180°,+180°],bank[-180°,+180°];
(2)歐拉角會產生萬向鎖的問題
當pitch = 90°時,繞y軸的旋轉和繞z軸的旋轉會相同。
方案
規定當歐拉角處於反向鎖時將繞z軸(bank)的旋轉角度全部賦給y軸(heading)
heading += bank;bank = 0;
2.從矩陣轉換到歐拉角
(1)由慣性—物體歐拉角轉換成的慣性—物體矩陣反推出歐拉角
M =
可得公式
當cos(p) != 0時(歐拉角不爲萬向鎖時):
;
;
當cos(p) == 0時(歐拉角爲萬向鎖時):
b = 0; sin b = 0; sinp = 1;cosp = 0