From 2bba3155dafcbaafa49bbe366cb9dc9ff52a7927 Mon Sep 17 00:00:00 2001 From: Karma Riuk Date: Wed, 17 May 2023 13:27:11 +0200 Subject: [PATCH] Added the gravity vector method for polygons (kinda blindly copied and pasted it from the ball version, hope it works) --- gravity.cc | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/gravity.cc b/gravity.cc index f31588d..5f619c5 100644 --- a/gravity.cc +++ b/gravity.cc @@ -1,6 +1,7 @@ #include "gravity.h" #include "game.h" +#include "polygons.h" #include #include @@ -82,6 +83,19 @@ void gravity_change(double dx, double dy) { } } +vec2d gravity_vector(const polygon* p) { + if (constant_field) { + return g; + } else { + vec2d b_c = vec2d{width / 2.0, height / 2.0} - p->centroid(); + double r2 = vec2d::dot(b_c, b_c); + if (r2 < g_r * g_r) + return vec2d{0, 0}; + else + return g_g / r2 / sqrt(r2) * b_c; + } +} + vec2d gravity_vector(const ball* b) { if (constant_field) { return g;