4 // Copyright (C) 2004 Tobias Glaesser <tobi.web@gmx.de>
5 // Copyright (C) 2006 Matthias Braun <matze@braunis.de>
7 // This program is free software; you can redistribute it and/or
8 // modify it under the terms of the GNU General Public License
9 // as published by the Free Software Foundation; either version 2
10 // of the License, or (at your option) any later version.
12 // This program is distributed in the hope that it will be useful,
13 // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 // GNU General Public License for more details.
17 // You should have received a copy of the GNU General Public License
18 // along with this program; if not, write to the Free Software
19 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
26 : ax(0), ay(0), vx(0), vy(0), gravity_enabled_flag(true), gravity(10 * 100)
37 ax = ay = vx = vy = 0;
38 gravity_enabled_flag = true;
42 Physic::set_velocity_x(float nvx)
48 Physic::set_velocity_y(float nvy)
54 Physic::set_velocity(float nvx, float nvy)
61 Physic::set_velocity(const Vector& vector)
67 void Physic::inverse_velocity_x()
72 void Physic::inverse_velocity_y()
78 Physic::get_velocity_x() const
84 Physic::get_velocity_y() const
90 Physic::get_velocity() const
92 return Vector(vx, vy);
96 Physic::set_acceleration_x(float nax)
102 Physic::set_acceleration_y(float nay)
108 Physic::set_acceleration(float nax, float nay)
115 Physic::get_acceleration_x() const
121 Physic::get_acceleration_y() const
127 Physic::get_acceleration() const
129 return Vector(ax, ay);
133 Physic::enable_gravity(bool enable_gravity)
135 gravity_enabled_flag = enable_gravity;
139 Physic::gravity_enabled() const
141 return gravity_enabled_flag;
145 Physic::set_gravity(float gravity)
147 this->gravity = gravity * 100;
151 Physic::get_gravity() const
153 return gravity / 100;
157 Physic::get_movement(float elapsed_time)
159 float grav = gravity_enabled_flag ? gravity : 0;
162 vx * elapsed_time + ax * elapsed_time * elapsed_time,
163 vy * elapsed_time + (ay + grav) * elapsed_time * elapsed_time
165 vx += ax * elapsed_time;
166 vy += (ay + grav) * elapsed_time;