[英]Finding speed and acceleration in iOS
請在使用iPhone
Accelerometer
查找加速度和速度(速度)的過程中建議我。
使用下面的代碼來測量加速度和速度。 但是沒有獲得正確的速度值。
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];
}];
試試這個代碼:
在您的ViewDidLoad
方法中
[self setAccelerometerEnabled:NO];
[[UIAccelerometer sharedAccelerometer] setUpdateInterval:1/60]; // this is for your Accelerometer speed
Accelerometer
代表方法:
- (void) accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration
{
CGPoint playerPos = [imageview position];
playerPos.x += kXFilterFactor * acceleration.y;
playerPos.y += kYFilterFactor * -acceleration.x;
if (playerPos.x < 10)
{
playerPos.x = 10;
} else if (playerPos.x > self.view.frame.size.width - 10)
{
playerPos.x = self.view.frame.size.width - 10;
}
if (playerPos.y< 10)
{
playerPos.y = 10;
} else if (playerPos.y > self.view.frame.size.height - 10)
{
playerPos.y = self.view.frame.size.height - 10;
}
[imageview setPosition:playerPos];
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.