#include #include "configuration-2d.h" /* Retourne un angle équivalent à , mais appartenant à l'intervalle [-PI, PI). */ static double normaliser_angle(double angle) { double r; r = fmod(angle, 2.0 * M_PI); if (r < -M_PI) r += 2.0 * M_PI; else if (r >= M_PI) r -= 2.0 * M_PI; return r; } /* Initialise la configuration * avec la position (, y>) et l'orientation . */ void init_configuration(configuration *c, double x, double y, double theta) { c -> x = x; c -> y = y; c -> theta = normaliser_angle(theta); } /* Met à jour la configuration * après un déplacement de longueur dans la direction courante. */ void deplacer_configuration(configuration *c, double l) { c -> x -= l * sin(c -> theta); c -> y += l * cos(c -> theta); } /* Met à jour la configuration * après une rotation d'angle . */ void tourner_configuration(configuration *c, double angle) { c -> theta = normaliser_angle(c -> theta + angle); }