簡體   English   中英

如何在android中將設備坐標系映射到世界坐標系

[英]How to map device co-ordinate system to world co-ordinate system in android

我從加速度計得到向量 (Ax,Ay,Az)。 當我的手機放在桌面上且頂部朝北時,我知道我的手機坐標系和世界坐標系匹配。 但是當我改變手機的位置時,坐標系不一樣,需要重新映射。 為此,我需要一個旋轉矩陣來解決問題。 但無法確定旋轉矩陣。 我試過像踩踏一樣但沒有運氣

無法在android上將設備坐標系轉換為世界坐標系

那么有什么方法可以獲得旋轉矩陣並在android中執行映射嗎?

我嘗試將向量與三個軸的旋轉矩陣相乘。 但它沒有給出任何令人滿意的結果。 由於加速度計確定的角度不正確。 另外我認為旋轉矩陣沒有達到目的。

旋轉矩陣

為此,android 提供了給定重力傳感器數據和磁傳感器數據的SensorManager 首先是重力傳感器(加速度計)讀數和磁傳感器讀數。 聲明數組並將數據存儲到它們。 旋轉數組將用於存儲旋轉矩陣數據。 temp[] 用於臨時存儲數據。

private static final float rotation[] = new float[9];
private static final float temp[] = new float[9];
private static final float grav[] = new float[3];
private static final float mag[] = new float[3];

然后通過以下代碼獲取旋轉矩陣。 這里 temp 是用於存儲旋轉信息的臨時矩陣

SensorManager.getRotationMatrix(temp, null, grav, mag);

使用以下方法重新映射坐標

SensorManager.remapCoordinateSystem(temp, SensorManager.AXIS_Y, SensorManager.AXIS_MINUS_X, rotation);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM