У меня есть менеджер Core Motion в моем приложении для iOS:
motionManager = [[CMMotionManager alloc] init];
motionManager.deviceMotionUpdateInterval = 1.0 / 60.0;
if ([motionManager isDeviceMotionAvailable]) {
[motionManager startDeviceMotionUpdates];
}
и в методе обновления (я использую cocos3d, но это не беда) у меня есть это:
-(void) updateBeforeTransform:(CC3NodeUpdatingVisitor *)visitor
{
if (motionManager.deviceMotionActive)
{
CMDeviceMotion *deviceMotion = motionManager.deviceMotion;
CMAttitude *attitude = deviceMotion.attitude;
NSLog(@"%f, %f, %f", attitude.yaw, attitude.pitch, attitude.roll);
}
}
Кладу прибор на стол и начинаю смотреть значения рыскания, тангажа и крена, а рыскание постоянно меняется! она меняется примерно на 10 градусов за пару минут, что абсолютно недопустимо в моем приложении. В чем причина этого изменения и как я могу этого избежать? Я начал думать, что это происходит из-за вращения Земли, но скорость слишком большая :)
Заранее спасибо!