Coding Eccentricities
Standing in the Shadow of the Moon
Solar eclipses
offer the unique ability to stand in the shadow of a massive solar
system body. When that moment of totality (or annularity) occurs you
get the opportunity to witness the simultaneous sunsets and sunrises
on another planetary body. The unique geometry of our Earth-Moon
system allows us to view this rare spectacle as the perceived lunar
size is nearly the exactly the same as of the Sun: There’s no other place in the solar system where this occurs.
Solar Eclipse Diagram
|
the orbit
of the Moon is planar and the geometry of it’s shadow is conical,
when cast on another rotating spherical body, the Earth, the lunar
shadow is contorted into unique and odd shapes. During a solar
eclipse, the shadow of the Moon is rarely circular, and is often an
odd ellipsoid shape that races from 10,000 to 2000 mph across the
surface of the Earth. NASA has provided excellent animations of the Moon’s traversal across the globe
during eclipses. I find it interesting that such a perfectly round
object moving in a nearly perfect plane can create such oddly
fascinating tracks across our planet.
NASA’s online animated shadow: Can non-astronomer/non-professional developer recreate this?
|
During
a total eclipse, especially from an elevated location, it is possible
to witness the lunar shadow race toward you: I want to know it is
coming!
I made it my
endeavor to see if it was possible to recreate this NASA’s shadow
images using the somewhat limited computing power of a mobile phone.
I wanted something that was self-contained and worked in an
environment without an online connection. Other websites and apps
often use pre-computed points to display an eclipse circumstance map.
My app differs from this approach as it only stores a small set of
Besselian elements (28 floating point numbers per eclipse) that
compute the entire eclipse map and animated shadow.
The Moon’s shadow near sunset from an annular solar eclipse in January 1992 as calculated by Eclipse Explorer. |
While there were
plenty of online resources to use Besselian elements to compute
eclipse times and circumstances for a particular spot on Earth, I was
at a loss to find resources to construct eclipse maps and shadow
dynamics. Being neither an astronomer, mathematical expert, or even
a full time software developer I gave it my best.
In the end, I used
JavaScript’s somewhat new ability to spawn multiple parallelcomputations to scan and interpolate points that create the maps and
animations you see in the Eclipse Explorer App. It’s not a perfect
solution, and there are other and possibly better ways to make these
computations, but it was a fantastic learning experience. I expanded
my software development skills while digging around in trigonometric
math that I haven’t dealt with in years (or ever).
Please keep all this
in mind, I’m pushing the limits of what is possible with what was
supposed to be a “scripting” programming language while also
pushing the limits of what a small handheld computer can calculate:
User results will vary and batteries will be drained: There’s no
way around it, this is a lot of math all at once all in the palm of
your hand.
Comments
Post a Comment