+void
+Physic::set_acceleration(float nax, float nay)
+{
+ ax = nax;
+ ay = nay;
+}
+
+float
+Physic::get_acceleration_x() const
+{
+ return ax;
+}
+
+float
+Physic::get_acceleration_y() const
+{
+ return ay;
+}
+
+Vector
+Physic::get_acceleration() const
+{
+ return Vector(ax, ay);
+}
+
+void
+Physic::enable_gravity(bool enable_gravity)
+{
+ gravity_enabled_flag = enable_gravity;
+}
+
+bool
+Physic::gravity_enabled() const
+{
+ 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 ? 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;
+
+ return result;
+}