无论手机方向如何,都获得垂直于重力方向的加速度。
Posted
技术标签:
【中文标题】无论手机方向如何,都获得垂直于重力方向的加速度。【英文标题】:Getting accleration perpendicular to the direction of the gravity irrespective of the phone orientation. 【发布时间】:2015-04-19 05:41:42 【问题描述】:我正在尝试获得垂直于重力方向的两个轴上的加速度,而与手机的方向无关,但不太确定如何做到这一点,
我一直在研究使用 TYPE_MAGNETIC_FIELD 和 TYPE_ROTATION_VECTOR 但不知道如何实现。
我只需要 xy 平面中的加速度,假设重力方向在 z 平面中,而与手机方向无关。
提前致谢
【问题讨论】:
【参考方案1】:这不简单:)
要使用 TYPE_MAGNETIC_FIELD,您应该知道地球磁场在您的位置是如何定向的,这不是微不足道的。
您可以尝试使用 TYPE_GRAVITY 和 TYPE_LINEAR_ACCELERATION:第一个返回重力加速度矢量,第二个返回设备的加速度,不包括重力(它应该类似于 LINEAR_ACCELERATION = ACCELEROMETER - GRAVITY,但我不知道有多精确它是)。
要在 z 轴上获得重力,您必须执行重力矢量的旋转以使其形式为 (0 0 g)...实际上,您必须找到在形式(0 0 克)。更多关于这个here (wikipedia)。
一旦你有了这个矩阵,你就可以把它应用到线性加速度向量上,它的 x 和 y 分量就是你要找的那个。
如果您的手机没有这两个传感器,则您必须自己计算重力和线性加速度:为此,您可以实现一个高通滤波器来获取线性加速度,并实现一个低通滤波器来获取重力矢量.更多关于这个here。
【讨论】:
以上是关于无论手机方向如何,都获得垂直于重力方向的加速度。的主要内容,如果未能解决你的问题,请参考以下文章