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
| Module | Purpose |
|---|---|
angle | Angle types, parsing (HMS/DMS), normalization, validation |
matrix | 3×3 rotation matrices and 3D vectors |
nutation | IAU 2000A/2000B/2006A nutation models |
precession | IAU 2000/2006 precession (Fukushima-Williams angles) |
cio | CIO-based GCRS↔CIRS transformations |
obliquity | Mean obliquity of the ecliptic (IAU 1980, 2006) |
location | Observer geodetic coordinates, geocentric conversion |
constants | Astronomical constants (J2000, WGS84, unit conversions) |
errors | AstroError 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. Typicallyjd1 = 2451545.0(J2000.0) andjd2is days from epoch. -
Radians internally: All angular computations use radians. The
Angletype provides conversion methods for degrees/HMS/DMS display. -
No implicit state: Models like
NutationIAU2006Aare stateless calculators. Callcompute(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.