如何从Android中的旋转矩阵中获取四元数?

时间:2012-02-15 17:33:09

标签: android android-sensors quaternions

我试图获取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旋转矩阵,并且在方向上我有一个float [3]向量,其中我有方位角,俯仰和滚动。

我现在如何获得四元数?

1 个答案:

答案 0 :(得分:5)

我不会使用欧拉角(滚动,俯仰,偏航),它几乎是您应用的screws up the stability

至于将旋转矩阵转换为四元数,谷歌说: