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
JavaScript
// 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
};
}
};