When you try to make a collision handling system, but just end up making a system that has no collisions at all... Technically, you've solved the problem.
It's a sort of accidental evolutionary process, the orbits that don't have collisions survive while those that do get mutated into a different orbit where they get tested again. Very good example of emergence.
I might be wrong but I think the reason this happens is that there's no loss of momentum when they collide just a change of the direction of momentum, so what happens is that they push each other out of the way but continue to move at the same speed, just in a different direction, which eventually causes the system to become stable.
So I read the code, and I would summarize it like this: basically he didn't implement velocity update when collision happens. When collision is detected (with simple radius check), he just nudged both of the spheres back away from each other just enough that they touch. The end effect is that they slide off of each other, continuing on their original path. So its like inelastic collision with no friction? Anyway it's these unique ingredients that drive the system to a stable state with no collision. Very cool!
This feels like those videos of a city traffic stop that's full of pedestrians, bikers, and cars all moving right past one another, just barely skimming without any accidents
i can imagine that if someone wanted to create a system where given any radii and position parameters had the task to find a stable orbit relationship without any collisions, it would be really difficult without the use of a neural network (and probably still really tough), but the fact you got this behavior via a bug is just hilarious. and the concept has a lot of potential as a game too. with planets… or somethin haha
If I understand the code, each ball is attracted by the center through an elastic force, while collisions directly displace pairs of overlapping particles away from each other in such a way that they end up barely touching, without modifying either of the registered speed values.