Android获取四元数数据

L3M*_*M0L 1 android quaternions android-sensors

快速简单。如何从传感器获取四元数数据?基本上我需要:

float quaternion_x = ?
float quaternion_y = ?
float quaternion_z = ?
float quaternion_w = ?
Run Code Online (Sandbox Code Playgroud)

我有这样的事情:

if (event.sensor.getType() == Sensor.TYPE_ROTATION_VECTOR)
{
    float[] values = event.values;

    float quaternion_x = values[0];
    float quaternion_y = values[1];
    float quaternion_z = values[2];
    float quaternion_w = values[3];  <----- ERROR HERE 
}
Run Code Online (Sandbox Code Playgroud)

我得到一个超出范围的异常的索引,因为值内部只有3个值。根据此页面:http : //developer.android.com/guide/topics/sensors/sensors_motion.html 应该有4个值,还是我理解错了?

cli*_*hir 5

SensorManager班提供了一个辅助函数来为你转换:

SensorManager.getQuaternionFromVector(Q, values);
float[] quaternion_w = Q[0];
float[] quaternion_x = Q[1];
float[] quaternion_y = Q[2];
float[] quaternion_z = Q[3];
Run Code Online (Sandbox Code Playgroud)