自由落体时如何测量iphone所覆盖的距离?

时间:2009-07-02 10:24:03

标签: iphone accelerometer

在自由落体期间,iphone应该在所有三个轴上发送加速度值为0。那么如何检测iphone所覆盖的距离呢?

10 个答案:

答案 0 :(得分:10)

不要相信牛顿法则,他们忽略空气阻力,Iphone旋转等。使用经验方法代替。让设备从1米,2米,5米,10米,30米等高度落下......每个高度重复几次。在每个秋季测量时间。样条曲线的近似结果。计算反函数。

答案 1 :(得分:3)

最简单和天真的实现是对加速计数据进行采样并使用以下公式。

v+=a*dt;
d+=v*dt;

但这可以随着时间的推移而变化,请阅读此解释原因和更好的解决方案: http://gafferongames.com/game-physics/integration-basics/

答案 2 :(得分:2)

如果您的加速度计报告为零,那么您就有了确定动作何时完成的问题。

因此确定冲击时的减速度,然后确定减速开始时的最大速度,然后从此向后工作。假设线性运动,没有终端速度和空气阻力,线性减速(可能),并且您的手机仍然有效!

答案 3 :(得分:2)

从一开始就

  

距离= 0.5 x加速度x时间 2

重力加速度= 9.81 m / s 2

我会假设你没有把手机放得足够远以达到终端速度。如果你这样做,我怀疑你的应用程序在恢复手机时会有多大用处:)

答案 4 :(得分:1)

忽略空气阻力:

float t; // time since drop
float distance = 9.81f * 0.5f * t * t;

对于更远的距离(从飞机上掉落),您也可以使用位置服务。 CLLocation包含高度。

答案 5 :(得分:1)

考虑到风阻问题的一个解决方案是,您可以使用重力加速度和您正在阅读的实际加速度范围之间的差异,

d 2 x / dt 2 = g - | a |

其中g = 9.8且| a | = sqrt(a 1 2 + a 2 2 + a 3 2 )其中 n 是每个轴上的accellerometer的读数。

然后用欧拉方法(Euler's Method)以数字方式求解微分方程。

你甚至可以聪明地使用GPS查找g的本地值。

答案 6 :(得分:0)

距离= 0.5 * gravityAcceleration * timeOfFall 2

以最简单的形式。

我们可以安全地省略空气摩擦和风,考虑到iPhone的外形和重量以及硬件从坠落时仍然有用的距离。 ;)

但是,如果您在打开降落伞之前使用手机进行自由落体,那么根据加速度计本身,有太多因素需要可靠地计算距离。它可能不适用于此类应用,因为读数非常不稳定,其主要目的是确定设备的方向或检测电位自由落体(如果笔记本电脑使用类似的加速度计芯片)

答案 7 :(得分:0)

这非常简单,因为你必须考虑到空气摩擦。空气摩擦导致装置达到“a”终端速度。只有在终端速度下,accellerometer才会显示0。

此处给出的公式假设空隙中的自由落体(无摩擦)。

换句话说,计算行进距离非常复杂(一个问题是终端速度取决于掉落时手机的方向)。

答案 8 :(得分:0)

另请注意,手机很可能在任何下降情况下都会翻滚。当手机的配置文件发生变化时,阻力会发生变化,加速度计不会读数为零。

答案 9 :(得分:-1)

加速度计将在所有3轴上读取0(或g),无论是自由下落还是坐在桌子上。因此,这个问题没有实际意义,因为没有办法在不假设自由落体的情况下确定距离。