Я использую этот код для определения позиции устройства. Roll & Значения основного тона выглядят хорошо (они равны 0, когда устройство находится на столе), но когда рыскание равно 0, компас указывает на запад. Что не так?CMAttitudeReferenceFrameXTrueNorthZVertical не указывает на север
[self.motionManager startDeviceMotionUpdatesUsingReferenceFrame:CMAttitudeReferenceFrameXTrueNorthZVertical toQueue:[NSOperationQueue currentQueue]
withHandler: ^(CMDeviceMotion *motion, NSError *error){
[self performSelectorOnMainThread:@selector(handleDeviceMotion:) withObject:motion waitUntilDone:YES];
}];
}
}
- (void)handleDeviceMotion:(CMDeviceMotion*)motion {
CMAttitude *attitude = motion.attitude;
double yaw = attitude.yaw * 180/M_PI;
double pitch = attitude.pitch * 180/M_PI;
double roll = attitude.roll * 180/M_PI;
self.xLabel.text = [NSString stringWithFormat:@"%7.4f", yaw];
self.yLabel.text = [NSString stringWithFormat:@"%7.4f", pitch];
self.zLabel.text = [NSString stringWithFormat:@"%7.4f", roll];
[self sendDeviceAttitudeLogWithYaw:yaw pitch:pitch roll:roll];
}
Благодарим Вас за прекрасное описание! Теперь я понимаю. – am1kk
Если мой ответ помог вам и был прав, пожалуйста, примите его (галочка). Благодаря! – matt
Это великолепно! Я включил приложение компаса на своем iPad и всегда находил разрыв в 90 ° между севером и голосом телефона. –