【发布时间】:2011-12-18 12:04:57
【问题描述】:
CMAttitude:multiplyByInverseOfAttitude 的正确使用方法是什么?
假设一个 iOS5 设备平放在桌子上,在启动 CMMotionManager 之后:
CMMotionManager *motionManager = [[CMMotionManager alloc]init];
[motionManager startDeviceMotionUpdatesUsingReferenceFrame:
CMAttitudeReferenceFrameXTrueNorthZVertical];
之后,得到CMDeviceMotion对象:
CMDeviceMotion *deviceMotion = [motionManager deviceMotion];
我希望 [deviceMotion 姿态] 反映设备从正北方向的旋转。
通过观察,[deviceMotion userAcceleration] 报告设备参考系中的加速度。也就是说,将设备左右移动(使其平放在桌面上)会记录 x 轴上的加速度。将设备旋转 90°(仍然是平的)并左右移动设备仍会报告 x 加速度。
将 [deviceMotion userAcceleration] 转换为获得南北/东西加速度而不是左右/前进后退的正确方法是什么?
CMAttitude multiplyByInverseOfAttitude 似乎没有必要,因为已经指定了参考框架,并且从文档中不清楚如何将姿态应用于 CMAcceleration。
【问题讨论】:
标签: ios core-motion