2011-09-22 6 views
2

Я хочу написать приложение, которое дает степень положения от некоторой координаты (нижней части телефона).IOS Accelerometer/Gyroscope Вопрос

Например, если я держу телефон под углом 45 градусов, я хочу отобразить: 45 градусов на экране. Если пользователь держит телефон под углом 45 градусов и поворачивает телефон вокруг оси, идущей от ушной части к домашней кнопке, я хочу отобразить этот угол (от 0 до 180 градусов).

Я внедрил акселерометр, и я получил значения x, y, z, однако, как их преобразовать? Я знаю, что они находятся в G (1G, 0.9G, -0.5G на соответствующей оси), но что такое конверсия? Я иду по правильному пути? Должен ли я использовать гироскоп?

Спасибо.

ответ

3

This question имеет пример. Вы можете использовать atan2(y, x) и конвертировать из радианов в градусы с * (180/M_PI).

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

- статья на Википедии atan2

0

Если вы можете рассчитывать на поддержку гироскоп я бы рекомендовал использовать его, потому что вы можете получить (Эйлер) углы непосредственно без каких-либо расчетов. См. iOS - gyroscope sample и следуйте по ссылкам внутри.

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