Различия между использованием AccelerometerData и gyroData для получения абсолютного вращения телефона?

Я получаю абсолютное вращение телефона (минус ось z) с помощью акселерометра телефона примерно так:

motionManager.startAccelerometerUpdates()
...
if let data = motionManager.accelerometerData {
    let x = data.acceleration.x
    let y = data.acceleration.y
}

Я знаю, что его также можно получить с помощью motionManager.startGyroUpdates(), как указано в этом ответе: Получите абсолютное вращение с помощью CMDeviceMotion ?

Я хотел бы знать, в чем разница между использованием акселерометра и гироскопа для этой цели. Один из них быстрее, точнее и менее требователен к ресурсам, чем другой?


person lisovaccaro    schedule 15.07.2014    source источник


Ответы (1)


Акселерометр измеряет скорость изменения линейного ускорения. В основном используется для перевода в векторах x, y и z.

Гироскоп предназначен для изменения скорости вращения векторов x, y, z.

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

person bstahlhood    schedule 15.07.2014
comment
В качестве примера: если вы прорежете телефон так, чтобы сила тяжести находилась на оси Z, и вращайте телефон вокруг оси Z с акселерометром в качестве центра, ускорение не будет обнаружено, а гироскоп обнаружит изменение вращения. - person zaph; 15.07.2014