22-12-2012, 04:40 PM
Pour rester dans le domaine du simple bitmap, j'ai dans l'idée de créer une image définissant les tracés à suivre pour les mouvements.
Bien sûr, cette image ne serait pas affichée : elle serait uniquement utilisé par un script pour générer les coordonnées de passage de chaque fragment de route.
L'algorithme serait a priori simple :
Si le chemin visuel de l'arrête DA contient 10 pixel et que l'entité qui se déplace sur cette arrête est à 80% du chemin, je dessine l'entité sur le huitième pixel de la liste.
Ainsi, je peux générer le graphe (la représentation logique) d'une carte très facilement (ce serait fastidieux de le faire à la main) à partir d'une telle image de description et faire correspondre les progression (en %) à des coordonnées.
Je vais essayer d'implémenter ça. Je reste à l'écoute si vous avez des solutions.
Bien sûr, cette image ne serait pas affichée : elle serait uniquement utilisé par un script pour générer les coordonnées de passage de chaque fragment de route.
L'algorithme serait a priori simple :
- Chaque nœud de la carte est représenté par un petit amas (5*5) de pixels d'une couleur unique, les coordonnées de leur centre sont stockés ;
- Pour chaque nœud de la carte, on regarde les pixels colorés voisins (les transparents sont ignorés) ;
- Pour chaque pixel de couleur trouvé, on suit le chemin de cette couleur jusqu'au bout (qui mène à un autre nœud), ce qui permet de dresser une liste de pixels qui constitue le chemin visuel du nœud D de départ au nœud A d'arrivée (donc l'arrête DA du graphe) ;
Si le chemin visuel de l'arrête DA contient 10 pixel et que l'entité qui se déplace sur cette arrête est à 80% du chemin, je dessine l'entité sur le huitième pixel de la liste.
Ainsi, je peux générer le graphe (la représentation logique) d'une carte très facilement (ce serait fastidieux de le faire à la main) à partir d'une telle image de description et faire correspondre les progression (en %) à des coordonnées.
Je vais essayer d'implémenter ça. Je reste à l'écoute si vous avez des solutions.