From 3b2e4639de929e640fe672e0d77e0faef3acc027 Mon Sep 17 00:00:00 2001 From: Yann Herklotz Date: Tue, 27 Jun 2017 10:53:12 +0100 Subject: Implementing Vector2d --- src/.#particlebody.cpp | 1 + src/particlebody.cpp | 24 ++++++++++++------------ 2 files changed, 13 insertions(+), 12 deletions(-) create mode 120000 src/.#particlebody.cpp (limited to 'src') diff --git a/src/.#particlebody.cpp b/src/.#particlebody.cpp new file mode 120000 index 00000000..dc323bf2 --- /dev/null +++ b/src/.#particlebody.cpp @@ -0,0 +1 @@ +yannherklotz@yann-arch.17879:1498487609 \ No newline at end of file diff --git a/src/particlebody.cpp b/src/particlebody.cpp index 2c463623..f882f279 100644 --- a/src/particlebody.cpp +++ b/src/particlebody.cpp @@ -5,14 +5,14 @@ namespace yage { -ParticleBody::ParticleBody(const glm::vec2 &position, +ParticleBody::ParticleBody(const Vector2d &position, double mass, - const glm::vec2 &velocity, + const Vector2d &velocity, bool gravity) : Body(position, mass, velocity, gravity) {} -void ParticleBody::applyForce(const glm::vec2 &force) +void ParticleBody::applyForce(const Vector2d &force) { force_+=force; } @@ -23,24 +23,24 @@ void ParticleBody::update() double time_step=1.0/60.0; // set the last acceleration - glm::vec2 last_acceleration=acceleration_; + Vector2d last_acceleration=acceleration_; // update the position of the body - position_.x+=velocity_.x*time_step+(0.5*last_acceleration.x*std::pow(time_step, 2)); - position_.y+=velocity_.y*time_step+(0.5*last_acceleration.y*std::pow(time_step, 2)); + //position_.x+=velocity_.x*time_step+(0.5*last_acceleration.x*std::pow(time_step, 2)); + //position_.y+=velocity_.y*time_step+(0.5*last_acceleration.y*std::pow(time_step, 2)); + + position_+=velocity_*time_step+(0.5*last_acceleration*std::pow(time_step, 2)); // update the acceleration if(gravity_) - acceleration_=glm::vec2(force_.x/mass_, (GRAVITY+force_.y)/mass_); + acceleration_=Vector2d(force_.x()/mass_, (GRAVITY+force_.y())/mass_); else - acceleration_=glm::vec2(force_.x/mass_, force_.y/mass_); + acceleration_=Vector2d(force_.x()/mass_, force_.y()/mass_); - glm::vec2 avg_acceleration=glm::vec2((acceleration_.x+last_acceleration.x)/2, - (acceleration_.y+last_acceleration.y)/2); + Vector2d avg_acceleration=(acceleration_+last_acceleration)/2.0; // update the velocity of the body - velocity_.x+=avg_acceleration.x*time_step; - velocity_.y+=avg_acceleration.y*time_step; + velocity_=avg_acceleration*time_step; } } // yage -- cgit