def calc_new_position(self, cur_pos): if self.impulse: self._resolve_direction_vector() else: self.engine_thrust.x, self.engine_thrust.y = 0, 0 # calculate acceleration.x drag_force = Vector( -DRAG_COEFFICIENT * self.velocity.x, -DRAG_COEFFICIENT * self.velocity.y) self.acceleration.x = (self.engine_thrust.x + drag_force.x)/self.mass self.acceleration.y = (self.engine_thrust.y + drag_force.y)/self.mass self.velocity.x = self.velocity.x + (self.acceleration.x * CLOCK.get_elasped()) self.velocity.y = self.velocity.y + (self.acceleration.y * CLOCK.get_elasped()) # might have to subtract this value.. dx = (0.5 * self.acceleration.x * CLOCK.get_elasped()**2) + (self.velocity.x * CLOCK.get_elasped()) dy = (0.5 * self.acceleration.y * CLOCK.get_elasped()**2) + (self.velocity.y * CLOCK.get_elasped()) return cur_pos.x + dx, cur_pos.y + dy
def get_elasped(self): return CLOCK.get_elasped()