From 5a6fea052281262049bc2d0f506e4492c0553deb Mon Sep 17 00:00:00 2001 From: Antonio Carzaniga Date: Tue, 27 Dec 2022 18:26:03 +0100 Subject: [PATCH] no penetration also for central gravity ball --- gravity.cc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/gravity.cc b/gravity.cc index 719d72b..aeada86 100644 --- a/gravity.cc +++ b/gravity.cc @@ -91,6 +91,11 @@ void gravity_collisions (ball * begin, ball * end) { double d2 = vec2d::dot(b_c, b_c); double r = b->radius + g_r; if (d2 <= r*r) { + double d = sqrt(d2); + if (d <= b->radius) + b->position = vec2d{width/2.0,height/2.0+r}; + else + b->position += (r - d)/d*b_c; double f = vec2d::dot(b->velocity, b_c); if (f < 0) { f /= d2;