Угол наклона iPhone — использовать гироскоп?

Я хотел бы знать, на сколько градусов наклоняется iPhone, когда его держат вертикально, то есть, если я направлю iPhone вверх, я хотел бы знать, на сколько градусов он смотрит вверх? Я думаю, что могу использовать для этого гироскоп и движение ядра, и я думаю, что мне нужен шаг, однако шаг — это "скорость" в радианах в секунду. Меня не очень интересует, как быстро пользователь двигал iPhone, меня интересует только угол наклона. Итак, если я направляю телефон вверх, чтобы сделать снимок, я хотел бы знать угол наведения - есть идеи ??

Спасибо.


person geekyaleks    schedule 23.07.2012    source источник


Ответы (1)


Данные гироскопа представлены в радианах в секунду, но вам нужно свойство CMMotionManager.attitude. Он показывает положение объекта в радианах относительно некоторой системы отсчета.

создайте переменную класса motionManager и инициализируйте:

 motionManager = [[CMMotionManager alloc] init];
    motionManager.deviceMotionUpdateInterval = 0.1f;
    [motionManager startDeviceMotionUpdatesToQueue:[NSOperationQueue currentQueue] withHandler:^(CMDeviceMotion *motion, NSError *error) {
        [self processMotion:motion];
    }];

обработайте обновления, вы ищете шаг, но в этом примере он покажет вам все три значения, чтобы вы могли поиграть и решить, что вам нужно:

    -(void)processMotion:(CMDeviceMotion*)motion {
        NSLog(@"Roll: %.2f Pitch: %.2f Yaw: %.2f", motion.attitude.roll, motion.attitude.pitch, motion.attitude.yaw);
}

это углы Эйлера, у вас также есть возможность получить матрицу вращения или формат кватерниона. Каждый со своими преимуществами и недостатками.

person Andrei G.    schedule 23.07.2012
comment
Рад, что это помогло. :) Чтобы немного расширить комментарий @KarolyS, посмотрите здесь meta.stackexchange.com/questions/5234/ - person Andrei G.; 24.07.2012