我想找到不垂直于地面的设备的方位角。

这是一个已经存在的答案,但对我而言还不完整:

这是这个问题的公认答案,几乎是相同的。 Inconsistent orientation sensor values on Android for azimuth/yaw and roll

问题:

但是在这个问题中,可接受的答案给出的方位角值在-89到89范围内。当我从北磁北移动时,我想计算在0-359 degree范围内的方位角值。如何在Android Sensors中进行计算?

最佳答案

当设备不平坦且您希望指南针方向为设备z轴方向的负数(即您所看的方向)时,可以通过以下方法计算方位角:

remapCoordinateSystem(inR, AXIS_X, AXIS_Z, outR);


然后打电话

getOrientation (float[] R, float[] values)


为参数outR传入R

该量用于将z轴投影到World xy平面中,然后计算此投影与World y轴之间的夹角,该角度为磁北。

当设备绕该轴旋转时,z轴指向同一方向,因此方位角不应改变。当然,由于加速度会有所不同。

09-03 19:42