我正在使用 Google 的 Project Tango 设备开发室内定位应用程序,并且我希望 UI 显示与 ADF 地图相关的设备方向。
为此,我从 TangoPoseData 访问 Z 轴旋转信息,并尝试将旋转数据转换回以度为单位的角度。
TangoPoseData 中的旋转信息定义如下,
z = RotationAxis.z * sin(RotationAngle / 2)
我的代码如下所示:
//Sine value of the angle
double tangoRotationZsin = pose.rotation[2];
//Convert the sine value into a angle in radians
double tangoRotationZRad = 2*Math.asin(tangoRotationZsin);
//Convert to an angle in degrees
double tangoRotationZDeg = tangoRotationZRad * 180/Math.PI;
问题:
以度为单位的角度值 (tangoRotationZDeg) 应该在 -180 到 180 的范围内,但即使我在 Z 轴上将设备旋转 360 度数次,角度的范围也仅在 -120 到 120 度之间(有时在 -110 到110 度)。
我错过了什么?
我猜这个问题与 TangoPoseData 中的“RotationAxis.z”因子有关,我在我的代码中假设它等于 1,但不确定。
感谢您的任何帮助!