#ifdef HAVE_CONFIG_H # include #endif #include "logic.hh" #include "vehicle.hh" #include "view.hh" #include int Logic::lvalue(Vehicle *) { return -1; } double Logic::calculate(Vector &, Vehicle *) { return 0; } Logic * Logic::null_logic() { static Logic *nl = 0; if (!nl) nl = new Logic(); return nl; } void Logic::draw(Vehicle *, int, View *) { } void Logic::print() { fprintf(stderr, "??"); } LinearLogic::LinearLogic(int sensor, double y_intercept, double slope) : _sensor(sensor), _y_intercept(y_intercept), _slope(slope) { } double LinearLogic::calculate(Vector &sensations, Vehicle *) { return _y_intercept + sensations[_sensor] * _slope; } void LinearLogic::draw(Vehicle *vehicle, int actuator, View *view) { Point p1 = vehicle->sensor_position(_sensor); Point p2 = vehicle->actuator_position(actuator); view->draw_line(vehicle->sensor_gc(), p1, p2); }