我想找到不垂直于地面的设备的方位角。
这是一个已经存在的答案,但对我而言还不完整:
这是这个问题的公认答案,几乎是相同的。 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轴指向同一方向,因此方位角不应改变。当然,由于加速度会有所不同。