Skip to main content

Crate astrodyn_planet

Crate astrodyn_planet 

Source
Expand description

Planetary shape and standard preset bodies.

Pure-Rust port of JEOD’s models/environment/planet/ — the per-body reference-ellipsoid parameters (gravitational parameter, equatorial and polar radii, flattening) consumed by gravity, geodetic, atmospheric, and frame-rotation code.

§Public surface

  • PlanetShape (re-exported from planet) — the JEOD Planet struct equivalent. Stores name, mu (m^3/s^2), r_eq (m), r_pol (m), and flat_coeff along with derived helpers (flat_inv, e_ellipsoid).
  • presets — canonical body constants matching JEOD source data files. Earth uses WGS84 geometry from planet/data/src/earth.cc together with the GGM05C gravitational parameter mu = 398_600.441_50e9 m^3/s^2 (which differs from IERS 2010 by 3e6 m^3/s^2; we follow JEOD’s value to keep cross-validation faithful). Additional presets cover the other bodies the JEOD verification sims exercise.

§Role in the pipeline

PlanetShape is the shared parameter block consumed by astrodyn_math::geodetic for ellipsoidal coordinate conversions, by astrodyn_gravity when the gravity model needs the reference radius, and by astrodyn_frames for body-fixed rotation models. Pure Rust, zero Bevy dependency.

§Example

use astrodyn_planet::{EARTH, MOON};

// WGS84 equatorial radius, GGM05C gravitational parameter.
assert!((EARTH.r_eq() - 6_378_137.0).abs() < 1.0);
assert!((EARTH.mu - 3.986_004_415e14).abs() < 1e6);

// Moon is much smaller and lighter than Earth.
assert!(MOON.r_eq() < EARTH.r_eq());
assert!(MOON.mu < EARTH.mu);

Re-exports§

pub use planet::*;
pub use presets::*;

Modules§

geodetic_verif
JEOD PlanetFixedPosition verification seeds (committed JSON).
planet
Reference-ellipsoid parameter block for a planetary body.
presets
Canonical PlanetShape constants matching the per-body data files under models/environment/planet/data/src/ in JEOD v5.4.0.

Structs§

BodyAttitude
RootInertial → body attitude of vehicle V, witnessed unit-norm and scalar-first / left-transformation (JEOD canonical).
BodyFrame
Body (CoM-centered) frame of vehicle V. Rotates with the vehicle.
CartesianState
A Cartesian state sample: position, velocity, and the epoch they hold at, all in frame F.
Earth
Planet marker for Earth.
Ecef
Earth-centered Earth-fixed frame (ITRF-like). Rotates with Earth.
FrameTransform
Proper rotation taking vectors expressed in From to the same vectors expressed in To.
FrameUid
Owned, comparable, hashable runtime frame identity.
GMST
Greenwich Mean Sidereal Time (angle, but seconds-ized by convention).
GPS
GPS Time (TAI − 19 s).
GravParam
Gravitational parameter μ = GM tagged with the source planet P.
HarmonicDegree
Spherical-harmonic degree or order index. Unitless ordinal.
InertiaTensor
Mass moment of inertia tensor (kg·m²) expressed in frame F.
IntegOrigin
The integration-frame origin: position and velocity of the integration-frame origin expressed in root-inertial coordinates.
IntegrationFrame
A body’s integration frame — a non-rotating quasi-inertial frame whose origin generally differs from the root inertial origin.
Jupiter
Planet marker for Jupiter.
LeftTransform
r' = q r q⁻¹ — the JEOD convention.
Lvlh
Local Vertical / Local Horizontal frame relative to chief vehicle Chief. Z axis points planet-ward; Y opposes orbital angular momentum; X completes the right-handed triad (approximately along-track in near-circular orbits).
Mars
Planet marker for Mars.
MassNode
Mass-tree wildcard inertial-flavor frame for kinematic-propagation scratch state.
Moon
Planet marker for Moon.
Ned
North-East-Down topocentric frame relative to chief vehicle Chief.
NormalizedQuat
A quaternion witnessed to have unit norm at construction time.
PlanetFixed
Planet-fixed frame for any planet P. Rotates with that planet.
PlanetInertial
A particular planet’s inertial (non-rotating, J2000-aligned) frame, centered at the planet’s CoM.
Qty3
Componentwise 3-vector: each of x, y, z carries the dimension D, and the whole vector carries the frame tag F.
Quat
Quaternion tagged with its storage layout and transformation convention.
RightTransform
r' = q⁻¹ r q — the opposite of JEOD; common in many textbooks.
RootInertial
The simulation’s root inertial frame — the unique inertial node at the top of the frame tree.
Saturn
Planet marker for Saturn.
ScalarFirst
Storage layout [q0, q1, q2, q3] where q0 is the scalar part (JEOD).
ScalarLast
Storage layout [x, y, z, w] where w is the scalar part (glam).
SecondsSince
Seconds elapsed in the named time scale, measured from that scale’s epoch.
SelfPlanet
Phantom marker for “this entity’s own planet” — used by ECS adapters whose per-entity components carry PlanetFixed<P> phantoms but whose planet identity is determined at runtime by the entity itself.
SelfRef
Phantom marker for “this entity’s own vehicle frame” — used by ECS adapters whose per-entity components carry frame phantoms but whose vehicle identity is determined at runtime by the entity itself.
StructuralFrame
Structural (geometric-origin) frame of vehicle V. Rotates with vehicle.
Sun
Planet marker for Sun.
TAI
International Atomic Time.
TDB
Barycentric Dynamical Time (relativistic correction to TT).
TT
Terrestrial Time (TAI + 32.184 s).
TimeConverter
Explicit converter between two time scales.
Topocentric
Site-anchored topocentric (ENU) frame on planet P.
UT1
Universal Time 1 (Earth-rotation based).
UTC
Coordinated Universal Time (leap-second stepped).

Enums§

FrameClass
Coarse runtime taxonomy of frame kinds.

Traits§

Array3Ext
Extension trait on [f64; 3] (raw component arrays from CSVs or JEOD initial conditions) producing frame-tagged 3-vectors.
F64Ext
Unit-construction extension on f64.
Frame
Compile-time reference frame tag.
Layout
Compile-time quaternion storage layout marker.
Planet
Compile-time planet tag used to parameterize planet-fixed frames.
TimeScale
Compile-time time-scale tag.
Transform
Compile-time quaternion transformation convention marker.
Vec3Ext
Extension trait on glam::DVec3 producing frame-tagged 3-vectors.
Vehicle
Compile-time vehicle tag used to parameterize vehicle-relative frames.

Type Aliases§

Acceleration
Acceleration in frame F. Base SI unit: m/s².
AngularAcceleration
Angular acceleration in frame F. Base SI unit: rad/s².
AngularMomentum
Angular momentum in frame F. Base SI unit: kg·m²/s.
AngularVelocity
Angular velocity in frame F. Base SI unit: rad/s.
Force
Force in frame F. Base SI unit: newtons.
JeodQuat
The JEOD canonical quaternion type: scalar-first, left-transformation.
Jerk
Jerk (time derivative of acceleration) in frame F. Base SI unit: m/s³.
MassFlowRate
Scalar mass-flow rate.
Position
Position in frame F (default: RootInertial). Base SI unit: meters.
SpecificAngMom
Scalar specific angular momentum.
SpecificEnergy
Scalar specific energy.
Torque
Torque in frame F. Base SI unit: N·m.
Velocity
Velocity in frame F. Base SI unit: m/s.