Metoda Android getOrientation () zwraca złe wyniki

Tworzę aplikację 3D Compass.

używamgetOrientation metoda uzyskania orientacji (prawie taka sama implementacja jaktutaj). Jeśli umieściłem telefon na stole, to działa dobrze, ale kiedy wierzchołek telefonu wskazuje niebo (minus oś Z na obrazie, kula jest Ziemią), getOrientation zaczyna dawać naprawdę złe wyniki. Daje wartości dla osi Z od 0 do 180 stopni w kilku rzeczywistych stopniach. Czy jest jakiś sposób na powstrzymanie tego zachowania? Stworzyłemmały film co opisuje problem (przepraszam za złą jakość). Z góry dziękuję.

Rozwiązanie: Podczas obracania modelu istnieje różnica między:

<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