如何正确使用 CMAttitude:multiplyByInverseOfAttitude?
假设有一台 iOS5 设备平放在桌子上,在启动 CMMotionManager 后:
CMMotionManager *motionManager = [[CMMotionManager alloc]init];
[motionManager startDeviceMotionUpdatesUsingReferenceFrame:
CMAttitudeReferenceFrameXTrueNorthZVertical];
稍后,将获取CMDeviceMotion对象:
CMDeviceMotion *deviceMotion = [motionManager deviceMotion];
我期望[deviceMotion attitude]反映设备相对于真北的旋转。
通过观察,[deviceMotion userAcceleration]报告设备参考系中的加速度。也就是说,将设备从一侧移动到另一侧(保持在桌子上平放)会在x轴上注册加速度。将设备旋转90°(仍然保持平放状态),并将其从一侧移动到另一侧,仍然会报告x轴加速度。
如何正确地转换[deviceMotion userAcceleration]以获取南北/东西方向的加速度而不是左右/前后方向?
CMAttitude multiplyByInverseOfAttitude似乎是不必要的,因为已经指定了参考系,并且从文档中无法确定如何将姿态应用于CMAcceleration。