Rendering solar/lunar eclipse maps

# Rendering solar/lunar eclipse maps

I introduced the possibility of rendering solar/lunar eclipse maps in version 1.95 of JPARSEC, but in version 1.96 I have fixed some bugs and made this feature enough robust. It is still far from being perfect, and the maps themselves are not as good as those in other (comercial) tools, but anyway I'm happy with them for now.

As reference for the implementation of the eclipse maps I have taken the Elements of solar eclipses 1951-2200, by Jean Meeus. To implement the code faster I have borrowed some code from the interesting work by J. García Ferrer (in Spanish). I have included the Besselian elements for all solar eclipses between year 3000 B.C. and 3000 A.D., kindly supplied by Shinobu Takesako from his EmapWin Ver. 2.12 (2012.11.17) program. These elements are computed using JPL DE422, so I expect them to be more accurate than those used by Fred Spenak for the NASA eclipse page, specially for ancient eclipses. For lunar eclipses I simply show the relative position of the Moon respect Earth's shadow cone, using the ephemerides method selected in the EphemerisElement object. The instants of the different contacts shown in lunar eclipses are those computed using LunarEclipse class, instead of the approximate values that result from the algorithm described by J. García Ferrer. In case of using S. Moshier's algorithms, all lunar eclipses between year 1350 B.C. and 3000 A.D. are available. For ELP2000 theory you can go beyond these limits, but calculations will be much slower due to the iterations in LunarEclipse.

All magic is in jparsec.graph.chartRendering.RenderEclipse class. I have implemented it as in Meeus book, but it seems the method is not completely robust and some eclipses, specially those close to the poles, are difficult to show correctly. Probably there are better algorithms or a clever way to implement Meeus methods. Here are some rendering examples.

Images above show the results of the rendering for a solar and a lunar eclipse. They are shown in Spanish, but English is also supported. On top you can see the local circumstances of the eclipse and a chart showing the trajectory of the Moon respect the Sun or Earth's shadow cone. These charts are shown in horizontal coordinates, but can also be plotted in equatorial. Below this chart a map shows the vissibility of the eclipse around the world. The lines of constant time for the solar eclipse maximum are shown in this case for UT1 timescale, as in the chart of the local circumstances, and this will change in case the TimeElement object used is set to local time or whatever. Here I also had some work to try to mimic the charts shown in other tools, but I still don't know how to plot some lines properly, and, anyway, I don't like the maps full of information you can find in other places, that most people could find confusing. These kind of charts seems adequate for my Android project.

The implementation also allows to render in spherical coordinates (or even anaglyph mode), as you can see in the chart below.

I've dedicated most of the time in the last months to bug fixes in JPARSEC, and now there are just a few features I would like to implement before considering this project as closed. The Android project I've started will end becoming a program for the Android Market in the following months. Other things include telescope control, support for SPICE kernels, and numerical integration/prediction of orbits. After that I would like to learn 3d programming and to start a new project in this direction.

## Discussion

   ____   __ __   ____   ____ __  __
/___/  /_//_/  /___/  /___/    /_/