Skip to content

MoonEphemeris

Defined in: ephemeris.rs:256

pub trait MoonEphemeris: [Send](https://doc.rust-lang.org/std/marker/trait.Send.html) + [Sync](https://doc.rust-lang.org/std/marker/trait.Sync.html)

Moon ephemeris source abstraction.

Implementations provide Moon position (and optionally velocity) in the ECI (J2000-ish) frame for a given epoch. This trait decouples consumers from the specific ephemeris model (Meeus analytical, tabulated JPL Horizons data, SPICE kernel, …), allowing the integrator and targeters to share a single source of truth.

The default velocity_eci implementation uses a central finite difference (±1 second) over position_eci. Tabulated sources (e.g. Hermite-interpolated Horizons data) that can provide velocity more accurately should override it.

fn position_eci(&self, epoch: &Epoch) -> [Vec3<frame::Gcrs>](../../structs/vec3/)

Moon position in ECI [km] at the given epoch.


fn name(&self) -> &str

Short human-readable name of the ephemeris source (e.g. “meeus”, “horizons”).


fn velocity_eci(&self, epoch: &Epoch) -> [Vec3<frame::Gcrs>](../../structs/vec3/)

Moon velocity in ECI [km/s] at the given epoch.

Default: central finite difference over position_eci with a 1-second step. Override for sources that can supply analytic velocity.