El método Android getOrientation () devuelve malos resultados

Estoy creando la aplicación 3D Compass.

Estoy usandogetOrientation Método para obtener orientación (casi la misma implementación comoaquí). Si coloco el teléfono en la mesa, funciona bien, pero cuando la parte superior del teléfono apunta al cielo (menos el eje Z en la imagen; la esfera es la Tierra) getOrientation comienza a dar resultados realmente malos. Da valores para el eje Z entre 0 y 180 grados en unos pocos grados reales. ¿Hay alguna manera de suprimir este comportamiento? Creé unpequeño video Lo que describe el problema (perdón por la mala calidad). Gracias por adelantado.

Solución: Al rotar el modelo, hay diferencia entre:

<code>gl.glRotatef(_angleY, 0f, 1f, 0f); //ROLL
gl.glRotatef(_angleX, 1f, 0f, 0f); //ELEVATION
gl.glRotatef(_angleZ, 0f, 0f, 1f); //AZIMUTH


gl.glRotatef(_angleX, 1f, 0f, 0f); //ELEVATION
gl.glRotatef(_angleY, 0f, 1f, 0f); //ROLL
gl.glRotatef(_angleZ, 0f, 0f, 1f); //AZIMUTH
</code>

Respuestas a la pregunta(4)

Su respuesta a la pregunta