Для векторов вращения:
Значение x — это «шаг» телефона: при 0 он обращен лицом вверх, при -1, 1 он обращен к земле. Это вращается вокруг оси x на диаграмме справа выше.
Значение y — это «рыскание» телефона: при уменьшении рыскания происходит вращение против часовой стрелки, при увеличении — по часовой стрелке вокруг оси y.
Значение z — это «прокрутка» телефона: увеличение или уменьшение прокрутки вращает телефон вокруг оси z.
Каждая из координат имеет значение от -1 до 1, потому что они являются тригонометрическими функциями. В документации Android указано, что они x,y ,z равны последним трем компонентам единичного кватерниона (cos(θ/2), xsin(θ/2), ysin(θ/2), z*sin(θ /2)). Использование кватернионов выходит за рамки моих знаний, но вот учебник, если вы хотите узнать, как они работают. http://3dgep.com/understanding-quaternions/
Способ, которым я понял, как понять эти значения, пришел из игры с шагом/рысканием/креном телефона в этом API для имитации движения на телефонах Android https://code.google.com/p/openintents./wiki/SensorSimulator
Например, телефон с отклонением от курса 0, шагом 0 и вращением 0 лежит горизонтально, экраном вверх (к небу), а верхняя часть телефона направлена на север (снова поиграйте с SensorSimulator, и вы Я буду лучше представлять это, это действительно трудно объяснить словами)
Если вы хотите иметь простой способ вычисления ссылки на систему координат Земли, вызовите getRotationMatrix() в вашем SensorManager: документ для Android
Вот демонстрация программы, использующей векторы поворота: https://android.googlesource.com/platform/development/+/master/samples/ApiDemos/src/com/example/android/apis/os/RotationVectorDemo.java а>
person
Keith Aylwin
schedule
16.11.2014