Gravity is by far the best force in the universe. Despite being the weakest of the “main” four (strong nuclear force, weak nuclear force, electromagnetism, gravity). It is the one that dominates given enough time and distances. All this even though it falls of inversely to the square of the distance, meaning, if you double the separation between the two objects you quarter the force, or if you cut the separation in half you quadruple the force of attraction.
It’s also one of my favorite things when creating visualizations, because things move so beautifully when you simply let gravity take over.
So I thought I would give it it’s own tiny blog post, in honor of its value 0.00000000000667
// Compute the net force acting between the invoking body a and b, and
// add to the net force acting on the invoking Body
public void addForce(Body b) {
Body a = this;
double G = 0.00000000000667;
double EPS = 0.0001; // softening parameter
double dx = b.rx - a.rx;
double dy = b.ry - a.ry;
double dist = Math.sqrt(dx*dx + dy*dy);
double F = (G * a.mass * b.mass) / (dist*dist + EPS*EPS);
a.fx += F * dx / dist;
a.fy += F * dy / dist;
}