
Mika Heiskanen wrote:
I would like to think that it would be possible to create a library for common astronomical calculations, and I think boost might be the proper place to create one for the C++ community.
You might want to look into how it could integrate with geometry libraries, if that is useful. There has been much discussion about computational geometry libraries candidates for Boost. Of course integration with Boost.DateTime would be useful for all kinds of date/time operations.
However, there are some complications:
o There are several ways to define twilight times, for example civil, nautical and astronomical.
Isn't that just a matter of units?
o The sun may set/rise more than once during a day in polar regions, or it may do neither.
o What is the definition for the length of the day if sunrise/sunset occurs more than once during a day?
To me, the length of the day doesn't depend on sunrise/sunset but on the time the Earth takes to perform a rotation on its axis. That is to say it doesn't vary. (or it varies but so slowly that we don't care) The duration of sunlight during the day or the time between a sunset and its previous sunrise might also be interesting, but they're not really days anymore, but rather durations of daylight.
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 have no idea what makes the most sense, I know nothing of astronomy. In any case, all things should be clearly modelled and documented with non-ambiguous definitions.
o Would a boost::astronomy namespace as implied above be a good addition to boost?
I suppose any finely crafted C++ library with a liberal license and which has its use has its place in boost. As a side note, shouldn't an astronomy library take care of handling celestial bodies in the universe, and thus model their physical interactions with relativity theory? Maybe an Earth-centric library should be given another more restricted name, more tied to its scope.