/* * precession.h -- IAU 2006 precession and simplified nutation * * Clean-room implementation from published standards: * Precession: Capitaine, Wallace & Chapront (2003), A&A 412, 567 * (IAU 2006 polynomial expressions) * Nutation: Simplified 4-term model from fundamental arguments * documented in IERS Technical Note 32, Ch. 5. * * No PostgreSQL dependencies -- pure math, suitable for standalone use. */ #ifndef PG_ORBIT_PRECESSION_H #define PG_ORBIT_PRECESSION_H /* * get_precession_angles_vondrak -- IAU 2006 precession angles * * Computes the four fundamental precession quantities at JDE: * psi_A -- luni-solar precession (arcsec) * omega_A -- inclination of equator on J2000 ecliptic (arcsec) * chi_A -- planetary precession (arcsec) * epsilon_A -- obliquity of the ecliptic (arcsec) * * These are the IAU 2006 polynomial expressions valid to ~1 mas * for several centuries around J2000. The full Vondrak (2011) * periodic terms are not included here; they extend validity * to +/-200,000 years but add sub-arcsecond corrections that * are negligible for our use case. * * Output is in arcseconds. */ void get_precession_angles_vondrak(double jde, double *epsilon_A, double *chi_A, double *omega_A, double *psi_A); /* * get_nutation_angles_iau2000b -- simplified nutation * * Computes nutation in longitude (delta_psi) and nutation in * obliquity (delta_epsilon) using the dominant 4 lunisolar terms. * * This matches the level of nutation correction used in SGP4 * coordinate transforms and is suitable for "what's up?" queries * where ~1 arcsecond accuracy is sufficient. * * Output is in arcseconds. */ void get_nutation_angles_iau2000b(double jde, double *delta_psi, double *delta_epsilon); #endif /* PG_ORBIT_PRECESSION_H */