OOTK Documentation

November 30, 2025 · View on GitHub

Welcome to the OOTK (Orbital Object Toolkit) documentation!

Documentation Structure

For New Users

Getting Started Guide - Start here if you're new to OOTK!

This guide covers:

  • Installation and setup
  • Your first satellite tracking program
  • Understanding coordinate systems
  • Working with ground sensors
  • Common use cases with complete examples
  • Troubleshooting tips

Perfect for: Beginners, developers new to orbital mechanics, quick start tutorials

For All Users

User Guide - Comprehensive reference for all OOTK features

This guide covers:

  • All modules and their functionality
  • Detailed API documentation
  • Advanced features
  • Code examples for every feature
  • Performance optimization tips
  • Complete reference material

Perfect for: Intermediate to advanced users, comprehensive feature documentation

Deep Dives

Coordinate Systems Guide - In-depth guide to coordinate systems

This guide covers:

  • All coordinate systems (J2000, TEME, ITRF, Geodetic, RIC, Hill)
  • Orbital element representations (Classical, Equinoctial)
  • When to use each system
  • Coordinate transformations
  • Common workflows and decision guides

Perfect for: Understanding the differences between coordinate systems and choosing the right one

Getting Started

Core Features

Advanced Features

What is OOTK?

OOTK is a comprehensive TypeScript/JavaScript library for orbital mechanics calculations. It provides:

  • Satellite Tracking: Propagate satellite positions using SGP4 and numerical integrators
  • Sensor Operations: Calculate visibility and predict satellite passes
  • Coordinate Transformations: Convert between ECI, ECF, geodetic, and other systems
  • Orbit Determination: Determine orbits from observations
  • Mission Planning: Calculate maneuvers and delta-v requirements
  • High-Precision Propagation: Model perturbations including gravity harmonics, drag, SRP

Key Features

  • Type-Safe: Written in TypeScript with comprehensive type definitions
  • Unit Types: Prevents mixing incompatible units (degrees/radians, km/meters)
  • Browser & Node.js: Works in both environments
  • Multiple Propagators: SGP4, Kepler, Runge-Kutta (multiple orders), Dormand-Prince
  • Extensive Coordinate Systems: J2000, TEME, ITRF, Geodetic, RIC, Hill, and more
  • Battle-Tested: Originally developed for KeepTrack

Installation

npm install ootk

Quick Example

import { Satellite, Sensor, Degrees, Kilometers } from 'ootk';

// Create satellite from TLE
const satellite = new Satellite({
  tle1: '1 25544U 98067A   24028.54545847  .00031576  00000-0  57240-3 0  9991',
  tle2: '2 25544  51.6418 292.2590 0002595 167.5319 252.0460 15.49326324436741'
});

// Get current position
const lla = satellite.lla();
console.log(`Lat: ${lla.lat}°, Lon: ${lla.lon}°, Alt: ${lla.alt} km`);

// Create ground sensor
const sensor = new Sensor({
  lat: 41.754785 as Degrees,
  lon: -70.539151 as Degrees,
  alt: 0.060966 as Kilometers,
  minEl: 5 as Degrees,
  maxEl: 85 as Degrees
});

// Check if satellite is visible
if (sensor.isSatInFov(satellite)) {
  const rae = sensor.rae(satellite);
  console.log(`Visible! Az: ${rae.az}°, El: ${rae.el}°, Range: ${rae.rng} km`);
}

// Predict passes
const passes = sensor.calculatePasses(30, satellite);
console.log(`Found ${passes.length} passes`);

Support

License

AGPL-3.0

Version

5.1.1