Con iOS5 l'aggiornamento frequentemente della lettura dei dati grezzi Compass, CLHeading
, è diminuito drasticamente. Ciò ha reso inutilizzabile la mia app per realtà aumentata, poiché dipende da una lettura quasi in tempo reale dei dati della bussola grezza.iOS5: bassa frequenza di aggiornamento delle letture CLHeading -> passaggio a CoreMotion è problematico
Pertanto, sto cercando di passare a CoreMotion. Ciò fornisce più frequentemente aggiornato i dati del magnetometro:
cmManager = [[CMMotionManager alloc] init];
[cmManager startMagnetometerUpdates];
posso quindi accedere in qualsiasi momento i dati magneticField
voglio durante il gioco:
CMMagneticField magneticField = cmManager.magnetometerData.magneticField;
Il problema che ho è il seguente: I dati in CMMagneticField
sono in un'unità diversa quindi i dati CLHeading
x/y/z.
Desidero convertire i dati CMMagneticField
x/y/z nelle stesse unità di CLHeading/CLHeadingComponentValue - per poter utilizzare il mio codice AR esistente.
Ecco un paio di letture:
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