Какими движениями управляет акселерометр на iOS?

Документация разработчика Apple объясняет движение этого изображения:

Документация для разработчиков

Сейчас я немного запутался... потому что, проведя некоторые тесты, я понял, что акселерометр обрабатывает не перемещение по оси, а небольшой набор вращений... например, если я перемещаю свое устройство по оси X, ничего не происходит... если я поверну его на Z, я получу ускорение на X.

Вот код, который я использую для своего теста:

-(void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration{ 

    [self.sliderX setProgress:fabsf(acceleration.x)];
    [self.sliderY setProgress:fabsf(acceleration.y)];
    [self.sliderZ setProgress:fabsf(acceleration.z)];
}

Изменить ------ Поведение, которое я не могу понять, связано с вращением по одной оси, как я уже говорил... при вращении по оси Z на 30° я получаю непрерывное ускорение... при перемещении по X топор я получаю ускорение только для короткого и быстрого движения.


person MatterGoal    schedule 05.01.2012    source источник


Ответы (1)


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

Итак, если бы у вас был iPhone на столе, у вас должно было бы быть ускорение по оси z. Если вы уравновесили его на одной из его длинных сторон, вы должны получить ускорение по оси x. Если ваш iPhone падал на землю, у вас должен быть вектор ускорения (0, 0, 0).

Перемещение iPhone, такое скольжение, вызовет эффект, но он, скорее всего, будет небольшим по сравнению с гравитацией, поэтому его будет легко не заметить.

Таким образом, вращение по оси z приводит к долговременным изменениям, потому что вы изменили направление гравитации относительно устройства. Перевод на x дает временное изменение, потому что вы кратковременно ускоряете устройство, а затем прекращаете ускорение.

person Tommy    schedule 05.01.2012