I'm trying to measure the distance a device slides using the accelerometer. This is how I'm doing it:
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
CGFloat interval = [NSDate timeIntervalSinceReferenceDate] - lastTime;
CGFloat velocity = ((acceleration.y + lastAcceleration) / 2) * interval * 9.8 + lastVelocity;
totalDistance += velocity * interval;
lastAcceleration = acceleration.y;
lastVelocity = velocity;
lastTime = [NSDate timeIntervalSinceReferenceDate];
}
The results are extremely erratic, ranging +/- 30% of the actual value. Are my calculations correct, and if so, how can I make this code more accurate?