正常化Android方向传感器(滚动)
我正在制作一个类似于Google Sky Map的AR应用程序,当手机放平时,我的滚动值需要从-90度变为0度,当用户手持手机垂直于地面时,需要从0度变为+90度,当手机背面指向天空时(即,相机直接向上) 我的问题是加速计传感器返回的值从-90到+90,但+90是指手机与地面垂直时的值。我不能简单地从值中减去90,因为随着手机开始向后倾斜,值开始减小。因此,基本上,我需要一种方法来知道手机何时超过+90 对不起,如果我没有很好地解释这一点,那很难用语言表达清楚 编辑:12/03/12正常化Android方向传感器(滚动),android,accelerometer,Android,Accelerometer,我正在制作一个类似于Google Sky Map的AR应用程序,当手机放平时,我的滚动值需要从-90度变为0度,当用户手持手机垂直于地面时,需要从0度变为+90度,当手机背面指向天空时(即,相机直接向上) 我的问题是加速计传感器返回的值从-90到+90,但+90是指手机与地面垂直时的值。我不能简单地从值中减去90,因为随着手机开始向后倾斜,值开始减小。因此,基本上,我需要一种方法来知道手机何时超过+90 对不起,如果我没有很好地解释这一点,那很难用语言表达清楚 编辑:12/03/12 我使用了这
我使用了这个:使用加速计传感器而不是方向传感器。不要混淆,不要混合他们的传感器。当z轴上的加速度为负时,滚动的值将超过+90。因此,你可以使用这个事实并相应地校准你的手机。一般来说,你不应该使用方向传感器,并且你也应该避免使用
getOrientation()
。相反,你应该使用加速度计或重力与磁强计结合使用getRotationMatrix()
,并为你的应用程序使用三维变换
还可以使用旋转传感器返回四元数,这很容易转换为变换矩阵
只有在以友好的方式显示数值时,才需要使用方向
有关更详细的答案和示例代码,请参见和。稍后您想对滚动做什么?无论如何,我不会使用滚动。您可以对旋转矩阵执行与欧拉角相同的任何操作。顺便说一句,我想您指的是“俯仰”,而不是“滚动”