This is a Newtonian gravitational simulator written using Three.js. The bodies orbit using the following formula: where:
The simulation often behaves differently between runs. My assumption is that this is due to miniscule differences in timing. An -body system is inherrently chaotic, meaning that small changes to input parameters can cause huge changes in overall behaviour, so these small difference in timing may have a large effect.
You can see the source code hosted on Github, as well as planned features.