TITLE: Shiny app to visualise scaled planetary orbits on world map
DATE: 2020-04-30
AUTHOR: John L. Godlee
====================================================================


When I was in primary school I remember going into the playground
to do a fun thought experiment to try and teach us just how vast
the Solar System is, how much space there is between the planets,
and how tiny the planets are compared to the Sun. We got a football
to represent the Sun and measured the diameter. The teacher then
did some maths to calculate how far away the planets would be if
the Sun was the size of the football. The teacher then got us to
lay out a long tape measure, and stand at distances along the tape
measure to represent the planets. One child would be Jupiter,
another child would be Saturn and get to hold a hula hoop to
represent the rings.

I was talking with a friend who now works in science communication
about this and I started to think about a place for a web-app that
lets you define the size of your Sun model and then displays on a
map the correctly scaled full orbits of the planets. You could say
to your audience "if the Sun was 30 cm diameter, Neptune would be
in the next town over".

I only know how to make web apps in R Shiny, so I made one, and
published it here.

 [here]: https://johngodlee.shinyapps.io/orbit_app/

The most interesting parts of this from a programming point of view
were (a) learning how to define ellipses mathematically, using
their major axis, minor axis, and eccentricity, and (b)
transforming the coordinate systems between the appropriate UTM
zone and Latitude/Longitude measurements for display on the map. I
also learned a lot about reactive values in Shiny in the process.
In particular, I learned a lot of terminology to describe the
geometry of the planetary orbits, for example:

-   Longitude of perihelion/periapsis - Angular direction of major
axis of orbit if the inclination equalled the reference plane
-   Argument of perihelion/periapsis - The vertical angle of the
major axis from the reference plane
-   Orbital eccentricity
-   Longitude of ascending node

 ![Screenshot of Shiny app showing
orbits](https://johngodlee.xyz/img_full/orbit/scrot.png)