O método getOrientation () do Android retorna resultados ruins

Estou criando o aplicativo 3D Compass.

estou a usargetOrientation método para obter orientação (quase a mesma implementação comoAqui). Se eu colocar o telefone na mesa, ele funciona bem, mas quando a parte superior do telefone aponta para o céu (menos o eixo Z na imagem; a esfera é a Terra) getOrientation começa a dar resultados realmente ruins. Fornece valores para o eixo Z entre 0 e 180 graus em alguns graus reais. Existe alguma maneira de suprimir esse comportamento? Eu criei umpequeno video o que descreve o problema (desculpe pela má qualidade). Desde já, obrigado.

Solução: Quando você gira modelo, há diferença 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>

questionAnswers(4)

yourAnswerToTheQuestion