Получить заголовок от 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 ответ

Я наконец-то воспользовался этим ответом, который довольно хорошо работает с точки зрения стабильности движения

Другие вопросы по тегам