sgp4 package icon
christoph/sgp4
Public
wasmer run christoph/sgp4

This repository is the port of the SGP4 library to WebAssembly.

Published package is available on WAPM.

Installation

  • WAPM
    $ wapm install dynamite-bud/sgp4
    
  • npm
    $ wapm install dynamite-bud/sgp4 --npm
    
  • pip
    $ wapm install dynamite-bud/sgp4 --pip
    

Usage with JavaScript

const { bindings } = require("@dynamite-bud/sgp4");
const {
  Elements,
  Constants,
} = require("@dynamite-bud/sgp4/src/bindings/sgp4/sgp4.js");

const resolveResult = ({ tag, val }) => (tag === "err" ? new Error(val) : val);
const wasm = await bindings.sgp4();
let response = await fetch(
  "https://celestrak.com/NORAD/elements/gp.php?GROUP=galileo&FORMAT=json"
);
let elementsArr = (await response.json()).map((e) =>
  resolveResult(Elements.fromJson(wasm, JSON.stringify(e)))
);
for (let elements of elementsArr) {
  console.log(elements.getObjectName());
  let constants = resolveResult(Constants.fromElements(wasm, elements));
  for (let hours of [12, 24]) {
    console.log(`    t = ${hours * 60} min`);
    let prediction = resolveResult(constants.propagate(parseFloat(hours * 60)));
    console.log(`        r = ${prediction.position} km`);
    console.log(`        ṙ = ${prediction.velocity} km.s⁻¹`);
  }
}

For more information, please refer to the sgp4 documentation.

sgp4 for wasm, published on WAPM


Github

Making software universally accessible