diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/physics.cpp | 12 | ||||
| -rw-r--r-- | src/physics.hpp | 1 |
2 files changed, 8 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))); + } } diff --git a/src/physics.hpp b/src/physics.hpp index a5b3b83..e26df15 100644 --- a/src/physics.hpp +++ b/src/physics.hpp @@ -16,4 +16,5 @@ namespace Physics { //0.01667 void step(float deltaTime); + Vector2 get_grav_force(Body body1, Body body2); } |
