当设备旋转一定量时,一个简单的立方体必须旋转相同的量但方向相反。例如,如果设备向右旋转 45 度,则立方体必须向左旋转 45 度。或者当俯仰角为 30 度时,立方体必须绕 X 轴旋转 -30 度。当偏航角为 10 度时,立方体必须绕 Z 轴旋转 -10 度。我使用了 .getRotationMatrixFromVector 后跟 getOrientation ,如下所示:
if (event.sensor.getType() == Sensor.TYPE_ROTATION_VECTOR) {
SensorManager.getRotationMatrixFromVector(
mRotationMatrix , event.values);
SensorManager.getOrientation(mRotationMatrix, orientationVals);
azimuthVal = (Math.round((Math.toDegrees(orientationVals[0]))*100.0)/100.0);
pitchVal= (Math.round((Math.toDegrees(orientationVals[1]))*100.0)/100.0);
rollVal = (Math.round((Math.toDegrees(orientationVals[2]))*100.0)/100.0);}
但是它的俯仰变化问题会影响滚动,反之亦然,因此当设备围绕 X 轴旋转时,捏值会发生变化->滚动变化->当我不旋转时,立方体不仅围绕 X 还围绕 Y 旋转不需要那个。
我浏览了互联网,许多人将四元数称为解决方案,但我如何将四元数应用于我的特定应用程序,因为我需要知道设备沿轴旋转的度数。