Bonjour,

Soit G un graphe orienté, que nous parcourons grâce à une liste d'adjacence.

Nom : image2.jpg
Affichages : 68
Taille : 26,6 Ko

Un carré jaune est un vecteur position

Un cercle jaune est un sommet de G

Une flèche noire est une Arête de G

Chaque sommet est de type struct et a, entre autres, les propriétés :

AretesOrigine[] (toutes les arêtes qui pointent vers ce sommet)
ArêtesDestination[] . (toutes les arêtes qui partent de ce sommet)
Enum Nature (None, CulDeSac, Virage, Carrefour3Voies, Carrefour4Voies, ... , Carrefour7Voies)


Chaque arête est de type struct et a, entre autres, les propriété :

SommetOrigine
SommetDestination


J'essaie d'implémenter les fonctions de connections de sommets en fonction de leur nature respectives.
Dans le cas A1 j'ai 2 vecteurs positions. Je crée 2 sommets à ces positions (A2). Puis je les connecte (A3). Ces 2 sommets initialement de Nature “None”, ont à présent une nature “CulDeSac”

Dans le cas B1 j'ai un vecteur position et un sommet S1“CulDeSac”. Je crée un nouveau sommet S0 et je dédouble le sommet S1 en S1 et S2 (B2). Connecte les S1 et S2 à S0.
S1 et S2 ne sont plus respectivement “CulDeSac”, mais sont devenu “Virage”, alors que S0 est passé de “None” A cul de sac.

Maintenant que vous comprenez la logique le ligne C vous est compréhensible.


Sachant qu'il y a quand meme qu'il y a 9 possibilité (vecteur position, sommet none, sommet culdesac, sommet virage, sommet carrefour3voies, sommet carrefour4voies, … , sommet carrefour7voies).

9 x 9 = 81.

Je me vois mal rédiger 81 fonctions.
Suis-je entrain de réinventer la roue ? Est ce que ça a déjà été implémenté et disponible en opensource ? Si non comment développer un truc plus générique et plus propre s'il vous plait ?