www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

commit 1a1222b91591f9e9bb6d7126389760008941a612
parent 994a0ac085ce3720409ab4c474b543048cb3b78e
Author: Yoann <yoann.b87@voila.fr>
Date:   Fri, 21 Oct 2011 20:03:26 +0200

Quelques petites modifications.

Diffstat:
Mroads.c | 22+++++++++++++++++++++-
1 file changed, 21 insertions(+), 1 deletion(-)

diff --git a/roads.c b/roads.c @@ -79,7 +79,7 @@ polarCoord* ctp(Vertex *origin, Vertex *end) { return pc; } - + /* Initialise la grille de nœds. * @param int width : Largeur du quartier à remplir. * @param int height : Hauteur du quartier à remplir. @@ -153,6 +153,11 @@ void addRoadNode(roadPointY *rp, roadNodeY *rn) { rp->next = rpp; } +/* Retourne le nœd le plus proche dans un certain voisinage. Si aucun nœd n'est trouvé alors + * la fonction renvoie NULL. + * @param Vertex *v : Le nœd pour lequel on souhaite trouver un nœd proche. + * @return roadNodeY* : le nœd de route le plus proche. + */ roadNodeY* grid_getNearestRoadNode(Vertex *v) { roadNodeY **nr; roadNodeY *nearestNode = NULL; @@ -190,6 +195,21 @@ roadNodeY* grid_getNearestRoadNode(Vertex *v) { return nearestNode; } +/* Ajoute un segment de route à la fin d'une route. + * Le point d'origine du segment est le dernier de la route actuellement en place. Il est passé en paramètre pour + * éviter le parcour de la route entière pour le trouver. + * Le point d'arrivé peut-etre modifié suivant deux règles principales. + * - Un nœd de route existe proche de l'endroit ou doit ce terminer le segment dans ce cas + * on "fusionne" les deux le point existant devient le point d'arrivé du segment. + * - Un segment se trouve sur le chemin du segment que l'on souhaite placer. Dans ce cas le segment + * que l'on souhaite placer sera sectionné à l'intersection des deux segments et le points d'intersections sera + * le point d'arrivé du segment à placer. + * @param roadPointY *road : La route à laquelle on veut ajouter le segmetn. + * @param roadNodeY *rnb : Le nœd de départ du segment. + * @param roadNodeY *rne : Le nœd d'arrivé du segment. + * @param int lag : le décalage maximal autorisé pour le placement du nœd d'arrivé. + * @return roadNodeY* : Le nœd d'arrivé du vecteur potentiellement modifié. + */ roadNodeY* insertRoadSegment(roadPointY *road, roadNodeY *rnb, roadNodeY *rne, int lag) { int segLength = distBetween(rnb->v, rne->v); float coef = ((float)segLength-lag)/(float)segLength;