Я создаю приложение 3D Compass.
Я использую метод getOrientation для получения ориентации (почти такой же реализации, как здесь). Если я кладу телефон на стол, он работает хорошо, но когда верхняя часть телефона указывает на небо (минус ось Z на картинке; сфера — это Земля)getOrientation начинает давать очень плохие результаты. Он дает значения для оси Z от 0 до 180 градусов в нескольких реальных градусах. Есть ли способ подавить это поведение? Я создал маленькое видео , описывающее проблему, (извините за плохое качество). Заранее спасибо.
Решение: При ротации модели существует разница между:
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