1
請在iPhone
中使用Accelerometer
查找加速度和速度(速度)的過程。在iOS中查找速度和加速度
使用下面的代碼來測量加速度和速度。但沒有得到正確的速度值。
CMMotionManager *motionManager;
motionManager = [[CMMotionManager alloc] init];
motionManager.accelerometerUpdateInterval = 1.0/10.0;
[motionManager startDeviceMotionUpdates];
CMMotionManager *mManager = [[CMMotionManager alloc] init];
[mManager setAccelerometerUpdateInterval:0.1];// Update at 10Hz
[mManager startAccelerometerUpdatesToQueue:[NSOperationQueue mainQueue] withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) {
motionManager = mManager;
gravX = (accelerometerData.acceleration.x * kFilteringFactor) + (gravX * (1.0 - kFilteringFactor));
gravY = (accelerometerData.acceleration.y * kFilteringFactor) + (gravY * (1.0 - kFilteringFactor));
gravZ = (accelerometerData.acceleration.z * kFilteringFactor) + (gravZ * (1.0 - kFilteringFactor));
UIAccelerationValue accelX = accelerometerData.acceleration.x - ((accelerometerData.acceleration.x * kFilteringFactor) + (gravX * (1.0 - kFilteringFactor)));
UIAccelerationValue accelY = accelerometerData.acceleration.y - ((accelerometerData.acceleration.y * kFilteringFactor) + (gravY * (1.0 - kFilteringFactor)));
UIAccelerationValue accelZ = accelerometerData.acceleration.z - ((accelerometerData.acceleration.z * kFilteringFactor) + (gravZ * (1.0 - kFilteringFactor)));
accelX *= 9.81f;
accelY *= 9.81f;
accelZ *= 9.81f;
UIAccelerationValue vector = sqrt(pow(accelX,2)+pow(accelY,2)+pow(accelZ, 2));
UIAccelerationValue acce = vector - prevVelocity;
UIAccelerationValue velocity = (((acce - prevAcce)/2) * (1/kAccelerometerFrequency)) + prevVelocity;
NSLog(@"Prev Velocity: %f",prevVelocity);
NSLog(@"Velocity :%f",velocity);
prevAcce = acce;
prevVelocity = velocity;
self.accelerationLbl.text = [NSString stringWithFormat:@"%.2f",vector];
self.velocityLbl.text = [NSString stringWithFormat:@"%.2f",velocity];
}];
速度=距離/時間重播 – CW0007007