使用ios5,罗盘原始数据读取的更新频率显著下降。这使得我的增强现实应用程序无法使用,因为它依赖于对原始罗盘数据的实时读取。
所以我现在想换成CoreMotion。这提供了更频繁更新的磁力仪数据:

cmManager = [[CMMotionManager alloc] init];
[cmManager startMagnetometerUpdates];

然后我可以在游戏中随时访问CLHeading数据:
CMMagneticField magneticField = cmManager.magnetometerData.magneticField;

我的问题是:
magneticField中的数据位于不同的单元中,然后是CMMagneticFieldx/y/z数据。
我想把CLHeading x/y/z数据转换成与CordDe/CalHealEngultCuffTalm值相同的单位,以便能够使用我现有的AR代码。
以下是一些读数:
7.3     /  17.64 /  -39.58          CLHeadingComponentValue X/Y/Z
-103.12 /  88.51 /  -20.05          CMMagneticField

-10.81  /  -34.9 /  -18.6          CLHeadingComponentValue X/Y/Z
-121.00 /   33.29 /  3.1           CMMagneticField

-20.8  /  -38.0 /   -4.0          CLHeadingComponentValue X/Y/Z
-132.9 /   32.2 /  14.4           CMMagneticField

最佳答案

文档中与此相关的唯一引用是,报告的clheadingcomponentvalue被规范化为-128到+128的范围。但对我来说,似乎还需要其他的校准方法。

08-05 22:35