从iOS中的RotationMatrix获取标题

时间:2015-01-12 15:16:42

标签: ios compass-geolocation rotational-matrices heading cmmotionmanager

我从我的CMMotionManager收到RotationMatrix并希望计算我的手机的标题,例如北纬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 个答案:

答案 0 :(得分:0)

我最终使用了answer,这在运动稳定性方面非常有效。