back to ISAAC

ISAAC - the code beneath.

A look at the stuff that makes ISAAC work.

What's ISAAC made of?

Lots of code, really. Oh, and a few textures.

Graphics are handled by the excellent three.js library.

Planet textures came from JHT's Planetary Pixel Emporium.

Planet data (initial positions and velocities) was taken from the Jet Propulsion Laboratory's HORIZONS system.

The GUI uses dat.GUI.

ISAAC itself is written in plain old vanilla JavaScript.

More details!

ISAAC uses HTML5's Canvas element (or more accurately, three.js does) to render graphics.
We use three.js' WebGL renderer if we detect your browser supports it, but fall back to the Canvas renderer if not. Several graphical features are also disabled in the Canvas renderer.

Physics calculations are done at a rate of 60 "ticks" per second, separate from the actual display frame rate.
It's OK if the display frame rate is less than 60 FPS - planets are rendered at the latest position calculated.

We use HTML5 Web Workers to push physics calculation to its own thread. Unfortunately, ISAAC won't work if your browser doesn't support these - you'll still see the Solar System, but none of the planets will move.

What exactly can I do in ISAAC?

AKA: features.

We simulate the gravitational force between all the planets - they aren't just affected solely by the Sun.

You can pan the camera around by clicking and dragging the mouse. Click on a planet to jump to it, and zoom in and out by holding the middle mouse button down and dragging the mouse. Alternatively, you can choose a planet and zoom level manually from the GUI.

The mass of each and every planet you see can be adjusted. Use the slider in the corresponding planet's menu.

The gravitational constant itself can be played with - use the slider in the Simulation Settings menu.

Things moving a little too slowly? Speed time up with the Days Per Second slider in Simulation Settings.

Licensing Information

ISAAC is licensed under the MIT License. Grab the source code on github.