繁体   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