From be4e2aff798c049e2bffc11eaf097521be1ce5ea Mon Sep 17 00:00:00 2001 From: Rosyid Haryadi Date: Mon, 11 Dec 2023 11:32:22 +0700 Subject: add generalized newtonian gravity in N-dimensional space --- src/main.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src') diff --git a/src/main.c b/src/main.c index 99bb898..1d76ca5 100644 --- a/src/main.c +++ b/src/main.c @@ -101,6 +101,15 @@ Vector2 computeGravity(Ball *ball1, Ball *ball2, Physics physics) { return Vector2Scale(Vector2Normalize(displacement), gravityMag); } +Vector2 computeGravityNDimension(Ball *ball1, Ball *ball2, Physics physics, int dimension) { + // Generalisasi. Nyoba kalo ada N-dimensi ruang + Vector2 displacement = Vector2Subtract(ball1->pos, ball2->pos); + float distance = Vector2Length(displacement); + float distanceFactor = (float)pow(distance, dimension - 1); + float gravityMag = (physics.gravityConstant * ball1->mass * ball2->mass) / distanceFactor; + return Vector2Scale(Vector2Normalize(displacement), gravityMag); +} + void doUpdate(Ball **balls, int totalBalls, Physics physics) { float dt = GetFrameTime(); for (int i = 0; i < totalBalls; i++) { -- cgit v1.2.3-70-g09d2