concentric circles of varying line widths

The Orrery is a virtual orrery initially built for worldbuilding purposes. It currently contains a semi-accurate model of the solar system. Distance isn’t to scale and the positions of the celestial bodies are incorrect, but the orbital speeds and relative sizes are approximately correct. 1



Create an Orrery with the any of the following options:

widthcanvas width in pixels
heightcanvas height in pixels
bgcanvas background colour
fgcanvas foreground/stroke colour
modela Model object to load into the Orrery


A Model contains a collection of celestial objects (referred to as Bodies) to load into the Orrery. A Body can have the following attributes:

ida unique identifier
tetheranother optional Body to orbit around of
vorbital velocity
ororbital radius 2
rsrotation speed
const system = new Model()

const orrery = new Orrery({
width: 800,
height: 500,
bg: '#030303',
fg: '#e4e4e4',
model: system,

the solar system
systema solaris
orbital trails 1
orbital trails 2
faerie ring
orbital trails 3
the keyhole

1 at least according to Wikipedia lol

2 For simplicity, all orbits are perfect circles. I have yet to implement Keplerian elements for more realistic orbits.