Получить заголовок от RotationMatrix в iOS
Я получаю RotationMatrix от моего CMMotionManager и хочу рассчитать из него направление моего телефона, например, 38 градусов северной широты (и избегать CLLocationManager), чтобы сделать более точный компас:
[motionManager startDeviceMotionUpdatesUsingReferenceFrame:CMAttitudeReferenceFrameXTrueNorthZVertical toQueue:[NSOperationQueue mainQueue] withHandler:^(CMDeviceMotion *deviceMotion, NSError *error) {
CMRotationMatrix rm = deviceMotion.attitude.rotationMatrix;
// Get the heading.
motionHeading = M_PI + atan2(rm.m22, rm.m12);
motionHeading = motionHeading*180/M_PI;
Однако это работает только тогда, когда телефон лежит на столе. Что я должен использовать в качестве формулы, чтобы учесть все позиции телефона в моей руке, находясь в ландшафтном режиме, и устройство, смотрящее выше или ниже горизонта?
Благодарю.
1 ответ
Я наконец-то воспользовался этим ответом, который довольно хорошо работает с точки зрения стабильности движения