如何通过加速获得速度?

时间:2011-07-06 03:02:11

标签: ios iphone acceleration

你知道应用程序“运动标尺”吗?它可用于通过移动iPhone来获取对象的长度。

移动iPhone时如何从UIAcceleration获取速度?

1 个答案:

答案 0 :(得分:1)

速度只是加速*时间。即你可以使用公式

v = u +加速*时间。

作为首发,你可以假设初始速度为0,'u'可以被忽略以获得加速*时间。

如果你想要距离只是使用 距离=初始速度*时间+ 0.5 *加速度*时间*时间。

或者更好的是仍然使用航位推算并继续添加速度矢量,因为您可以从加速度计获得更新。

要将加速度作为标量,您可以执行= sqrt(x * x + y * y + z * z)。你会想要在此之前删除重力!此外,这只会给你直线距离,你可能更喜欢独立测量x,y,z的速度,并使用矢量分析来测量路径,以获得更准确的读数。但请注意,您可能还需要考虑任何旋转都是超级准确的,此功能仅适用于iPhone4s。这可能会变得棘手,你可能想要使用一些矩阵数学来定位手机所在的“空间”。

你还需要在加速度计上做一个低通滤波器以摆脱“震动”,这是一个重要的误差范围将会蔓延的原因以及我为什么期望appstore中的所有统治者都花了很长时间精炼这个。

要做一个过滤器,一个非常简单的过滤器就是filterValue =((lastValue * n)+ accelerationValue)/(n + 1),其中一个较大的n值会得到更平滑的结果,但响应速度较慢。