/practical-astronomy

Practical Astronomy

Primary LanguageC++MIT LicenseMIT

Practical Astronomy

Implementation of astronomical algorithms.

Aims to implementat methods that achieve accuracy for "practical" use. Main source material is the amazing book Astronomical Algorithms by Jean Meeus. However, some useful methods (such as the full version of VSOP87) are also included.

Features

  • Date: Julian Date, Calendar (TT), Delta-T
  • Earth: Obliquity, Nutation
  • Sun: Position
  • Moon: Position (ELP82-Abridged)
  • All Planets: VSOP87 (Full)
  • Solver: Kepler's equation
  • Equation of Time

Compilation

$ make

The code is written in C++20 and currently depends on G++ extension to support designated initializers from C99.

TODOs

  • Moon: Apparent position, Equatorial coordinate
  • Correction for Parallax
  • Coordinate Transformation
  • Time: UT
  • Better error handling (E.g., invalid julian date, invalid parameters, algorithms not applicable and not available for the time interested, etc.)
  • C++: Better and more use move semantics, noexcept, etc.
  • Revise APIs:
    • Body:
      • Earth, Sun, Moon, ...
    • Astrometric:
      • Input:
        • Observer
          • Input
            • Earth?
            • (Optional) Topocentric
            • Algorithm: Meeus, Low, High, ...
            • at(time)
            • observe(object)
          • Output
            • Compute: Nutation: Longitude, Obliquity
            • Obliquity: Mean, True
      • Output:
        • Geocentric: Longitude, Latitude
        • Apparent: Longitude, Latitude, Right Ascension, Declination
        • Rising, Setting, Twilight
    • Combination / Almanac:
      • Moon Phase: Illuminated Fraction of the Moon's Disk
      • Eclipse
      • Equation of Time
    • Units
      • AU
      • TT <-> UT

Main References

  • Jean99 - Jean Meeus, Astronomical Algorithms, 2nd Edition, 1999.
  • Peter11 - Peter Duffett-Smith and Jonathan Zwart, Practical Astronomy with your Calculator or Spreadsheet, 4th Edition, 2011.
  • VSOP87 - Planetory Solutions
  • NASA07 - Polynomial Expressions for Delta T (ΔT)
  • VSOP2013 - Planetory Solutions
  • LEA-406 - Theory of Lunar Motion
  • ELP/MPP02 - Theory of Lunar Motion
  • XEphem - The Cross-Platform Astronomy Software