UNPKG

keplerian-core

Version:

High-performance TypeScript library for orbital mechanics calculations, providing numerical integration, state propagation, and perturbation modeling for Keplerian orbits.

75 lines (74 loc) 2.22 kB
export interface Vector2D { x: number; y: number; } export interface OrbitalState { position: Vector2D; velocity: Vector2D; momentum?: Vector2D; angularMomentum?: number; rungeLenzVector?: Vector2D; energy?: number; eccentricity?: number; } export interface ThirdBodyPerturbationParams { gravitationalParameter: number; position: Vector2D; mass: number; } export interface SimulationParams { centralMass: number; orbitingMass: number; gravitationalConstant: number; timeStep: number; atmosphericDrag?: AtmosphericDragParams; solarRadiationPressure?: SolarRadiationPressureParams; j2Perturbation?: { j2Coefficient: number; radius: number; }; thirdBodyPerturbation?: ThirdBodyPerturbationParams; } export interface InitialConditions { position: Vector2D; velocity: Vector2D; } export interface AtmosphericDragParams { dragCoefficient: number; crossSectionalArea: number; atmosphericDensity?: number; } export interface SolarRadiationPressureParams { reflectivityCoefficient: number; area: number; solarConstant: number; } export interface J2PerturbationParams { j2Coefficient: number; radius: number; } export interface SimulationParams { centralMass: number; orbitingMass: number; gravitationalConstant: number; timeStep: number; totalTime: number; integrator: IntegratorKey; atmosphericDrag?: AtmosphericDragParams; solarRadiationPressure?: SolarRadiationPressureParams; j2Perturbation?: J2PerturbationParams; thirdBodyPerturbation?: ThirdBodyPerturbationParams; format?: 'json' | 'csv'; } export type IntegratorKey = 'rk4' | 'euler' | 'leapfrog' | 'rk2' | 'velocity-verlet' | 'dormand-prince' | 'wisdom-holman'; export interface Preset { params: Partial<SimulationParams>; initial: InitialConditions; } export interface ThirdBodyPerturbationParams { thirdBodyMass: number; thirdBodyPosition: Vector2D; gravitationalConstant: number; } export type PresetKey = 'circular' | 'elliptical' | 'hyperbolic' | 'parabolic' | 'retrograde' | 'collision'; export type ThemeKey = 'space' | 'nasa' | 'chalkboard' | 'high-contrast';