iOS5: низкая частота обновления показаний CLHeading -> переход на CoreMotion проблематичен - PullRequest
5 голосов
/ 25 октября 2011

В 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

1 Ответ

0 голосов
/ 07 февраля 2012

Единственная ссылка в документации, относящейся к этому, заключается в том, что сообщенное значение CLHeadingComponentValue нормализовано в диапазоне от -128 до +128. Но мне кажется, что применяется какой-то другой вид калибровки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...