View Source SpaceDust (Space Dust v0.3.0)
SpaceDust is a comprehensive astrodynamics library for Elixir.
This library provides tools for satellite tracking, orbital mechanics, coordinate transformations, and ground-based observation calculations.
Main Components
Time Systems
Convert between astronomical time systems:
SpaceDust.Time.UTC- Coordinated Universal TimeSpaceDust.Time.TAI- International Atomic TimeSpaceDust.Time.TT- Terrestrial TimeSpaceDust.Time.JulianDate- Julian Date / Modified Julian DateSpaceDust.Time.GMST- Greenwich Mean Sidereal TimeSpaceDust.Time.GPS- GPS Time
State Vectors
Represent and transform orbital states:
SpaceDust.State.ECIState- Earth-Centered Inertial J2000 frameSpaceDust.State.TEMEState- True Equator Mean Equinox frameSpaceDust.State.ECEFState- Earth-Centered Earth-Fixed frameSpaceDust.State.GeodeticState- Geodetic coordinates (lat/lon/alt)SpaceDust.State.KeplerianElements- Classical orbital elementsSpaceDust.State.Transforms- Frame transformations
Observations
Calculate angular observations from ground stations:
SpaceDust.Observations- Observation computation functionsSpaceDust.Observations.AzEl- Azimuth/Elevation anglesSpaceDust.Observations.RaDec- Right Ascension/Declination
Celestial Bodies
Calculate positions of celestial bodies:
SpaceDust.Bodies.Earth- Earth orientation and parametersSpaceDust.Bodies.Sun- Solar position calculationsSpaceDust.Bodies.Moon- Lunar position calculationsSpaceDust.Bodies.Barycenter- Earth-Moon barycenter
Data
Reference data and parameters:
SpaceDust.Data.EOP- Earth Orientation ParametersSpaceDust.Data.EOPCache- High-performance EOP cacheSpaceDust.Data.IAU1980- Nutation coefficientsSpaceDust.Data.LeapSecond- Leap second table
Utilities
TLE parsing and propagation:
SpaceDust.Utils.Tle- TLE parsing and SGP4 propagationSpaceDust.Utils.Constants- Physical constantsSpaceDust.Ingest.Celestrak- Celestrak TLE retrieval
Quick Example
alias SpaceDust.Ingest.Celestrak
alias SpaceDust.Utils.Tle
alias SpaceDust.State.{TEMEState, GeodeticState, Transforms}
alias SpaceDust.Observations
# Fetch TLE and propagate
{:ok, tle} = Celestrak.pullLatestTLE("25544")
epoch = DateTime.utc_now()
{pos, vel} = Tle.getRVatTime(tle, epoch)
# Convert to ECI and compute observation angles
teme = TEMEState.new(epoch, pos, vel)
eci = Transforms.teme_to_eci(teme)
observer = GeodeticState.new(40.0, -105.0, 1.6)
az_el = Observations.compute_az_el(observer, eci)
Summary
Functions
@spec version() :: String.t()
Returns library version information.
Examples
iex> SpaceDust.version()
"0.2.0"