This post shows how the orbits some planets appear from other planets. I’ve give a few of my favorite examples and include a Python program you could use to create your own plots.

We will assume the planets move in circles around the sun. They don’t exactly—they don’t *exactly* move in ellipses either—but their orbits are much closer to circles than most people realize. More on that here.

## Venus / Earth

The ratio of Earth’s orbital period to that of Venus is almost exactly 13 to 8, so the view of Venus from Earth is nearly periodic with period 8 (Earth) years.

This is also the view of Earth from Venus. As the code below shows, the view of *X* from *Y* is the same as the view of *Y* from *X*.

## Jupiter / Saturn

The ratio of Saturn’s orbital period to that of Jupiter is nearly 5 to 2. If this ratio were exactly, the figure below would repeat itself every two Saturnine years. But the following plot is over 4 Saturnine years, showing that years 3 and 4 don’t exactly retrace the path of years 1 and 2.

## Uranus / Earth

Here’s what the orbit of Uranus looks like from Earth.

We see a big circle of tight little circles because the ratio of the distances from the sun is large.

## Mercury / Venus

Here’s what Mercury looks like from Venus.

## Jovian moons

The same math that describes planets around the sun describes moons orbiting a planet. Here is what the orbit of Ganymede looks like from Callisto, and vice versa, as they orbit Jupiter. Ganymede completes 7 orbits in the time it takes Callisto to complete 3 orbits.

## Python code

Here’s the code that produced the plots.

import matplotlib.pyplot as plt from numpy import linspace, sin, cos, pi period = { 'mercury' : 87.96926, 'venus' : 224.7008, 'earth' : 365.25636, 'mars' : 686.97959, 'ceres' : 1680.22107, 'jupiter' : 4332.8201, 'saturn' : 10755.699, 'uranus' : 20687.153, 'neptune' : 60190.03 } dist = lambda T : T**(2/3) # Kepler def plot_orbit(planet1, planet2, periods=10): T1 = period[planet1] T2 = period[planet2] d1 = dist(T1) d2 = dist(T2) theta = linspace(0, 2*pi*periods, 1000) x = d1*cos(T2*theta/T1) - d2*cos(theta) y = d1*sin(T2*theta/T1) - d2*sin(theta) plt.gca().set_aspect("equal") plt.axis('off') plt.plot(x, y) plt.show() plot_orbit("venus", "earth", 8) plot_orbit("jupiter", "saturn", 4) plot_orbit("uranus", "earth", 57) plot_orbit("mercury", "venus", 9)

Reminds me of Bode’s Law predicting the spacing of planets: https://en.wikipedia.org/wiki/Titius%E2%80%93Bode_law

The title of the post made me think you were going to mention retrograde motion: https://en.wikipedia.org/wiki/Retrograde_and_prograde_motion

Very nice, elegant and beautiful.

Do you have any literature reference for this?

There appears to be a relation to the old children’s game, spirograph (https://en.wikipedia.org/wiki/Spirograph).

I used Wolfram Alpha to look up the periods and derived the equations myself.

Spirograph is great. When I was preparing to teach a calculus class years ago we got to the section on parametrized curves and I thought “This looks like Spirograph drawings!”. I went to a toy store and bought a Spirograph set and brought it to class the next day. I thought this was terrific, but they were unimpressed.