關於Android方向感測器的終極解釋
阿新 • • 發佈:2019-01-03
關於getOrientation() 返回的三個座標的角度問題,網友用實測的方式給出了以下答案
-
方向感測器返回的都是角度值,以度數為單位。
-
第一個角度:Azimuth (degrees of rotation around the z axis).範圍 0-360度
手機水平放置,手機頂部指向正北時該角度為0,指向正東時為90度,指向正南時為180度,指向正西時為270度 -
第二個角度:Pitch (degrees of rotation around the x axis).範圍 (負180——正180度)
手機水平放置,螢幕向上,手機頂部擡起繞X軸旋轉,直到螢幕向下,角度從零變到-180。如果是手機底部擡起繞X軸旋轉,直到螢幕向下,角度從0變到180度 -
第三個角度:Roll (degrees of rotation around the y axis)。範圍 (負90——正90度)
手機水平放置,螢幕向上,手機左側擡起繞Y軸旋轉,直到與水平面垂直,角度從零變到-90。如果是手機手機右側擡起繞Y軸旋轉,直到與水平面垂直,角度從零變到+90。
網友對ROLL角最不理解,也沒有一個統一簡單地理解方法,其實以上三個角統一成一句話就是:**順時間角度為正,逆時針為負。**要理解這句話,就是明白以下三點
- 理解手機座標系,網友有兩種座標,其中第二種是錯的,實際Android螢幕座標是統一的,即X軸指向正東,見下圖
- 角度時針方向的視角是旋轉軸的逆方向,即Azimuth角是Z軸的正向向原點方向看,Pitch角是X軸的正向向原點方向看,Roll角是Y軸的正向向原點方向看,理解了這一點,你就理解上面我說的順時間角度為正,逆時針為負。
- 這裡的角度應該是相對於世界座標的,這一點如果有誤,歡迎大家指正