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