Как правильно использовать CMAttitude: multiplyByInverseOfAttitude?
Предположим, что устройство iOS5 лежит на столе горизонтально , после запуска CMMotionManager с:
CMMotionManager *motionManager = [[CMMotionManager alloc]init];
[motionManager startDeviceMotionUpdatesUsingReferenceFrame:
CMAttitudeReferenceFrameXTrueNorthZVertical];
Позже будут получены объекты CMDeviceMotion:
CMDeviceMotion *deviceMotion = [motionManager deviceMotion];
Я ожидаю, что [deviceMotion position] отражает поворот устройства от Истинного Севера.
По наблюдениям, [deviceMotion userAcceleration] сообщает об ускорении в опорном кадре устройства. То есть, перемещая устройство из стороны в сторону (удерживая его ровно на столе), ускорение регистрируется по оси абсцисс.Поворот устройства на 90 ° (по-прежнему плоский) и перемещение устройства из стороны в сторону по-прежнему сообщает об ускорении.
Каков правильный способ преобразования [deviceMotion userAcceleration] для получения ускорения Север-Юг / Восток-Запад, а не ускорение влево-вправо / вперед-назад?
CMAttitude multiplyByInverseOfAttitude кажется ненужным, поскольку опорный кадр уже указан и из документации неясно, как применить отношение к CMAcceleration.