- Calendrical Calculations: Third Edition - Nachum Dershowitz and Edward M. Reingold
- Notes and Errata on Calendrical Calculations: Third Edition - 25th May 2011
- Astronomical Algorithms: First Edition - Jean Meeus
- Practical Astronomy with your Calculator: Third Edition - Peter Duffet-Smith
- How to compute planetary positions - Paul Schlyter
The astronomical files will be defined based on the considerations of time and astronomy as deducted from the theoretical research.
This header file would contain the general functions for astronomical calculations. The functions perform calculations for converting time between different formats, for calculating Julian centuries and the ephemeris correction, for calculating significant moments of the day that have astronomical significance and polar-coordinate conversion. The following member functions would be implemented:
Astronomical calculations which relate to various aspects involving the sun would be performed by the functions defined in this file.
Out of all the heavenly objects that are visible in the celestial sphere, the moon is perhaps the most beautiful of them all. It is also, one of the most hardest to correctly determine it's position and various other astronomical aspects. This header file will be defining the functions which will be used in the astronomical calculations which relate to the moon.
As the project would progress along the time-line, the necessary functionalities required by the other calendar systems could be easily appended/modified/implemented in these files.
Most of the code required in the astronomical Islamic Calendar is similar to the Islamic Civil Calendar, with the difference that the lunar crescent visibility criteria affects the 'day' in both the calendars. The astronomical calendar would be derived from kcalendarsystem.h and would include functionalities to modify the date according to the crescent visibility. The crescent visibility will be implemented mainly through the function lunarPhaseBefore() defined in astrolunar.h.
However, one particular area that I haven't been able to figure out yet, that is, the way in which I am supposed to handle the locale argument for the functions. Many functions use their calculations depending on the latitude and longitude of the locale. KLocale, however, does not define the latitude and longitude in its locale object. The longitude of the locale could be determined by the local time (or time zone) specified in KLocale. To work around the latitude, we might have to manually tabulate the values according to the country (or country code).