Я пытаюсь получить ориентацию устройства Android, и мне нужно, чтобы он был в структуре кватерниона (float[4]
в основном).
То, что у меня сейчас есть, это:
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER){
last_acc = (float[])event.values.clone();
}
else if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD){
last_mag = (float[])event.values.clone();
}
if (last_acc != null && last_mag != null){
SensorManager.getRotationMatrix(rotation, inclination, last_acc, last_mag);
SensorManager.getOrientation(rotation, orientation);
В «вращении» у меня есть матрица вращения 4x4, а в ориентации у меня есть вектор с плавающей точкой [3], где у меня есть азимут, тангаж и крен.
Как мне теперь получить кватернион?