Visualizations
149 / 500

149 · Astronomy

Starry Messenger

Jupiter's moons seen through a small telescope and sketched night by night in 1610.

Positions come from Meeus' theory of the Galilean satellites: Earth's and Jupiter's mean anomalies give Jupiter's distance and phase angle, each moon's longitude is measured from superior conjunction with light time and mutual perturbations, and its offset from the planet is r sin u Jupiter radii. The mean motions lock the inner three in the Laplace resonance, so u1 minus 3 u2 plus 2 u3 stays at 180 degrees. Each night one Italian hour after sunset in Padua, a sketch is inked into the notebook the way Galileo drew them, leaving out any moon behind or in front of the disc, outside the roughly 19 arcminute field, or too close to a neighbour to split; the first sketches agree with his (two stars east and one west on 7 January, all three west on the 8th, just two east on the 10th and 11th, four on the 13th), and the 9th and 14th are overcast as they were. In the eyepiece, faint field stars drift past as Jupiter retrogrades, and the orbits view tips the picture over by the line of sight until each sketched star can be traced to a moon on its circle.

Try it. Click the eyepiece (or press O) to tip it over into the top-down orbits and back. Drag sideways on the eyepiece to scrub through the hours. Click a notebook entry to return to that night, and the page edges to leaf back through earlier pages. The buttons step a night either way, pause, and change the pace; arrow keys do the same.

  • Galilean satellite theory
  • Laplace resonance
  • Sunset from solar declination
  • Hand-jittered lettering
  • Procedural paper and wood

View the source · one module, plus a small shared runtime for sizing, the animation loop and input

Build your own

Paste this into Claude Code, Codex or any coding agent to get a simple version running, then take it wherever you like.

Build a simulation of Galileo observing Jupiter's four moons, with JavaScript and the HTML canvas element. Put everything in a single index.html file with no libraries or build step, so I can open it directly in a browser.

Start simple:
- Make a canvas that fills the window, stays sharp on high-DPI screens (scale by devicePixelRatio), and resizes with the window.
- Model the four moons on circular orbits around Jupiter with their real radii (5.9, 9.4, 15.0 and 26.4 Jupiter radii) and periods (1.769, 3.551, 7.155 and 16.689 days). Start Io, Europa and Ganymede so that angle(Io) - 3 angle(Europa) + 2 angle(Ganymede) = 180 degrees; that resonance holds forever.
- We see the system edge-on, so each moon appears at x = r sin(angle) beside the planet. Draw a round dark telescope view on the left with Jupiter as a small disc and each moon as a soft point of light, and hide a moon when it is within one radius of the centre.
- Advance time by about one day per second. Once per day, add a line to a paper notebook page on the right: the date, then a circle for Jupiter and a small hand-drawn asterisk for each visible moon at its position.

Once that works, make it beautiful:
- Write the entries progressively, character by character, with a tiny random rotation and baseline jitter per letter so it looks handwritten, and draw each star after the circle like a pen would.
- Give the paper texture (noise stains, faint fibres, darker edges) and put the page on a dark wooden desk lit warmly from one corner.
- Add a button that tilts the telescope view by the line of sight until you see the orbits from above, with dotted lines dropping from each moon to where it appears in the sketch.

Explain the key ideas in short code comments. When you're done, tell me how to open it and suggest three directions I could take it next, such as using Meeus' real satellite theory to start on 7 January 1610, adding cloudy nights, or page turns when the notebook fills.
PreviousGlyph RasterizerLetters become pixels: exact-area scanline coverage, subpixel RGB and hinting. NextConvection CellsWater heated from below boils into mushroom plumes and rolling convection cells.

Related visualizations

  • Kirkwood GapsAstronomy Thousands of asteroids and Jupiter's resonances carving gaps into a featureless belt.
  • Retrograde LoopsAstronomy Why Mars backs up against the stars, drawn by Copernicus and Ptolemy side by side.
  • Ground TracksAstronomy The snakes, loops and figure eights real orbits trace over a turning world.
  • AnalemmaAstronomy A garden noon mark traces the figure eight of Earth's orbit, one stud a day.
  • Grand TourGames Plan a probe's slingshot route past Jupiter, Saturn, Uranus and Neptune.
  • Orbital ResonanceAstronomy A seven-planet resonant chain that chimes on every transit and weaves its own spirograph.
  • Transit HunterAstronomy Planets dim a spotted star; a box-least-squares search and RV fit find them.
  • Star TrailsAstronomy A long exposure builds over a mountain camp as the sky wheels around the celestial pole.
  • TotalityAstronomy A total solar eclipse from a lakeshore, driven by the real shadow geometry.

Use ← and → to move between demos. While the canvas has focus, keys go to the demo instead.

← More from Emergent Mind Labs