Основные значения гироскопа движения 360 градусов

Я тестирую Core Motion и использую гироскоп. Прямо сейчас я получаю значения, которые я не понимаю. Я предполагал, что для каждого x, y и z я получу значение от 0 до 360, что будет полным оборотом, но это не так.

[self.motionManager startGyroUpdatesToQueue:[NSOperationQueue mainQueue] withHandler:^(CMGyroData *gyroData, NSError *error) {
     NSString *x = [NSString stringWithFormat:@"%.02f",gyroData.rotationRate.x];
     NSLog(@"X: %@", x);

     NSString *y = [NSString stringWithFormat:@"%.02f",gyroData.rotationRate.y];
     NSLog(@"Y: %@", y);

     NSString *z = [NSString stringWithFormat:@"%.02f",gyroData.rotationRate.z];
     NSLog(@"Z: %@", z);

    frequency = gyroData.rotationRate.y*500;

    float rate = gyroData.rotationRate.z;
    if (fabs(rate) > .2) {
        float direction = rate > 0 ? 1 : -1;
        rotation += (direction * M_PI/90.0)*1000;
        NSLog(@"Rotation: %f", rotation);
    }

 }];

Можно ли получить более удобочитаемые значения поворота? Является ли мое предположение, что я должен получать значения в диапазоне от 0 до 360, неверно?


person Nic Hubbard    schedule 05.01.2012    source источник


Ответы (1)


Значения указаны в радианах, а не в градусах, поэтому они должны быть между 0 и 2Pi. Кроме того, они представляют собой скорость, а не угол. Это радианы в секунду.

person user1118321    schedule 05.01.2012
comment
В порядке. Итак, знает ли устройство, сколько раз я его повернул? - person Nic Hubbard; 05.01.2012
comment
Я так не думаю. Он просто дает вам угловую скорость, с которой он вращается (скажем, Пи / 3 радиана в секунду). Ваше приложение должно будет отслеживать это с течением времени, чтобы определить, сколько раз оно было повернуто. - person user1118321; 05.01.2012
comment
Итак, как мне узнать, под каким углом находится телефон? Разве не для этого можно использовать гироскоп? Например, приложения с уровнем или игры с мячом? - person Nic Hubbard; 05.01.2012
comment
Ознакомьтесь с этим ответом. - person user1118321; 05.01.2012