True ecliptic coordinates of date
True ecliptic coordinates of date
This release changes the Ecliptic
functions to return true ecliptic coordinates of date instead of coordinates referenced to the mean equinox of J2000. This matters because ecliptic coordinates are often significant for physical phenomena such as eclipses, transits, lunar phases, etc.
So-called "true" coordinates correct for the following 3 variables in the orientation system:
- Large scale precession of the Earth's axis. This is a gyrating movement over a period of approximately 26000 years.
- Small scale nutation of the Earth's axis. This small wobbling movement has a primary periodic component of 18.6 years.
- Obliquity drift. This is a slow change of the angle between the Earth's orbital plane and the Earth's equatorial plane. Currently the angle between the planes is decreasing at a rate of 47 arcseconds per century.
By changing the Ecliptic
functions to correct for these 3 variables, the results are a better fit for calculating phenomena that depend on them.
Support for calculating mean ecliptic coordinates in the J2000 system (represented by the three-letter code ECL
) still exists in the form of rotation matrix functions:
Rotation_ECL_EQD
Rotation_ECL_EQJ
Rotation_ECL_EQD
Rotation_ECL_EQJ
Rotation_ECL_HOR
Rotation_HOR_ECL
New rotation matrix functions have been added to support true ecliptic coordinates of date, with the newly added three-letter code ECT
:
Rotation_ECT_EQD
Rotation_ECT_EQJ
Rotation_EQD_ECT
Rotation_EQJ_ECT
Better documentation of coordinate systems
The API documentation has been updated to clearly specify whether equatorial coordinates or ecliptic coordinates are referenced to the true equinox (corrected for both precession and nutation) or the mean equinox (corrected for precession only).
More efficient nutation
Many calculations in Astronomy Engine require calculating nutation, as mentioned above. The nutation formula was excessively slow in earlier versions. It was using the full 77-term trigonometric series IAU2000B. This has been truncated to a 5-term series, and optimized via loop unrolling, across all 5 supported programming languages. The result is still accurate within 2 arcseconds while running more than 15 times as fast.