UNPKG

keplerian-core

Version:

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

26 lines (25 loc) 1.1 kB
// Euler integrator implementation import { vectorAdd, vectorScale } from '../../utils/vector'; import { calculateDerivedQuantities } from '../../utils/calculateDerivedQuantities'; export const eulerIntegrator = { name: 'euler', displayName: 'Euler', description: 'First-order explicit Euler method. Simple but less accurate.', order: 1, recommended: false, function: (state, params, accelerationFn, time, dt) => { const acceleration = accelerationFn(state.position, state.velocity, params); const newVelocity = vectorAdd(state.velocity, vectorScale(acceleration, params.timeStep)); const newPosition = vectorAdd(state.position, vectorScale(state.velocity, params.timeStep)); const { momentum, angularMomentum, rungeLenzVector, energy, eccentricity } = calculateDerivedQuantities(newPosition, newVelocity, params); return { position: newPosition, velocity: newVelocity, momentum, angularMomentum, rungeLenzVector, energy, eccentricity }; } };