В iOS5 частота обновления чтения необработанных данных Compass, CLHeading
, резко упала.Это сделало мое приложение дополненной реальности непригодным для использования, потому что оно зависит от чтения необработанных данных компаса, близких к реальному времени.
Поэтому я сейчас пытаюсь перейти на CoreMotion.Это обеспечивает более частые обновления данных магнитометра:
cmManager = [[CMMotionManager alloc] init];
[cmManager startMagnetometerUpdates];
Я могу получить доступ к данным magneticField
в любое время, когда захочу во время игры:
CMMagneticField magneticField = cmManager.magnetometerData.magneticField;
У меня возникает следующая проблема:Данные в CMMagneticField
находятся в другой единице, чем CLHeading
x / y / z data.
Я хотел бы преобразовать данные 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