Programmation du contournement d'un objet

Programmation du contournement d'un objet - Programmation

Marsh Posté le 31-12-2001 à 17:32:45    

Bonjour,
 
je voudrais savoir comment programmer la procédure suivante en C++ :
 
 on choisi 2 points sur une carte en noir et blanc, le noir représente la terre et le blanc la mer, le premier point est le départ et le deuxième l'arrivée. La procédure doit éviter la terre en trouvant le chemin le plus court tout en longeant les côtes à une certaine distance. Ex : dans Starcraft les bonhommes suivent le décor pour passer.

Reply

Marsh Posté le 31-12-2001 à 17:32:45   

Reply

Marsh Posté le 01-01-2002 à 15:03:01    

En premier approche, je pense à un graphe non orienté des cases noires (donc les sommets) représentant l'ensemble des chemins possibles parmi tous ces sommets (après d'éventuels traitements comme enlever les sommets trop proches du "bord", comme tu l'as évoqué).
Ensuite il suffit d'appliquer un algorithme du plus court chemin entre les deux sommets en question. Le problème est qu'ici il est plutôt question de pixels, donc le graphe risque d'être gigantesque. Il y a sans doute d'autres algorithmes plus adaptés à ce type de problème.


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
Reply

Marsh Posté le 01-01-2002 à 16:08:56    

Une petite recherche Google pour retrouve le nom ( ou plustot l'orthographe du nom :) ) de l'algorithme me donne :
 
Algorithme de Dijkstra
 
Avec ca il va être facile de trouver une bonne page web parlant de l'algo.
 
Mon conseil perso serait de ne pas associer de sommet à chaque case du terrain mais un sommet toutes les n cases par exemple. Ca manquera de finesse mais le resultat sera dispo bien plus rapidement.
 
Dijkstra c'est extra !!

Reply

Marsh Posté le 02-01-2002 à 02:00:06    

Ça me rappelle mon 3e semestre de DEUG... mais j'ai oublié quasiment tous les algos que j'ai vu sur les graphes! :eek:


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed