Как определить угол поворота Android устройства?

Все, что вы хотели знать о программизме, но боялись спросить.
Ответить
Аватара пользователя
Димас
Житель
Сообщения: 593
Зарегистрирован: 22 июл 2005, 16:58
Откуда: Север->Торонто

Как определить угол поворота Android устройства?

Сообщение Димас »

Устанавливал кучу разных программ, ни одна не устроила. Точнее, ессть одна, очень даже приличная(OARS) но вектор поворота какой то непонятный.

Телефон лежит на столе, направлен на юг:
RotX, RotY, RotZ
-0.016, 0.011, 0.996
Чудненько! Теперь повернём на север:
RotX, RotY, RotZ
-0.000, 0.014, -0.103

И что это за вектор такой? И что с ним делать? Я ожидал близко к 0.0, 0.0, -1.0
Хочется прогаммулю написать, чтоб cоздавала 3D трек без GPS. Пока на ориентации споткнулся(не сексуальной :D )
Аватара пользователя
bedi
Графоман
Сообщения: 5525
Зарегистрирован: 01 мар 2006, 00:58
Откуда: Blr→IL→Coquitlam

Re: Как определить угол поворота Android устройства?

Сообщение bedi »

Аватара пользователя
Димас
Житель
Сообщения: 593
Зарегистрирован: 22 июл 2005, 16:58
Откуда: Север->Торонто

Re: Как определить угол поворота Android устройства?

Сообщение Димас »

Нет, мне нужен вектор, а не градусы. Все программы работающие с углами Эйлера (roll, pitch,yaw) выдают бред при pitch около 90.
Аватара пользователя
Проф. Преображенский
Графоман
Сообщения: 20276
Зарегистрирован: 08 ноя 2006, 11:10

Re: Как определить угол поворота Android устройства?

Сообщение Проф. Преображенский »

http://stackoverflow.com/questions/6703 ... ter-sensor
http://developer.android.com/guide/topi ... rview.html
http://www.stonekick.com/blog/magnomete ... id-device/

Магнетометр сенсор очень чувствительный и дома дает всякий бред из-за наводок. Кроме того нуждается в калибровке.
Аватара пользователя
Димас
Житель
Сообщения: 593
Зарегистрирован: 22 июл 2005, 16:58
Откуда: Север->Торонто

Re: Как определить угол поворота Android устройства?

Сообщение Димас »

Проф. Преображенский писал(а):Магнетометр сенсор очень чувствительный и дома дает всякий бред из-за наводок. Кроме того нуждается в калибровке.
Дело не в этом, даже из-за мощных паразитных полей показание компаса не могут быть типа 420.
Оказалось, программа показывает не вектор поворота а "the last three components of a unit quaternion (cos(θ/2), x*sin(θ/2), y*sin(θ/2), z*sin(θ/2))", что легко переводится в матрицу вращения:

Изображение

Помножив вектор ускорения на эту матрицу получаем вектор ускорения в мировой системе координат. Работает отлично.
Ответить