# eph_core v0.1.0 - Table of Contents

> Pure Elixir ephemeris computation: time scales, JPL kernel evaluation, earth orientation, and sky snapshots from an observer location.

## Pages

- [EphCore](readme.md)
- [Changelog](changelog.md)
- [Contributing](contributing.md)
- [LICENSE](license.md)

## Modules

- Core
  - [EphCore](EphCore.md): EphCore computes celestial positions from a UTC instant and observer location.
  - [EphCore.SnapshotPipeline](EphCore.SnapshotPipeline.md): Main pipeline for computing celestial body positions from a given location and time.
  - [EphCore.SnapshotPipeline.Intent](EphCore.SnapshotPipeline.Intent.md): Stage 00: INTENT — validate and normalize the request that drives the pipeline.
  - [EphCore.SnapshotPipeline.Observation](EphCore.SnapshotPipeline.Observation.md): Result returned by `EphCore.observe/4`.

- Pipeline stages
  - [EphCore.SnapshotPipeline.AstronomicalTime](EphCore.SnapshotPipeline.AstronomicalTime.md): Stage 01: ASTRONOMICAL_TIME — establish the moment in astronomical time.
  - [EphCore.SnapshotPipeline.EarthOrientation](EphCore.SnapshotPipeline.EarthOrientation.md): Stage 02: EARTH_ORIENTATION — compute Earth's rotation at the epoch.
  - [EphCore.SnapshotPipeline.Motion](EphCore.SnapshotPipeline.Motion.md): Stage 05: MOTION — compute per-body ecliptic longitude rates.

  - [EphCore.SnapshotPipeline.ObserverLineOfSight](EphCore.SnapshotPipeline.ObserverLineOfSight.md): Stage 05: OBSERVER_LINE_OF_SIGHT — shift from geocentric to topocentric.

  - [EphCore.SnapshotPipeline.ObserverPosition](EphCore.SnapshotPipeline.ObserverPosition.md): Stage 03: OBSERVER_POSITION — place the observer in inertial space.

  - [EphCore.SnapshotPipeline.SkyPosition](EphCore.SnapshotPipeline.SkyPosition.md): Stage 06: SKY_POSITION — project topocentric vectors onto the local sky.

  - [EphCore.SnapshotPipeline.SolarSystemPosition](EphCore.SnapshotPipeline.SolarSystemPosition.md): Stage 04: SOLAR_SYSTEM_POSITION — query the ephemeris for body positions.

- Events and time series
  - [EphCore.Events.Almanac](EphCore.Events.Almanac.md): Full-year rise / transit / set almanac for one topocentric observer.
  - [EphCore.TimeSeries](EphCore.TimeSeries.md): Batch position computation for time-grid scanning.
  - [EphCore.TopocentricMotion](EphCore.TopocentricMotion.md): Topocentric ecliptic longitude rates (degrees/day).

- Corrections
  - [EphCore.Corrections.ApparentPlace](EphCore.Corrections.ApparentPlace.md): Apparent-place correction: light-time retardation + annual aberration.

- Stars
  - [EphCore.Stars.Catalog](EphCore.Stars.Catalog.md): Hipparcos star catalog loader and lookup.
  - [EphCore.Stars.Position](EphCore.Stars.Position.md): Fixed-star position computation from Hipparcos catalog records.

- Time scales
  - [EphCore.AstronomicalTime.InternationalAtomicTime](EphCore.AstronomicalTime.InternationalAtomicTime.md): TAI is the primary international atomic time scale.
It's a continuous time scale that's perfectly uniform (unlike UT1 which wobbles with Earth rotation).
TAI ticks at the same rate as proper atomic time standards, but it's offset from UTC by accumulated leap seconds.
  - [EphCore.AstronomicalTime.JulianDay](EphCore.AstronomicalTime.JulianDay.md): Julian Date (JD) conversion functions for astronomical time calculations.
  - [EphCore.AstronomicalTime.Tables.EarthOrientationParameters](EphCore.AstronomicalTime.Tables.EarthOrientationParameters.md): Supervised ETS cache of the IERS Earth Orientation Parameters.
  - [EphCore.AstronomicalTime.Tables.LeapSeconds](EphCore.AstronomicalTime.Tables.LeapSeconds.md): Supervised ETS cache of the UTC ↔ TAI leap-second table.
  - [EphCore.AstronomicalTime.TerrestrialTime](EphCore.AstronomicalTime.TerrestrialTime.md): TT is a perfectly uniform time scale used for all astronomical calculations.
