summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRosyid Haryadi <rosyid_haryadi@protonmail.com>2023-12-11 11:32:22 +0700
committerRosyid Haryadi <rosyid_haryadi@protonmail.com>2023-12-11 11:32:22 +0700
commitbe4e2aff798c049e2bffc11eaf097521be1ce5ea (patch)
treebf8f38e41f11b7d8de4971bcf1c3430d635bdac7
parent87fd0643070fb4ec76cac6b369100460995b07e9 (diff)
add generalized newtonian gravity in N-dimensional space
-rw-r--r--src/main.c9
1 files changed, 9 insertions, 0 deletions
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++) {