#ifdef HAVE_CONFIG_H # include #endif #include "actuator.hh" #include "vehicle.hh" #include "view.hh" #include "world.hh" Actuator::Actuator(const Point &delta, double strength) : _delta(delta), _rotation(0), _strength(strength) { _unit_torque = sin(_delta.angle() - _rotation) * _delta.magnitude(); } void Actuator::draw(Vehicle *vehicle, View *view) { double angle = vehicle->rotation(); Point sensor_pos = vehicle->position() + _delta.rotated(angle); Point broad_edge = Point(0, 5).rotated(_rotation + angle); Point long_edge = Point(8, 0).rotated(_rotation + angle); Point corner[4]; corner[0] = sensor_pos; corner[0].x -= (long_edge.x + broad_edge.x) / 2; corner[0].y -= (long_edge.y + broad_edge.y) / 2; corner[1] = corner[0] + long_edge; corner[2] = corner[0] + long_edge + broad_edge; corner[3] = corner[0] + broad_edge; view->fill_poly(vehicle->sensor_gc(), 4, corner); }