
Some examples on what calculations I think would be common are:
o sunrise, sunset, noon
o sun elevation, azimuth, declination
o length of the day
o phase of the moon, and whether the visible fraction is increasing or not
Many of these types of calculations fall under the general domain of "astrometry" rather than astronomy. I think this would be a very interesting addition to Boost, though, like any non-trivial problem domain, it will be a challenge to find the appropriate balance between feature-richness and excessive mission creep... Some of the functionality listed here might be most sensible as an inclusion to Boost Date/Time...
o The sun may set/rise more than once during a day in polar regions, or it may do neither.
Methods for getting all sunrises/sunsets within a given time window would make sense to me.
o What is the definition for the length of the day if sunrise/sunset occurs more than once during a day?
Again, a method for getting the interval between sunset and sunrise within a given time window would sidestep this issue.
o Are separate methods needed for testing whether the given date is of type "polar day" or "polar night" or "midnight sun"? The definitions for the three seem to be a bit ambiguous. For example, it is perfectly possible for the sun to be up at midnight but still to set during the day, in which case you would have "midnight sun" but not necessarily a "polar day", when the sun shines 24h.
I would expect methods to query whether the sun is up or down at a given time/geographic location. Special functionality for polar regions could be built on top of that...
Many places refer to Meeus's work for the most accurate calculations. The formulas have been ported to C++ in the form of the AA++ (astronomical algorithms) library. However, the library seems to be aimed for experts and there are no easy recipies for solving the common problems mentioned above.
Meeus' book is a good one. Another good source for astrometry code/ information is the Naval Observatory Vector Astrometry Subroutines (NOVAS) library - this is more focused on astrometry, but would be helpful if you wanted the library to support moonrise/ moonset or rise/set times for planets.
o Would a boost::astronomy namespace as implied above be a good addition to boost?
I would vote for boost::astrometry.
o Are there any experts out there who understand the subject matter well enough to provide a robust implementation or atleast guidance on the matter?
I have a fair amount of experience with astrometry software, but not tons of free time. I would be happy to discuss interface issues and, where possible, to point you to existing implementations that might be useful. Be forewarned : this is likely to become a much bigger undertaking than it seems. To do all this correctly would require support for vector geometry, GIS, multiple time systems, etc... I would recommend trying to add some of the basic sunrise/set functionality to Date-Time first and see how that goes... Matthias