It doesn’t care how Earth wobbles — it ticks smoothly according to atomic time standards.
TT replaced “Ephemeris Time” (ET), which was the old theoretical time used for planetary motion.
  - [EphCore.AstronomicalTime.UniversalTimeOne](EphCore.AstronomicalTime.UniversalTimeOne.md): UT1 is basically *Earth’s actual rotation time*.
Think of it as “astronomical clock time,” determined by how far the Earth has spun relative to the stars.
It’s the modern, high-precision descendant of old Greenwich Mean Time (GMT),
except UT1 wobbles slightly because Earth’s rotation isn’t perfectly steady — tides, earthquakes,
and atmosphere drag the planet around just enough to make it drift by milliseconds each day.

- Earth orientation
  - [EphCore.EarthOrientation.Sidereal](EphCore.EarthOrientation.Sidereal.md): Calculates Greenwich Mean Sidereal Time (GMST) using IAU 2006/2000A standards.
  - [EphCore.EarthOrientation.Tables.NutationIAU2000A](EphCore.EarthOrientation.Tables.NutationIAU2000A.md): IAU 2000A_R06 Nutation Series, loaded once at application startup.

- Ephemeris and kernels
  - [EphCore.Ephemeris](EphCore.Ephemeris.md): Geocentric and barycentric state vectors read straight from SPK kernels.
  - [EphCore.Ephemeris.Kernels](EphCore.Ephemeris.Kernels.md): Resolves on-disk paths for the ephemeris, time, nutation, and star data files.
  - [EphCore.Ephemeris.Kernels.EOP](EphCore.Ephemeris.Kernels.EOP.md): Earth Orientation Parameters (EOP) path helpers.

  - [EphCore.Ephemeris.Kernels.LSK](EphCore.Ephemeris.Kernels.LSK.md): Leap-seconds kernel (LSK) path helpers.

  - [EphCore.Ephemeris.Kernels.SPK](EphCore.Ephemeris.Kernels.SPK.md): Public API for SPK kernel access.

  - [EphCore.Ephemeris.Kernels.SPK.Chebyshev](EphCore.Ephemeris.Kernels.SPK.Chebyshev.md): Chebyshev polynomial evaluation using Clenshaw's recurrence.

  - [EphCore.Ephemeris.Kernels.SPK.DAF](EphCore.Ephemeris.Kernels.SPK.DAF.md): DAF binary container parsing for SPK files.

  - [EphCore.Ephemeris.Kernels.SPK.DifferenceArray](EphCore.Ephemeris.Kernels.SPK.DifferenceArray.md): Evaluates an SPK Type 21 (Extended Modified Difference Array) record.
  - [EphCore.Ephemeris.Kernels.SPK.Segment](EphCore.Ephemeris.Kernels.SPK.Segment.md): SPK segment descriptor helpers.

  - [EphCore.Ephemeris.Kernels.SPK.Server](EphCore.Ephemeris.Kernels.SPK.Server.md): SPK kernel server with ETS preloading for fast queries.
  - [EphCore.Ephemeris.Kernels.SPK.Type2](EphCore.Ephemeris.Kernels.SPK.Type2.md): SPK Type 2 (Chebyshev position) parsing helpers.

  - [EphCore.Ephemeris.Kernels.SPK.Type21](EphCore.Ephemeris.Kernels.SPK.Type21.md): SPK Type 21 (Extended Modified Difference Arrays) segment parsing.

- Geometry
  - [EphCore.Geometry.CelestialSphere](EphCore.Geometry.CelestialSphere.md): Helpers for computing celestial poles and great-circle ring samples.

  - [EphCore.Geometry.Ecliptic](EphCore.Geometry.Ecliptic.md): Ecliptic coordinate transforms.

  - [EphCore.Geometry.Geodetic](EphCore.Geometry.Geodetic.md): WGS84 geodetic conversions.

  - [EphCore.Geometry.Horizon](EphCore.Geometry.Horizon.md): Horizon-based geometry helpers (east horizon ecliptic longitude / meridian ecliptic longitude).

  - [EphCore.Geometry.Horizontal](EphCore.Geometry.Horizontal.md): Helpers for converting direction vectors into local horizon coordinates.

  - [EphCore.Geometry.Projection](EphCore.Geometry.Projection.md): Projection helpers between equatorial and ecliptic coordinates.

## Mix Tasks

- [mix eph.download_kernels](Mix.Tasks.Eph.DownloadKernels.md): Downloads the baseline ephemeris, time, and nutation data files.
- [mix eph.generate_kernel](Mix.Tasks.Eph.GenerateKernel.md): Generates an SPK kernel for a small body using the JPL Horizons API.
- [mix eph.setup_stars](Mix.Tasks.Eph.SetupStars.md): Sets up the optional Hipparcos star catalog for fixed-star features.

