Страница 1 из 1

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

Добавлено: 25 фев 2015, 21:43
Димас
Устанавливал кучу разных программ, ни одна не устроила. Точнее, ессть одна, очень даже приличная(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 )

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

Добавлено: 25 фев 2015, 21:53
bedi

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

Добавлено: 26 фев 2015, 06:56
Димас
Нет, мне нужен вектор, а не градусы. Все программы работающие с углами Эйлера (roll, pitch,yaw) выдают бред при pitch около 90.

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

Добавлено: 26 фев 2015, 08:12
Проф. Преображенский
http://stackoverflow.com/questions/6703 ... ter-sensor
http://developer.android.com/guide/topi ... rview.html
http://www.stonekick.com/blog/magnomete ... id-device/

Магнетометр сенсор очень чувствительный и дома дает всякий бред из-за наводок. Кроме того нуждается в калибровке.

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

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

Изображение

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