One thing I'd never really considered before is how frequently bodies get ejected at high speed from the simulation, especially as the number of initial bodies is increased. Suddenly made me realise that the "big bang" which previously seemed a bit of a random and magical theory (obvious question is why would the universe be expanding from a single point when gravity would be immense) now seems a lot more plausible without needing any "magic" to justify it.
Tried writing an electrostatic particle simulator in Turbo Pascal 7 with BGI as a teen, a handful of particles before it crawled. Then saw a galaxy collision sim on a CD-ROM magazine disc handling thousands of bodies smoothly. Thought it was assembly tricks.. now I'm sure it's algorithmic (avoiding N**2 runtime) but never dug into the specifics. Are charges vs gravity sims essentially the same n-body problem?
I triggered some bug by pausing the simulation, setting the mass of one of the objects to 29.1, then resuming. The lighter objects bounced into the massive objects a few times, then all three objects were suddenly ejected with a very high velocity.
I didn’t realize something until I used this simulation: with three bodies you can eject one body in one direction and the barycentre of the remaining two in another. This means that compared to the original frame of reference you have an orbiting pair that moves.
It’s one of those things that seems so obvious and yet actually seeing it is a really important step in understanding.
This is really lovely work! Simple to use, surprisingly solid, and just a pleasure to poke around with. The fact it runs in the browser is a bit of magic on its own.
One idea for later might be a few preset systems, such as Alpha Centauri or other known three-body systems. It would give people a quick way to drop into something real before they start making chaos of their own.
Thanks so much, really appreciate it! I’ve been focusing the presets on stable or interesting solutions that aren’t tied to real systems, but adding a few real examples like Alpha Centauri would fit in nicely. I’ll keep that on the list for future updates.
Starting out with the stable preset I had no idea how hard it would be to not make a object slingshot out. But it is a really fun sim, I think I will let my kid play with it.
Nice! It would be interesting to visualize the total momentum vector, IIRC Verlet being symplectic should be good at preserving symmetries, whereas RK4 is good at conserving energy.
Thank you! Your 2D version is great, I love seeing how different people approach this stuff. As for integrators, I currently only have Velocity Verlet and RK4 (can change in the advanced settings). I started with just Verlet, but to get some of the presets to behave properly I ended up needing RK4 as well. I’ve been thinking about adding adaptive methods next, but I'll take a look at the methods you've got listed too. Everything is still running in plain JS for now. I started moving some of the work into web workers but haven’t finished that part yet.
Symplectic integrators are the approach I used for some old galaxy simulations. Page 5 on the attached paper was my main reference, eq 22
https://arxiv.org/pdf/cond-mat/0110585
I believe this is used in several academic codes for long term N-body calculations.
Were you by any chance inspired to make this because of the three body series by Cixin Liu? Or were you moreso just inspired because the simulation/math/physics are interesting?
Thanks! The Three-Body series definitely helped spark the idea, and the URL is a little nod to the books. I also took some simulation classes back in college, so the math and physics side pulled me in too. It’s crossed my mind that it could be fun to add a kind of Trisolaran mode that tracks a small planet and how habitable its position is throughout the orbits.
I spent a long time playing with the sim. Nice work.
Most of the random data sets that I ran ended up with a two body system, where the third body was flung far into space never to return. However, some of these were misleading. I had one running for 15 minutes at 5x, and the third body did eventually return.
Question, can you mathmatically plot a trajectory across time X and energy required to see when it's met and how long it would take given a start position or something? Or is the simulation so complex that you can never project.
Oh never mind I see answers to this elsewhere here, cheers.
> However, some of these were misleading. I had one running for 15 minutes at 5x, and the third body did eventually return.
That's not misleading. Real three-body orbital systems show this same behavior. Consider that such a system must obey energy conservation, so only a few extreme edge cases lose one of its members permanently (not impossible, just unlikely).
Ironically, because computer simulators are based on numerical DE solvers, they sometimes show outcomes that a real orbital system wouldn't/couldn't.
I recently thought that if life supposedly happened by chance then it should be same for the three-body problem: naturally occurred solutions floating here and there somewhere.
The relative scales might be a bit hard to put in the simulation. Roughly 400 to 1 for Earth-Sun to Earth-Moon. It would be fun to set that up and view from Earth and view from Sun though.
The 3D presets are the standout here, especially the ones that move in and out of the orbital plane. The interaction feels smooth, and it’s great to see this level of detail running in the browser.
Simulating a four-body problem from the point of view of a telluric planet being juggled around by three stars. It's supposed to emulate the evolution of trisolarans from the "Three Body Problem" novel by Liu Cixin.
No, and please don’t try to learn anything from that science-free series. The author doesn't even have a Wikipedia-level understanding of what he is writing about.
N-body problems for N>3 do not have exact, closed form solutions. For N=2 the solution is an ellipse. For N=3+ there is no equation you can write down that you can just plug in t and get any future value for the state of the system.
But that is NOT the same as saying it is unpredictable. It is perfectly predictable. You just have to use one of the many numerical solutions for integrating ODEs.
The link points to one of the stable solutions, and there are actually quite a few of those. The problem is that there’s no general closed form that tells us exactly where the bodies will be in the future, so we rely on numerical methods to approximate the motion. If you hit Reset All a few times or add more bodies, you’ll start to see the chaos
An interesting corollary to this is that even if the future trajectory of a general 3-body orbit is predictable in theory using numerical methods (and infinite precision calculations), in practice the use of finite-precision floating point means that after some time the trajectory predicted by an ODE solver will diverge from the mathematically-true trajectory. Even symplectic integrators have this problem. More details on the general case of chaos are provided by this insightful blog post:
There actually is an analytical solution using a power series that actually converges (Karl Sundman's work). Unfortunately, the universe still mocks our attempts. Though the series converges, it does so incredibly slowly. From Wikipedia:
The corresponding series converges extremely slowly. That is, obtaining a value of meaningful precision requires so many terms that this solution is of little practical use. Indeed, in 1930, David Beloriszky calculated that if Sundman's series were to be used for astronomical observations, then the computations would involve at least 10^8000000 terms.
> the computations would involve at least 10^8000000 terms.
Well we could speed up that simulation pretty easily, just arrange the actual masses and velocities somewhere...
Then I thought, is there a way to scale the distances, masses and velocities to create a system with the same, but proportionally faster behavior?
One guess as to perhaps why not: As distances get small, normal matter bodies will get close enough to actually collide. Perhaps some tiny primordial black holes would be useful.
When you say 'stable' here, do you mean 'periodic' or are these solutions actually stable in the face of small perturbations (as opposed to the sensitive dependence on initial conditions that we'd expect from a chaotic system)?
> No physics expert but isn't this unpredictable (based on what I saw in series) ?
A three-body orbital problem is an example of a chaotic system, meaning a system extraordinarily sensitive to initial conditions. So no, not unpredictable in the classical sense, because you can always get the same result for the same initial conditions, but it's a system very sensitive to initial settings.
> Amd this does seem predictable, I saw this for almost a minute
The fact that it remains calculable indefinitely isn't evidence that it's predictable in advance -- consider the solar system, which technically is also a chaotic system (as is any orbital system with more than two bodies).
For example, when we spot a new asteroid, we can make calculations about its future path, but those are just estimates of future behavior. Such estimates have a time horizon, after which we can no longer offer reliable assurances about its future path.
You mentioned the TV series. The story is pretty realistic about what a civilization would face if trapped in a three-solar-body system, because the system would have a time horizon past which predictions would become less and less reliable.
I especially like the Three Body Problem series because, unlike most sci-fi, it includes accurate science -- at least in places.
An LLM couldn't provide results for a sim like this, compared to a relatively simple numerical differential equation solver, which is how this sim works. Unless you're asking whether a sim like this could be vibe-coded, if so, the answer is yes, certainly, because the required code is relatively easy to create and test.
Apart from a handful of specific solutions, there are no general closed-form solutions for orbital problem in this class, so an LLM wouldn't be able to provide one.
> Open to suggestions for additional presets or features!
Anaglyphic (red/cyan) 3D rendering would be nice. I've created a lot of anaglyphic 3D apps over the years, but they're no longer very popular -- I suspect it's the goofy glasses one must acquire and wear.
But a true 3D view of an orbital simulator like this greatly increases its impact and tutorial value.
fuck this is so cool. im currently reading deaths end from the three body trilogy and seeing the physical representation is so cool. Makes a certain moment in deaths end seem awesome.
One thing I'd never really considered before is how frequently bodies get ejected at high speed from the simulation, especially as the number of initial bodies is increased. Suddenly made me realise that the "big bang" which previously seemed a bit of a random and magical theory (obvious question is why would the universe be expanding from a single point when gravity would be immense) now seems a lot more plausible without needing any "magic" to justify it.
Suggestion: add a preset for a configuration of the Painleve conjecture. https://en.wikipedia.org/wiki/Painlev%C3%A9_conjecture
Tried writing an electrostatic particle simulator in Turbo Pascal 7 with BGI as a teen, a handful of particles before it crawled. Then saw a galaxy collision sim on a CD-ROM magazine disc handling thousands of bodies smoothly. Thought it was assembly tricks.. now I'm sure it's algorithmic (avoiding N**2 runtime) but never dug into the specifics. Are charges vs gravity sims essentially the same n-body problem?
They might have been using the fast multipole expansion method
So beautiful, I once had a similar idea, and I'm glad to see someone bring it to life
I triggered some bug by pausing the simulation, setting the mass of one of the objects to 29.1, then resuming. The lighter objects bounced into the massive objects a few times, then all three objects were suddenly ejected with a very high velocity.
I didn’t realize something until I used this simulation: with three bodies you can eject one body in one direction and the barycentre of the remaining two in another. This means that compared to the original frame of reference you have an orbiting pair that moves.
It’s one of those things that seems so obvious and yet actually seeing it is a really important step in understanding.
This is really lovely work! Simple to use, surprisingly solid, and just a pleasure to poke around with. The fact it runs in the browser is a bit of magic on its own.
One idea for later might be a few preset systems, such as Alpha Centauri or other known three-body systems. It would give people a quick way to drop into something real before they start making chaos of their own.
Anyway, cracking project.
Thanks so much, really appreciate it! I’ve been focusing the presets on stable or interesting solutions that aren’t tied to real systems, but adding a few real examples like Alpha Centauri would fit in nicely. I’ll keep that on the list for future updates.
Starting out with the stable preset I had no idea how hard it would be to not make a object slingshot out. But it is a really fun sim, I think I will let my kid play with it.
Nice! It would be interesting to visualize the total momentum vector, IIRC Verlet being symplectic should be good at preserving symmetries, whereas RK4 is good at conserving energy.
Super cool!
I've been working on some n-body code too, currently native only though: https://www.youtube.com/watch?v=rmyA9AE3hzM
This is amazing! Nicely done!
I did something similar, mostly 2D here:
https://www.nhatcher.com/three-body-periodic/
(Mine is just unfinished)
Thank you! Your 2D version is great, I love seeing how different people approach this stuff. As for integrators, I currently only have Velocity Verlet and RK4 (can change in the advanced settings). I started with just Verlet, but to get some of the presets to behave properly I ended up needing RK4 as well. I’ve been thinking about adding adaptive methods next, but I'll take a look at the methods you've got listed too. Everything is still running in plain JS for now. I started moving some of the work into web workers but haven’t finished that part yet.
Symplectic integrators are the approach I used for some old galaxy simulations. Page 5 on the attached paper was my main reference, eq 22 https://arxiv.org/pdf/cond-mat/0110585 I believe this is used in several academic codes for long term N-body calculations.
I would be very curious to compare notes on the integrators you used. How good do they perform in general?
In the avobed shared you can go to the settings a pick an integrator. I did the integrators in wasm although I suspect js is just as fast.
Color me impressed! I love the ammount of settings you can play with. I still need to understand what happens whe yu add more bodies though.
How about a perturb button so those special stable orbits can be nudged just enough to destabilize them.
It destabilized after a few minutes on my phone.
Nice work!
Were you by any chance inspired to make this because of the three body series by Cixin Liu? Or were you moreso just inspired because the simulation/math/physics are interesting?
Thanks! The Three-Body series definitely helped spark the idea, and the URL is a little nod to the books. I also took some simulation classes back in college, so the math and physics side pulled me in too. It’s crossed my mind that it could be fun to add a kind of Trisolaran mode that tracks a small planet and how habitable its position is throughout the orbits.
It was nice of you to add that stable era to the submission URL. It was good while it lasted. Oh well, Time to DEHYDRATE
I think the URL is telling
Nightfall by Asimov was a 7 bodies problem - https://en.wikipedia.org/wiki/Nightfall_(Asimov_novelette_an...
And to be fair, Liu Cixin's book is a 4 bodies problem :)
This made me irrationally annoyed, lol. But that was only the start (I've only seen the TV show though)
Seriously there was so much wrong with that book.
I spent a long time playing with the sim. Nice work.
Most of the random data sets that I ran ended up with a two body system, where the third body was flung far into space never to return. However, some of these were misleading. I had one running for 15 minutes at 5x, and the third body did eventually return.
It might be fun to add some kind of visualization showing when a body has enough energy to potentially escape the system.
Question, can you mathmatically plot a trajectory across time X and energy required to see when it's met and how long it would take given a start position or something? Or is the simulation so complex that you can never project. Oh never mind I see answers to this elsewhere here, cheers.
> However, some of these were misleading. I had one running for 15 minutes at 5x, and the third body did eventually return.
That's not misleading. Real three-body orbital systems show this same behavior. Consider that such a system must obey energy conservation, so only a few extreme edge cases lose one of its members permanently (not impossible, just unlikely).
Ironically, because computer simulators are based on numerical DE solvers, they sometimes show outcomes that a real orbital system wouldn't/couldn't.
I don’t understand. How would energy not be conserved if one flew away? It’s not in the system, but it’s still out there?
I recently thought that if life supposedly happened by chance then it should be same for the three-body problem: naturally occurred solutions floating here and there somewhere.
There’s a big one in the sky right now - the Earth-Moon-Sun system.
The relative scales might be a bit hard to put in the simulation. Roughly 400 to 1 for Earth-Sun to Earth-Moon. It would be fun to set that up and view from Earth and view from Sun though.
Looks very nice!
I think I found a bug: after pausing, moving a body and unpausing, I cannot move the camera. Changing "follow" to something and back to "none" helps.
The 3D presets are the standout here, especially the ones that move in and out of the orbital plane. The interaction feels smooth, and it’s great to see this level of detail running in the browser.
I really enjoyed the book series. This is an amazing work! Thanks for sharing.
There is also this fun website: https://labs.sense-studios.com/threebody/index.html
Simulating a four-body problem from the point of view of a telluric planet being juggled around by three stars. It's supposed to emulate the evolution of trisolarans from the "Three Body Problem" novel by Liu Cixin.
No physics expert but isn't this unpredictable (based on what I saw in series) ?
Amd this does seem predictable, I saw this for almost a minute
No, and please don’t try to learn anything from that science-free series. The author doesn't even have a Wikipedia-level understanding of what he is writing about.
N-body problems for N>3 do not have exact, closed form solutions. For N=2 the solution is an ellipse. For N=3+ there is no equation you can write down that you can just plug in t and get any future value for the state of the system.
But that is NOT the same as saying it is unpredictable. It is perfectly predictable. You just have to use one of the many numerical solutions for integrating ODEs.
The link points to one of the stable solutions, and there are actually quite a few of those. The problem is that there’s no general closed form that tells us exactly where the bodies will be in the future, so we rely on numerical methods to approximate the motion. If you hit Reset All a few times or add more bodies, you’ll start to see the chaos
An interesting corollary to this is that even if the future trajectory of a general 3-body orbit is predictable in theory using numerical methods (and infinite precision calculations), in practice the use of finite-precision floating point means that after some time the trajectory predicted by an ODE solver will diverge from the mathematically-true trajectory. Even symplectic integrators have this problem. More details on the general case of chaos are provided by this insightful blog post:
https://www.stochasticlifestyle.com/how-chaotic-is-chaos-how...
There actually is an analytical solution using a power series that actually converges (Karl Sundman's work). Unfortunately, the universe still mocks our attempts. Though the series converges, it does so incredibly slowly. From Wikipedia:
The corresponding series converges extremely slowly. That is, obtaining a value of meaningful precision requires so many terms that this solution is of little practical use. Indeed, in 1930, David Beloriszky calculated that if Sundman's series were to be used for astronomical observations, then the computations would involve at least 10^8000000 terms.
> the computations would involve at least 10^8000000 terms.
Well we could speed up that simulation pretty easily, just arrange the actual masses and velocities somewhere...
Then I thought, is there a way to scale the distances, masses and velocities to create a system with the same, but proportionally faster behavior?
One guess as to perhaps why not: As distances get small, normal matter bodies will get close enough to actually collide. Perhaps some tiny primordial black holes would be useful.
When you say 'stable' here, do you mean 'periodic' or are these solutions actually stable in the face of small perturbations (as opposed to the sensitive dependence on initial conditions that we'd expect from a chaotic system)?
> No physics expert but isn't this unpredictable (based on what I saw in series) ?
A three-body orbital problem is an example of a chaotic system, meaning a system extraordinarily sensitive to initial conditions. So no, not unpredictable in the classical sense, because you can always get the same result for the same initial conditions, but it's a system very sensitive to initial settings.
> Amd this does seem predictable, I saw this for almost a minute
The fact that it remains calculable indefinitely isn't evidence that it's predictable in advance -- consider the solar system, which technically is also a chaotic system (as is any orbital system with more than two bodies).
For example, when we spot a new asteroid, we can make calculations about its future path, but those are just estimates of future behavior. Such estimates have a time horizon, after which we can no longer offer reliable assurances about its future path.
You mentioned the TV series. The story is pretty realistic about what a civilization would face if trapped in a three-solar-body system, because the system would have a time horizon past which predictions would become less and less reliable.
I especially like the Three Body Problem series because, unlike most sci-fi, it includes accurate science -- at least in places.
There are stable solutions. See: Earth’s Moon (or any other planetary moon in the solar system).
nice simulator…
one issue i have always had with the n-body calculations is how can you be sure there is exactly n?
Is this with Gemini 3?
> Is this with Gemini 3?
An LLM couldn't provide results for a sim like this, compared to a relatively simple numerical differential equation solver, which is how this sim works. Unless you're asking whether a sim like this could be vibe-coded, if so, the answer is yes, certainly, because the required code is relatively easy to create and test.
Apart from a handful of specific solutions, there are no general closed-form solutions for orbital problem in this class, so an LLM wouldn't be able to provide one.
> Open to suggestions for additional presets or features!
Anaglyphic (red/cyan) 3D rendering would be nice. I've created a lot of anaglyphic 3D apps over the years, but they're no longer very popular -- I suspect it's the goofy glasses one must acquire and wear.
But a true 3D view of an orbital simulator like this greatly increases its impact and tutorial value.
fuck this is so cool. im currently reading deaths end from the three body trilogy and seeing the physical representation is so cool. Makes a certain moment in deaths end seem awesome.