当我在 Android 应用程序中监听方向事件时,我得到一个 SensorEvent,其中包含 3 个浮点 - 相对于现实世界轴的方位角、俯仰角和滚动角。
现在假设我正在构建一个像迷宫这样的应用程序,但我不想强迫用户通过电话并握住电话以使 xy 平面与地面平行。相反,我希望能够允许用户随心所欲地握住手机,躺下或者坐下来以一定角度握住手机。换句话说,我需要根据用户的喜好来校准手机。
我怎样才能做到这一点?
另请注意,我相信我的答案与getRotationMatrix
and getOrientation
,但我不知道如何!
请帮忙!我已经被困在这几个小时了。
对于迷宫式应用程序,您可能更关心加速度(重力)矢量而不是轴方向。在电话坐标系中,该矢量由三个加速度计测量值的组合给出,而不是旋转角度。具体来说,只有x and y读数应该会影响球的运动。
如果您确实需要方向,则 3 个角度读数代表 3 个欧拉角。然而,我怀疑你可能并不真正需要角度本身,而是旋转矩阵R,这是由返回的获取旋转矩阵()API。一旦你有了这个矩阵,那么它is基本上就是您正在寻找的校准。当您想要将世界坐标中的向量转换为设备坐标时,您应该将其乘以inverse该矩阵的(在这种特殊情况下,inv(R) = 转置(R).
因此,按照我在文档中找到的示例,如果您想变换世界重力矢量g([0 0 g]) 到设备坐标,乘以 inv(R):
g = inv(R) * g
(请注意,这应该给出与读取加速度计相同的结果)
此处可能使用的 API:反转M() and 乘法MV()矩阵类的方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)