blob: 4d7749375ad067788c0853dffc5cb9ae7ee11be3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
#include "Physics/rigidbody.hpp"
namespace yage
{
RigidBody::RigidBody(const glm::vec2 ¢er_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+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
|