我正在开发app,用于在iPhone上显示移动汽车的当前G-Force值。我不知道如何使用iPhone加速度计值计算G力值。另外,我必须使用这些值计算距离和速度。
答案 0 :(得分:4)
让您的类(ViewController或其他)实现UIAccelerometerDelegate协议。然后
-(void)startListening {
UIAccelerometer *meter = [UIAccelerometer sharedAccelerometer];
meter.updateInterval = 1.0; // One second
meter.delegate = self;
}
然后,您的代理人可以使用UIAccelerometer为其提供的UIAcceleration对象来执行您需要的任何操作。例如,如果你只需要iPhone的加速度,你可以使用双重accelMagnitude实例变量:
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
accelMagnitude = sqrt(acceleration.x * acceleration.x
+ acceleration.y * acceleration.y
+ acceleration.z * acceleration.z);
[self refreshDisplay: accelMagnitude];
}
其中refreshDisplay可以显示您需要的任何内容。
答案 1 :(得分:1)
如果您可以在汽车静止时校准加速度计,您可以稍后通过简单的矢量算法获得水平力分量:
Fhorizontal = Ftotal - Fvertical
答案 2 :(得分:0)
我读过加速度计并不准确,所以我认为需要经验微调。
一旦你校准,测量/过滤(并转换到适当的单位)加速度计数据,速度可以通过(梯形规则)近似
Speed_i+1 = Speed_i + (interval_time/2)* (Accel_i+Accel_i+1)
距离相同。如果您想获得更高的准确度,可以尝试更高阶的求积公式(如Simpson)。