Статьи

31 день Windows 8 для HTML5 | День № 26: Гирометр

Эта статья посвящена Дню № 26 из 31-й серии Windows 8 . Каждая из статей этой серии будет опубликована как для HTML5 / JS, так и для XAML / C # . Вы можете найти дополнительные ресурсы, загрузки и исходный код на нашем сайте .логотип

В детстве я всегда удивлялся гироскопу. Я бы нашел все, что мог, чтобы сбалансировать эту вещь. Я всегда, хотя физика была очень интересной, но, как ни в чем другом, если ты не используешь ее постоянно, ты начинаешь забывать ее кусочки. Как мы видели за последние несколько дней, современные машины стали интересным физическим экспериментом. Вместо того, чтобы просто играть в прошлые дни, мы можем использовать эти датчики для реализации некоторых очень интересных функций.

Сегодня мы рассмотрим еще один датчик, который мы можем найти в устройстве с Windows 8: гирометр. Гирометр измеряет угловую скорость или вращательное движение. Гирометр может легко дополнить акселерометр, чтобы создать один очень продвинутый игровой контроллер. При совместном использовании акселерометра, измеряющего линейное движение, и гирометра, измеряющего вращательную силу, вы можете создавать такие вещи, как довольно злой игровой контроллер.

Работа с гирометром такая же, как и с другими нашими датчиками. Всего несколько простых шагов, и мы получаем данные:

  • Инициализируйте датчик.
  • Если это доступно,
    • создайте обработчик события, измененный для чтения .
    • В обработчиках событий возьмите данные с датчика и запишите их на экран.

Вот мой полный код, и он выглядит пугающе, как и другие датчики.

    var _x, _y, _z;

    function onReadingChanged(e) {
        _x.innerText = e.reading.angularVelocityX.toFixed(2);
        _y.innerText = e.reading.angularVelocityY.toFixed(2);
        _z.innerText = e.reading.angularVelocityZ.toFixed(2);
    }

    function onShaken(e) {
        _wasShaken.innerText = e.timestamp;
    }

    function getDomElements() {
        _x = document.querySelector("#x");
        _y = document.querySelector("#y");
        _z = document.querySelector("#z");
    }

    function startAccelerometer() {
        var gyro = Windows.Devices.Sensors.Gyrometer.getDefault()

        if (gyro) {
            var minimumReportInterval = gyro.minimumReportInterval;
            var reportInterval = minimumReportInterval > 16 ? minimumReportInterval : 25;
            gyro.reportInterval = reportInterval;

            gyro.addEventListener("readingchanged", onReadingChanged);
        }

    }

Еще раз, никаких реальных сюрпризов здесь. Мы получаем наши данные в той же базовой форме, что и другие датчики. Настоящая магия — это ваше программное обеспечение, которое использует данные, которые оно измеряет.

Резюме

Сегодня мы кратко рассмотрели получение данных от нашего гирометра. Работа с каждым из этих датчиков практически одинакова, но то, что вы делаете с ними, полностью зависит от вас.

Если вы хотите загрузить мой рабочий образец, использующий код из этой статьи, нажмите значок ниже:

 downloadHTML

Завтра мы посмотрим на инклинометр. Увидимся позже!

downloadTheTools