Git Product home page Git Product logo

avionics_js's Introduction

Avionics JS Build Status Maintainability npm

JavaScript library to make glass EFIS from any phone or tablet. Inspired by Garmin G5. Made by Ivy Knob.

Live Demo

Installation

  • Add @ivyknob/avionics_js to your project (npm -i @ivyknob/avionics_js or yarn add @ivyknob/avionics_js)
  • Run yarn or npm install to install all necessary libraries
  • Include avionics.js to your project

Using CDN

If you want to just include js on your page from the hosting, just add https://unpkg.com/@ivyknob/avionics_js as a script source

Usage

Quickstart example

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Avionics JS</title>
  <script type="text/javascript" defer src="https://unpkg.com/@ivyknob/avionics_js"></script>
  <script type="text/javascript">
    document.addEventListener("DOMContentLoaded", function() {
      var avionics = new Avionics(document.body);
      avionics.pitch = 10;
      avionics.roll = 5;
      avionics.heading = 300;
      avionics.altitude = 800;
      avionics.airspeed = 150;
      avionics.selectedAltitude = 1000;
      avionics.verticalSpeed = 2;
      avionics.groundSpeed = 130;
      avionics.qnh = 1030.15;
      avionics.speedBar = [40, 80, 180, 200];
    })
  </script>
</head>
<body>
</body>
</html>

Look at the examples code here

Initialization

At first, you need to assign avionics.js to html element:

var avionics = new Avionics(nodeElement);

After initialization, you can set values:

avionics.pitch = 10;

API

Here is the list of available setter-methods:

Available setter-methods
airspeed
altitude
roll
pitch
verticalSpeed
heading
groundSpeed
selectedAltitude
qnh
// You can run it in browser console to see current available methods
Object.getOwnPropertyNames(avionics.__proto__).filter(i => !i.startsWith('_') && i !== 'constructor')

Roll

Roll value of the aircraft, deg. Increase roll value to proceed counter clockwise rotation, negative for clockwise. Acceptable values from -180 to 180 deg. Setter name: roll.

Pitch

Pitch values of the aircraft, def. Nose up is for upper semisphere, down for lower. Acceptable values from -180 to 180 deg. Setter name: roll.

Airspeed

Indicates airspeed, knots, m/h or km/h. Can show values from 0 to 500. Setter name: airspeed.

Altitude

Shows altitude, feet or m. Can show values from -10000 to 10000 (but scale only starts from 0). Values below zero is possible with different settings of qnh. Setter name: altitude.

Vertical speed (VSI)

Gives rate information for the climb or descent, m/s. Usually in the range −30 to +30 m/s (-6000 to +6000 fpm). Setter name: verticalSpeed.

Heading

Shows heading of the aircraft, similar to a magnetic compass, deg. North direction corresponds to zero angle. Setter name: heading.

Ground speed

Indicates ground speed, knots, m/h or km/h. Can show values from 0 to 500 (why???). Setter name: groundSpeed.

Selected altitude

Shows selected altitude, feet or m. Can show values from -10000 to 10000 (but scale only starts from 0). Values below zero is possible with different settings of qnh. Setter name: selected Altitude.

QNH

Shows QNH: the pressure measured at station then reduced down to mean sea level pressure; mmHg, inHg, hPA. Can show values from -900 to 1200 (hPa). Setter name: qnh.

Contributing

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request.

avionics_js's People

Contributors

cortc avatar arrowcircle avatar zloypotroh avatar

Stargazers

 avatar Maxwell Lin avatar Antonio Pio Maggio avatar Matt Riney avatar  avatar  avatar Dylan Norman avatar  avatar Ervin, Jung avatar Rafid Aslam avatar Marcel Miguel avatar Zeev Rotshtein avatar

Watchers

 avatar James Cloos avatar Marcel Miguel avatar  avatar  avatar Chris VanHorn avatar Jannis Lübbe avatar

avionics_js's Issues

Physics in demo

We need to add better physical model to the demo.
Right now it's just linear approximation of params.
We need to add physical model and only change pitch and roll (and maybe airspeed).
Everything else should be calculated depending on changes in pitch and roll.

d_heading = f(roll, pitch)
vsi = airspeed * sin(pitch)
d_altitude = vsi * dt
ground_speed = airspeed * cos(pitch)

Generator for altitude and airspeed scale

Now scale is one big file, that moves through visibility zone. We should think about generating small and lightweight for the current value and render small scale, that is generated locally on the fly.

Add speed scales

Change speed scale to have few bars.
0-V_flaps - red bar, indicates dangerous low speed
V_flaps - V_normal - white bar, indicates range of speed for flaps mode
V_normal - V_caution - green bar, speed is fine
V_caution - V_ne - yellow bar, indicates, that speed is high
V_ne - MAX - red-white bar, indicates never exceed speed

Proposal is to add option to set speedScales in the form of array [V_flaps, V_normal, V_caution, V_never_exceed]

avionics.speedScales = [40, 80, 180, 200];

Remove jasmine code from repo

Move jasmine to package.json and remove from source code.
Use node_modules as a source for jasmine.
Maybe create separate build process for webpack for tests and demo

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.