使用iOS5,Compass原始数据读取的更新频率CLHeading
急剧下降。这使得我的增强现实应用程序无法使用,因为它依赖于原始罗盘数据的近实时读取。
因此我现在正试图切换到CoreMotion。这提供了更频繁更新的磁力计数据:
cmManager = [[CMMotionManager alloc] init];
[cmManager startMagnetometerUpdates];
然后,我可以随时在游戏中访问magneticField
数据:
CMMagneticField magneticField = cmManager.magnetometerData.magneticField;
我遇到的问题如下:
CMMagneticField
中的数据与CLHeading
x / y / z数据位于不同的单位。
我想将CMMagneticField
x / y / z数据转换为与CLHeading / CLHeadingComponentValue相同的单位 - 以便能够使用我现有的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
答案 0 :(得分:0)
与此相关的文档中唯一的参考是报告的CLHeadingComponentValue被标准化为-128到+128的范围。但对我来说,似乎还应用了其他类型的校准。