Какими движениями управляет акселерометр на iOS? - PullRequest
1 голос
/ 05 января 2012

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

Developer documentation

Сейчас я немного сбит с толку ... потому что, выполняя некоторые тесты, я получаю, что акселерометр не обрабатывает перемещение по оси, а выполняет небольшой набор поворотов ... например, если я перемещаю свое устройство на 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 я получаю ускорение только на короткое время и быстрое движение.

1 Ответ

2 голосов
/ 05 января 2012

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

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

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

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

...