Current section
Files
Jump to
Current section
Files
lib/space_dust.ex
defmodule SpaceDust do
@moduledoc """
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 Time
- `SpaceDust.Time.TAI` - International Atomic Time
- `SpaceDust.Time.TT` - Terrestrial Time
- `SpaceDust.Time.JulianDate` - Julian Date / Modified Julian Date
- `SpaceDust.Time.GMST` - Greenwich Mean Sidereal Time
- `SpaceDust.Time.GPS` - GPS Time
### State Vectors
Represent and transform orbital states:
- `SpaceDust.State.ECIState` - Earth-Centered Inertial J2000 frame
- `SpaceDust.State.TEMEState` - True Equator Mean Equinox frame
- `SpaceDust.State.ECEFState` - Earth-Centered Earth-Fixed frame
- `SpaceDust.State.GeodeticState` - Geodetic coordinates (lat/lon/alt)
- `SpaceDust.State.KeplerianElements` - Classical orbital elements
- `SpaceDust.State.Transforms` - Frame transformations
### Observations
Calculate angular observations from ground stations:
- `SpaceDust.Observations` - Observation computation functions
- `SpaceDust.Observations.AzEl` - Azimuth/Elevation angles
- `SpaceDust.Observations.RaDec` - Right Ascension/Declination
### Celestial Bodies
Calculate positions of celestial bodies:
- `SpaceDust.Bodies.Earth` - Earth orientation and parameters
- `SpaceDust.Bodies.Sun` - Solar position calculations
- `SpaceDust.Bodies.Moon` - Lunar position calculations
- `SpaceDust.Bodies.Barycenter` - Earth-Moon barycenter
### Data
Reference data and parameters:
- `SpaceDust.Data.EOP` - Earth Orientation Parameters
- `SpaceDust.Data.EOPCache` - High-performance EOP cache
- `SpaceDust.Data.IAU1980` - Nutation coefficients
- `SpaceDust.Data.LeapSecond` - Leap second table
### Utilities
TLE parsing and propagation:
- `SpaceDust.Utils.Tle` - TLE parsing and SGP4 propagation
- `SpaceDust.Utils.Constants` - Physical constants
- `SpaceDust.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)
"""
@doc """
Returns library version information.
## Examples
iex> SpaceDust.version()
"0.2.0"
"""
@spec version() :: String.t()
def version do
"0.2.0"
end
end