Skip to main content

Crate siderust

Crate siderust 

Source
Expand description

§Siderust

Precision astronomy & satellite mechanics in Rust.

siderust is a research-grade astronomy toolkit focused on:

  • Strongly-typed coordinates (center + frame + unit encoded in the type system)
  • Ephemerides (VSOP87/ELP2000 always available; optional JPL DE4xx backends)
  • Observation planning utilities (altitude periods, crossings, culminations)
  • Time handling (via the tempoch crate, re-exported as time)

§Features

  • Coordinates: cartesian::{Position, Direction, Velocity, ...} and spherical::{Position, Direction} parameterized by Center, Frame, and Unit.
  • Transforms: frame rotations + center shifts with compile-time guarantees.
  • Altitude API: AltitudePeriodsProvider + free functions to compute crossings, culminations, altitude ranges, and above/below-threshold windows.
  • Ephemeris backends: Ephemeris trait with VSOP87/ELP2000 and optional DE440/DE441.
  • Serde: optional serde feature for public types.

§Crate Modules

  • coordinates : Cartesian & Spherical coordinate types and transformations between reference centers & frames
  • targets : CoordinateWithPM<T> + Trackable trait for targets
  • time : Time types and scale-based Period<S> / generic Interval<T>
  • astro : Utilities for aberration, nutation, precession, sidereal time, and event searches
  • calculus : Numerical kernels (VSOP87, ELP2000, Pluto, DE4xx, altitude API, root-finding)
  • bodies : Planets, stars, satellites, asteroids, comets, and built-in catalogs
  • observatories : Predefined observatory locations (Roque, Paranal, Mauna Kea, La Silla)

§Minimal Example

use siderust::{
    bodies::Mars,
    time::JulianDate,
};
use chrono::prelude::*;

// 1. Select an epoch (UTC now to JD)
let jd = JulianDate::from_utc(Utc::now());

// 2. Compute barycentric ecliptic coordinates via VSOP87
let mars = Mars::vsop87e(jd);

// 3. Print Mars's barycentric ecliptic position (AstronomicalUnits)
println!("{:?}", mars);

For a runnable tour of the library, see the examples/ directory.

Re-exports§

pub use calculus::azimuth::azimuth_crossings;
pub use calculus::azimuth::azimuth_extrema;
pub use calculus::azimuth::azimuth_periods as compute_azimuth_periods;
pub use calculus::azimuth::azimuth_ranges;
pub use calculus::azimuth::in_azimuth_range;
pub use calculus::azimuth::outside_azimuth_range;
pub use calculus::azimuth::AzimuthCrossingDirection;
pub use calculus::azimuth::AzimuthCrossingEvent;
pub use calculus::azimuth::AzimuthExtremum;
pub use calculus::azimuth::AzimuthExtremumKind;
pub use calculus::azimuth::AzimuthProvider;
pub use calculus::azimuth::AzimuthQuery;
pub use calculus::altitude::above_threshold;
pub use calculus::altitude::altitude_periods as compute_altitude_periods;
pub use calculus::altitude::altitude_ranges;
pub use calculus::altitude::below_threshold;
pub use calculus::altitude::crossings;
pub use calculus::altitude::culminations;
pub use calculus::altitude::AltitudePeriodsProvider;
pub use calculus::altitude::AltitudeQuery;
pub use calculus::altitude::CrossingDirection;
pub use calculus::altitude::CrossingEvent;
pub use calculus::altitude::CulminationEvent;
pub use calculus::altitude::CulminationKind;
pub use calculus::altitude::SearchOpts;
pub use calculus::lunar::phase::find_phase_events;
pub use calculus::lunar::phase::illumination_above;
pub use calculus::lunar::phase::illumination_below;
pub use calculus::lunar::phase::illumination_range;
pub use calculus::lunar::phase::moon_phase_geocentric;
pub use calculus::lunar::phase::moon_phase_topocentric;
pub use calculus::lunar::phase::MoonPhaseGeometry;
pub use calculus::lunar::phase::MoonPhaseLabel;
pub use calculus::lunar::phase::MoonPhaseSeries;
pub use calculus::lunar::phase::PhaseEvent;
pub use calculus::lunar::phase::PhaseKind;
pub use calculus::lunar::phase::PhaseSearchOpts;
pub use calculus::lunar::phase::PhaseThresholds;
pub use targets::CoordinateWithPM;
pub use targets::Trackable;
pub use tempoch as time;

Modules§

astro
Astro Module
bodies
Astronomical Bodies
calculus
Celestial Mechanics Calculus Module
coordinates
Coordinates Module
data
Runtime Data Management
observatories
Observatory Catalog Module
targets
Astronomical target representation

Macros§

assert_cartesian_eq
assert_spherical_eq