Если у меня есть простая веб-страница и script, это выглядит так:
<body>
<div id="alpha">a</div>
<div id="beta">b</div>
<div id="gamma">g</div>
</body>
<script>
window.addEventListener('deviceorientation', function(event) {
var alpha = event.alpha;
var beta = event.beta;
var gamma = event.gamma;
document.getElementById("alpha").innerHTML = alpha;
document.getElementById("beta").innerHTML = beta;
document.getElementById("gamma").innerHTML = gamma;
}, false);
</script>
Я могу открыть его в мобильном Firefox для Android, и он выведет 3 номера, которые выглядят следующим образом:
89.256125
3.109375
0.28125
Где, когда я поворачиваю устройство, цифры меняются в зависимости от оси вращения. Я заметил, что значения для "alpha" действительно шумные - они отскакивают без остановок, даже если телефон находится в состоянии покоя на моем столе, в то время как остальные два остаются устойчивыми. Я понимаю, что альфа - это мой заголовок. Мне любопытно, получается ли это получить "альфа" от компаса (который имеет проблемы с шумом), а два других - от гироскопа?
Другая проблема заключается в изменении шага, по какой-то причине заголовок тоже меняется, даже если я фактически не изменю заголовок. Мне просто интересно, почему это так и как это можно исправить?
Кроме того, поскольку гироскоп измеряет скорость angular, я предполагаю, что этот прослушиватель событий интегрирует его автоматически - алгоритм интеграции так же хорош, как любой? Использует ли акселерометр для коррекции дрейфа?
В этом видеоролике google tech, с 15:00 до 19:00, спикер говорит об исправлении дрейфа, присущего гироскопу, с помощью ускорителя, а также для калибровки ориентации по отношению к гравитации: http://www.youtube.com/watch?v=C7JQ7Rpwn2k Как я могу это сделать?
Спасибо за любые идеи, которые могут быть у всех.