Con iOS5, la frecuencia de actualización de la lectura de datos brutos de Compass, CLHeading
, disminuyó drásticamente. Esto hizo que mi aplicación de realidad aumentada fuera inutilizable, ya que depende de una lectura cercana a tiempo real de los datos brutos de la brújula.iOS5: baja tasa de actualización de las lecturas CLHeading -> cambiar a CoreMotion es problemático
Por lo tanto, ahora estoy tratando de cambiar a CoreMotion. Esto proporciona los datos del magnetómetro más actualizada con frecuencia:
cmManager = [[CMMotionManager alloc] init];
[cmManager startMagnetometerUpdates];
A continuación, puedo acceder al momento magneticField
datos que quiero durante el juego:
CMMagneticField magneticField = cmManager.magnetometerData.magneticField;
El problema que tengo es la siguiente: Los datos de CMMagneticField
se en una unidad diferente, entonces datos CLHeading
x/y/z.
Me gustaría convertir los datos CMMagneticField
x/y/z a las mismas unidades que CLHeading/CLHeadingComponentValue son - para poder usar mi código AR existente.
aquí un par de lecturas:
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