aboutsummaryrefslogtreecommitdiffstats
path: root/src/rigidbody.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/rigidbody.cpp')
-rw-r--r--src/rigidbody.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/rigidbody.cpp b/src/rigidbody.cpp
index 3f719784..4d774937 100644
--- a/src/rigidbody.cpp
+++ b/src/rigidbody.cpp
@@ -3,14 +3,21 @@
namespace yage
{
-RigidBody::RigidBody(const glm::vec2 &center_of_mass, double mass, const glm::vec2 &velocity, bool gravity) :
- Body(center_of_mass, mass, velocity, gravity)
+RigidBody::RigidBody(const glm::vec2 &center_of_mass, double mass, const glm::vec2 &force, const glm::vec2 &velocity, bool gravity) :
+ Body(center_of_mass, mass, force, velocity, gravity)
{}
void RigidBody::applyForce(const glm::vec2 &force)
{
+ // set the time_step for 60fps
+ double time_step=1.0/60.0;
+
// a=F/m
- glm::vec2 acceleration(force.x/mass_, force.y/mass_);
+ glm::vec2 acceleration((force_.x+force.x)/mass_, (force_.y+force.y)/mass_); // = a(t0)
+
+ glm::vec2 intermediate_velocity=acceleration+glm::vec2(acceleration.x*time_step/2, acceleration.y*time_step/2);
+
+ velocity_=acceleration+glm::vec2(intermediate_velocity.x*time_step, intermediate_velocity.y*time_step);
}
} // yage