Вопрос об акселерометре/гироскопе IOS

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

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

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

Спасибо.


person El Guapo    schedule 22.09.2011    source источник


Ответы (2)


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

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

– статья в Википедии об atan2.

person Community    schedule 23.09.2011

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

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

person Kay    schedule 23.09.2011