#include "physic.hpp"
Physic::Physic()
- : ax(0), ay(0), vx(0), vy(0), gravity_enabled_flag(true)
+ : ax(0), ay(0), vx(0), vy(0), gravity_enabled_flag(true), gravity(10 * 100)
{
}
void
Physic::set_velocity_y(float nvy)
{
- vy = -nvy;
+ vy = nvy;
}
void
Physic::set_velocity(float nvx, float nvy)
{
vx = nvx;
- vy = -nvy;
+ vy = nvy;
}
void
float
Physic::get_velocity_y() const
{
- return -vy;
+ return vy;
}
Vector
Physic::get_velocity() const
{
- return Vector(vx, -vy);
+ return Vector(vx, vy);
}
void
void
Physic::set_acceleration_y(float nay)
{
- ay = -nay;
+ ay = nay;
}
void
Physic::set_acceleration(float nax, float nay)
{
ax = nax;
- ay = -nay;
+ ay = nay;
}
float
float
Physic::get_acceleration_y() const
{
- return -ay;
+ return ay;
}
Vector
Physic::get_acceleration() const
{
- return Vector(ax, -ay);
+ return Vector(ax, ay);
}
void
return gravity_enabled_flag;
}
+void
+Physic::set_gravity(float gravity)
+{
+ this->gravity = gravity * 100;
+}
+
+float
+Physic::get_gravity() const
+{
+ return gravity / 100;
+}
+
Vector
Physic::get_movement(float elapsed_time)
{
- float grav = gravity_enabled_flag ? 1000 : 0;
-
+ float grav = gravity_enabled_flag ? gravity : 0;
+
Vector result(
vx * elapsed_time + ax * elapsed_time * elapsed_time,
vy * elapsed_time + (ay + grav) * elapsed_time * elapsed_time
);
vx += ax * elapsed_time;
- vy += (ay + grav) * elapsed_time;
+ vy += (ay + grav) * elapsed_time;
return result;
}
-