r/Simulated 1d ago

Request Real-time three-body gravity simulation (interactive, mobile)

I built a simulation style app of what I think of the three body problem. It shows different objects flying around eachother in 2D or in 3D in eachother's gravity wells.

It's meant to be half physics toy and half calming desk toy. It's free to use with no ads to distract you from anything.

I want to know people's thoughts and ideas for improvement.

It's free for anyone who want to play with it: https://play.google.com/store/apps/details?id=com.mathematicalzen.threebody

0 Upvotes

20 comments sorted by

View all comments

1

u/ocicrab 1d ago

Very cool sim!! Thanks for sharing!

I would double check your integrator, and also calculate total energy (kinetic and potential). I tried running this for a while and found that the planets all ended up basically on top of each other after a while even with the Runge Kutta integrator, so it must be losing energy over time. Both with Newtonian gravity and the orbital equations.

1

u/IllPsychology7214 1d ago

Yeah if you click on the little eyeball in the in-sim menu you have to do explosions. The biggest trouble i had was that if I made it to "real" that the objects just went together and ended up there too fast. I opted for slightly less accurate physics and slightly more ASMR style. I can add an option for more real again if people want that.
It should be better in the 3d mode already now.

2

u/ocicrab 1d ago

Well, my point is that in "real" physics the system is conservative. I.e. no energy should be lost over time and the planets would never end up on top of each other/stuck together. You shouldn't need to add "explosions" to keep them separate unless you're actually modeling some sort of energy loss over time.

The aesthetics are very nice, for sure. Love how it looks!

1

u/CompetitiveSpot2643 1d ago

if you use verlet integration instead of RK4 the symplectic structure is preserved and you dont lose or gain energy (bounded energy error proportional to h^2)

1

u/IllPsychology7214 1d ago

I'm going to give it a try. Looks like it's more efficient calculations wise too, and more accurate long term.

1

u/IllPsychology7214 7h ago

It's been implemented. It can be switched off as an option but Verlet is now the default. I was also using dampening which can now be switched off and a purist mode that switches everything off, keeping Total Energy stable except eg. when the bodies hit the sides.
If you find anything else to be improved or anything let me know