Разница между CMAccelerometerData и CMDeviceMotion

Может кто-нибудь объяснить разницу между CMAccelerometerData и CMDeviceMotion.

Мне кажется, что значения ускорения CMAccelerometerData являются необработанными значениями, так как данные CMDeviceMotion каким-то образом интерполируются или что-то в этом роде.


person gpichler    schedule 31.05.2014    source источник
comment
Кому интересно, я нашел лучшее объяснение в этом посте: Искусство Core Motion в iOS   -  person inigo333    schedule 04.08.2016


Ответы (2)


Экземпляр класса CMAccelerometerData представляет событие акселерометра. Это измерение ускорения по трем пространственным осям в момент времени.

Экземпляр CMDeviceMotion инкапсулирует измерения положения, скорости вращения и ускорения устройства.

Разница в том, что CMDeviceMotion включает данные гироскопа, акселерометра и компаса, тогда как CMAccelerometerData содержит только необработанные данные акселерометра.

person zaph    schedule 31.05.2014

Это различия между CMAccelerometerData и cmdevicemotion.

  1. Необработанные данные акселерометра представляют собой сумму всех измеренных ускорений, то есть комбинацию силы тяжести и текущего ускорения устройства.
  2. Данные о движении устройства являются результатом слияния всех трех датчиков, то есть акселерометра, гироскопа и магнитометра. Таким образом устраняются смещения и ошибки (теоретически), а оставшиеся данные об ускорении разделяются на гравитацию и ускорение для удобного использования.

Чтобы сравнить оба, вы должны сравнить CMAccelerometerData.acceleration с CMDeviceMotion.userAcceleration + CMDeviceMotion.gravity, чтобы сравнить подобное с подобным.

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

person vaibhav    schedule 31.05.2014