diff options
author | Rosyid Haryadi <rosyid_haryadi@protonmail.com> | 2023-12-11 11:32:22 +0700 |
---|---|---|
committer | Rosyid Haryadi <rosyid_haryadi@protonmail.com> | 2023-12-11 11:32:22 +0700 |
commit | be4e2aff798c049e2bffc11eaf097521be1ce5ea (patch) | |
tree | bf8f38e41f11b7d8de4971bcf1c3430d635bdac7 /src/main.c | |
parent | 87fd0643070fb4ec76cac6b369100460995b07e9 (diff) |
add generalized newtonian gravity in N-dimensional space
Diffstat (limited to 'src/main.c')
-rw-r--r-- | src/main.c | 9 |
1 files changed, 9 insertions, 0 deletions
@@ -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++) { |