我已经搜索了数小时,仍然没有找到我的问题的明确答案。
情景如下:用户尽可能高地扔出一部iPhone手机,我想测量iPhone上升的高度。
我想使用Core Motion的加速计,并已经成功实现了一个简单的系统,可以给我三轴上的加速度数据。然而,这只是加速度。
根据我的物理知识,计算最大高度的公式是(V0^2)/2*g,其中V0是初始速度。
我有加速度值,但需要将其转换为速度值或者直接从加速计中获取速度值,请问是否有任何想法呢?
我知道这不完全涉及编程,但我只是想在这方面得到些帮助 :)
问题:
在物理计算中,除了速度,还有一些问题需要解决才能得到结果。
但是!你可以决定假设某些事情,以使这些烦人的问题消失!
合理假设:
这个假设将问题简化为一个更简单的问题,我们只需要找到自由落体时间的持续时间,即可确定相对抛出高度。
你所需要做的:
判断设备是否处于自由落体状态相对容易,因为总重力将近为 0 m/s^2。
然而,这仍然存在一个小问题,因为加速度计可能不在手机的重心上,所以它将在自由落体过程中沿着一个特定方向经历恒定加速度(如果手机围绕自身旋转)。首先,已经有一个应用程序完全符合您的要求:Send Me To Heaven。您在苹果应用商店中找不到它,因为它从未通过审核,猜猜为什么;-)
正如您所述,您只能访问加速度。h = v02/(2*g) 是正确的。要获取起始速度v0,您需要通过时间数值积分加速度。最棘手的部分将是找到确定时间间隔[t1, t2]的必要和充分条件。加速阶段何时开始,何时结束。
另一件要考虑的事情是避免欺骗用户,他们只需围绕自己的轴旋转几秒钟,然后模拟飞行阶段。在那里,您可能还需要考虑着陆阶段:当用户抓住设备时,您应该注册强烈的减速。
但是,请不要期望此应用程序能够进入商店,在Google Play上,竞争对手更快。