summaryrefslogtreecommitdiffhomepage
path: root/src/physics.cpp
diff options
context:
space:
mode:
authorarngo <[email protected]>2022-11-05 20:53:49 -0400
committerarngo <[email protected]>2022-11-05 20:53:49 -0400
commitceb76492b07dbeda6949f35008999d0f400e49fd (patch)
tree161a884d4930533a0e2521ea05fc4f806bb38de5 /src/physics.cpp
parent3c8e6238ebed92691dac9393893ca6214ab060ab (diff)
downloadorbital_game-ceb76492b07dbeda6949f35008999d0f400e49fd.tar.gz
orbital_game-ceb76492b07dbeda6949f35008999d0f400e49fd.zip
move gravity force calculation to separate function
Diffstat (limited to 'src/physics.cpp')
-rw-r--r--src/physics.cpp12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/physics.cpp b/src/physics.cpp
index d8045a5..df45085 100644
--- a/src/physics.cpp
+++ b/src/physics.cpp
@@ -18,13 +18,15 @@ namespace Physics {
//0.01667
void step(float deltaTime) {
- // calculate velocity change
- //pow((rock.position.x - ship.position.x),2) + pow((rock.position.y - ship.position.y),2);
- float distance = Vector2DistanceSqr(ship.position, rock.position);
- Vector2 force = Vector2Normalize(Vector2Subtract(rock.position, ship.position));
- ship.velocity = Vector2Add(ship.velocity, Vector2Scale(force, ship.mass * (rock.mass / (distance/*this is pre squared*/)) * deltaTime));
// calculate position change
+ Vector2 grav_force = get_grav_force(ship, rock);
+ ship.velocity = Vector2Add(ship.velocity, Vector2Scale(grav_force, deltaTime));
ship.position = Vector2Add(ship.position, Vector2Scale(ship.velocity, deltaTime));
}
+ Vector2 get_grav_force(Body body1, Body body2) {
+ float distance_sqr = Vector2DistanceSqr(body1.position, body2.position);
+ Vector2 direction = Vector2Normalize(Vector2Subtract(body2.position, body1.position));
+ return Vector2Scale(direction, body1.mass * (body2.mass / (distance_sqr)));
+ }
}