俯仰,滾轉和偏航角。我如何將這些轉換為方向向量?
這將是特別酷,如果你能告訴我一個四元數和/或矩陣表示這個!
不幸的是,有關如何定義這些東西有不同的約定(和滾動,俯仰,偏航不是完全相同的歐拉角),所以你必須要小心。
如果我們將pitch = 0定義為水平(z = 0)並且偏離從x軸逆時針,則方向矢量將是
x = cos(yaw)*cos(pitch) y = sin(yaw)*cos(pitch) z = sin(pitch)
注意我沒有使用roll;這是方向單位向量,它不指定態度。它很容易寫一個旋轉矩陣,將物體攜帶到飛行物體的框架(如果你想知道,例如,左翼尖指向),但它是一個好主意,首先指定約定。你能告訴我們更多的問題嗎?
編輯:
(我已經有意回答這個問題兩年半了。)
對於全旋轉矩陣,如果我們使用上面的約定,並且我們想要矢量先偏航,然后俯仰,然后滾動,以獲得世界坐標系中的最終坐標,我們必須以相反的順序應用旋轉矩陣。
第一卷:
| 1 0 0 | | 0 cos(roll) -sin(roll) | | 0 sin(roll) cos(roll) |
然后間距:
| cos(pitch) 0 -sin(pitch) | | 0 1 0 | | sin(pitch) 0 cos(pitch) |
然后偏航:
| cos(yaw) -sin(yaw) 0 | | sin(yaw) cos(yaw) 0 | | 0 0 1 |
組合它們,總旋轉矩陣為:
| cos(yaw)cos(pitch) -cos(yaw)sin(pitch)sin(roll)-sin(yaw)cos(roll) -cos(yaw)sin(pitch)cos(roll)+sin(yaw)sin(roll)| | sin(yaw)cos(pitch) -sin(yaw)sin(pitch)sin(roll)+cos(yaw)cos(roll) -sin(yaw)sin(pitch)cos(roll)-cos(yaw)sin(roll)| | sin(pitch) cos(pitch)sin(roll) cos(pitch)sin(roll)|
因此,對於從x軸開始的單位矢量,最終坐標將是:
x = cos(yaw)cos(pitch) y = sin(yaw)cos(pitch) z = sin(pitch)
對於從y軸(左翼尖)開始的單位矢量,最終坐標為:
x = -cos(yaw)sin(pitch)sin(roll)-sin(yaw)cos(roll) y = -sin(yaw)sin(pitch)sin(roll)+cos(yaw)cos(roll) z = cos(pitch)sin(roll)