static void _merge_planets(struct planet *a, struct planet *b)
{
struct vector pa, pb, p;
+ float mass;
vector_scale(&a->speed, a->mass, &pa);
vector_scale(&b->speed, b->mass, &pb);
vector_add(&pa, &pb, &p);
+ mass = a->mass + b->mass;
if (a->mass < b->mass)
a->pos = b->pos;
- a->mass += b->mass;
+ a->r = (a->r * a->mass + b->r * b->mass) / mass;
+ a->g = (a->g * a->mass + b->g * b->mass) / mass;
+ a->b = (a->b * a->mass + b->b * b->mass) / mass;
+
+ a->mass = mass;
reshape_planet(a);
vector_div(&p, a->mass, &a->speed);
}