From 2295e56851607fe4e23c5b5101adc20e68e29b0c Mon Sep 17 00:00:00 2001 From: Esko Kokkonen Date: Sat, 1 May 2010 17:23:23 +0300 Subject: [PATCH] merge_planets: Calculate new color for the remaining planet --- planet.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/planet.c b/planet.c index 2482dd9..a79c085 100644 --- a/planet.c +++ b/planet.c @@ -235,15 +235,21 @@ int gravitize_planets(struct planet *a, struct planet *b, const double time) 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); } -- 2.44.0