2011-03-29 12 views
5

我想弄清楚如何getRotationMatrix()getOrientation()準確地工作。Android SensorManager.java getOrientation和getRotationMatrix算法

到目前爲止,我已經知道,在getRotationMatrix()函數中,用磁矢量交叉產生重力矢量,以獲得指向東方的新矢量。然後,再次利用重力矢量交叉產生東矢量,得到指向磁北的矢量。根據這article表示,現在我們有三個正交向量,我們可以形成一個旋轉矩陣。

這是我的第一個問題:爲什麼我們應該用重力矢量再次交叉產生東矢量以得到指向磁北的矢量?原始磁矢量不是指向磁北極嗎?新矢量和原始磁矢量有什麼區別?

說到getOrientation(),這裏是我的第二個問題:方位角,滾轉角和俯仰角怎麼會出來?有沒有解釋的方程或公式?

你可以去這個website看到代碼

非常感謝您的關注。非常感謝!

+2

非常非常好的問題! – 2013-10-30 04:37:41

回答

1

第一個答案:磁矢量指向(磁)北,也許還有點上或下。第二個交叉積的目的是在水平面上得到一個向量,指向(磁性)向北。

第二個答案:根據該代碼,滾動節距和方位角是從旋轉矩陣的元素計算出來的,而旋轉矩陣的元素又是從三個空間矢量的分量導出的。一目瞭然,

黃褐色(方位角)= M ý/H ý
罪(間距)= -A ý
黃褐色(輥)= -A ž/A X

(這是否是足夠的答案取決於你是多麼舒服三角和可視化的旋轉在3維空間)。

+0

尊敬的貝塔:感謝您的回答,我很抱歉沒有說清楚我的第二個問題。我知道三個角度來自旋轉矩陣,但爲什麼他們看起來像這樣?它們必須來自某處。我想知道這些方程背後的原理或公式。謝謝!! – stevensyy 2011-03-29 06:58:29

相關問題