flight-indicators-js
Version:
This module allows you to display high quality flight indicators using html, css and SVG images.
45 lines (37 loc) • 1.97 kB
JavaScript
import FlightIndicators from '../esm/module-flight-indicators.mjs'
const airspeedElement = document.querySelector('#airspeed')
const attitudeElement = document.querySelector('#attitude')
const altimeterElement = document.querySelector('#altimeter')
const coordinatorElement = document.querySelector('#coordinator')
const headingElement = document.querySelector('#heading')
const verticalElement = document.querySelector('#vertical')
const airspeed = new FlightIndicators(airspeedElement, FlightIndicators.TYPE_AIRSPEED)
const attitude = new FlightIndicators(attitudeElement, FlightIndicators.TYPE_ATTITUDE)
const altimeter = new FlightIndicators(altimeterElement, FlightIndicators.TYPE_ALTIMETER)
const coordinator = new FlightIndicators(coordinatorElement, FlightIndicators.TYPE_TURN_COORDINATOR)
const heading = new FlightIndicators(headingElement, FlightIndicators.TYPE_HEADING)
const vertical = new FlightIndicators(verticalElement, FlightIndicators.TYPE_VERTICAL_SPEED)
// Update at 20Hz
let increment = 0
setInterval(function () {
// Airspeed update
airspeed.updateAirSpeed(80 + 80 * Math.sin(increment / 10))
// airspeed.resize(600)
// Attitude update
attitude.updateRoll(30 * Math.sin(increment / 10))
attitude.updatePitch(50 * Math.sin(increment / 20))
// attitude.resize(600)
// Altimeter update
altimeter.updateAltitude(10 * increment);
altimeter.updatePressure(1000 + 3 * Math.sin(increment / 50))
// altimeter.resize(600)
// altimeter.showBox()
// TC update - note that the TC appears opposite the angle of the attitude indicator, as it mirrors the actual wing up/down position
coordinator.updateCoordinator((30 * Math.sin(increment / 10)) * -1)
// coordinator.resize(600)
// Heading update
heading.updateHeading(increment)
// Vertical speed update
vertical.updateVerticalSpeed(2 * Math.sin(increment / 10))
increment++
}, 50)