Skip to main content

Crate celestial_core

Crate celestial_core 

Source
Expand description

Low-level astronomical calculations for coordinate transformations.

celestial-core provides the mathematical building blocks for celestial mechanics: rotation matrices, nutation/precession models, angle handling, and geodetic conversions. It implements IAU 2000/2006 standards in pure Rust with no runtime FFI.

§Modules

ModulePurpose
angleAngle types, parsing (HMS/DMS), normalization, validation
matrix3×3 rotation matrices and 3D vectors
nutationIAU 2000A/2000B/2006A nutation models
precessionIAU 2000/2006 precession (Fukushima-Williams angles)
cioCIO-based GCRS↔CIRS transformations
obliquityMean obliquity of the ecliptic (IAU 1980, 2006)
locationObserver geodetic coordinates, geocentric conversion
constantsAstronomical constants (J2000, WGS84, unit conversions)
errorsAstroError and AstroResult

§Coordinate Transformation Pipeline

GCRS → CIRS transformation (CIO-based):

// 1. Compute precession-nutation-bias matrix
let fw = FukushimaWilliamsAngles::iau2006a(tt_centuries);
let nutation = NutationIAU2006A::new().compute(jd1, jd2)?;
let npb = fw.build_npb_matrix(nutation.delta_psi, nutation.delta_eps);

// 2. Extract CIO quantities
let cio = CioSolution::calculate(&npb, tt_centuries)?;

// 3. Build GCRS→CIRS matrix
let matrix = gcrs_to_cirs_matrix(cio.cip.x, cio.cip.y, cio.s);

§Re-exports

Common types are re-exported at the crate root for convenience:

use celestial_core::{Angle, Vector3, RotationMatrix3, Location};
use celestial_core::{AstroError, AstroResult, MathErrorKind};

§Design Notes

  • Two-part Julian Dates: Functions accepting (jd1, jd2) preserve precision by splitting the date. Typically jd1 = 2451545.0 (J2000.0) and jd2 is days from epoch.

  • Radians internally: All angular computations use radians. The Angle type provides conversion methods for degrees/HMS/DMS display.

  • No implicit state: Models like NutationIAU2006A are stateless calculators. Call compute(jd1, jd2) with any epoch.

Re-exports§

pub use angle::Angle;
pub use cio::gcrs_to_cirs_matrix;
pub use cio::CioLocator;
pub use cio::CioSolution;
pub use cio::CipCoordinates;
pub use cio::EquationOfOrigins;
pub use errors::AstroError;
pub use errors::AstroResult;
pub use errors::MathErrorKind;
pub use location::Location;
pub use matrix::RotationMatrix3;
pub use matrix::Vector3;

Modules§

angle
cio
Celestial Intermediate Origin (CIO) based celestial-to-terrestrial transformations.
constants
errors
Error types for astronomical calculations.
location
Observer location on Earth.
math
matrix
3D rotation matrices and vectors for coordinate transformations.
nutation
Nutation models for computing oscillations in Earth’s rotational axis.
obliquity
Mean obliquity of the ecliptic.
precession
Precession models for transforming coordinates between epochs.
test_helpers
utils
Utility functions for time and angle conversions.

Macros§

assert_ulp_lt