9

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

4

10 回答 10

10

不要相信牛顿定律,它们会忽略空气阻力、Iphone 旋转等。改用经验方法。让设备从 1m、2m、5m、10m、30m 等几个高度跌落……每个高度重复几次。在每个秋季测量时间。样条曲线的近似结果。计算反函数。

于 2009-07-02T21:28:57.543 回答
3

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

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

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

于 2009-07-02T10:43:36.153 回答
2

从一开始

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

重力加速度 = 9.81 m/s 2

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

于 2009-07-02T10:33:19.437 回答
2

如果您的加速度计报告为零,那么您将无法确定运动何时完成。

所以确定撞击时的减速度,然后确定减速开始时的最大速度,然后从这里倒推。假设直线运动,没有终端速度和空气阻力,直线减速(也许),你的手机仍然可以工作!

于 2009-07-02T10:32:42.993 回答
1

考虑风阻问题的一种解决方案是,您可以使用重力加速度与您正在阅读的实际加速度标准之间的差异,

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

其中 g = 9.8 和 |a| = sqrt(a 1 2 + a 2 2 + a 3 2 ) 其中 a n是来自每个轴上的加速度计的读数。

然后用类似欧拉方法的方法对微分方程进行数值求解。

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

于 2009-07-02T19:47:30.663 回答
1

忽略空气阻力:

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

对于更远的距离(从飞机上掉下来),您还可以使用定位服务。CLLocation 包含一个高度。

于 2009-07-02T10:29:49.787 回答
0

另请记住,手机很可能在任何类型的跌落情况下翻滚。随着手机配置文件的变化,阻力也会发生变化,加速度计的读数不会为零。

于 2009-07-02T21:32:42.620 回答
0

这是非常简单的,因为您必须考虑空气摩擦。空气摩擦使设备达到“a”终端速度。只有在终端速度下,加速度计才会显示 0。

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

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

于 2009-07-02T10:37:38.943 回答
0

距离 = 0.5 * 重力加速度 * timeOfFall 2

以最简单的形式。

考虑到 iPhone 的外形尺寸和重量,以及硬件在坠落时仍然有用的距离,我们可以放心地忽略空气摩擦和风。;)

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

于 2009-07-02T10:31:50.750 回答
-1

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

于 2009-07-02T19:55:43.737 回答