3 votes

Le plus court chemin entre deux points dans une grille (Matlab)

J'essaie de trouver le chemin le plus court entre deux points dans une grille sans obstacles et se déplaçant dans toutes les directions (N NE E ES S SW W WN).

Cela semble être une tâche courante... N'est-ce pas déjà implémenté dans Matlab ? Lorsque Matlab trace deux points reliés par une ligne ( plot(X,Y, '-') ), il semble effectuer ce calcul en interne, car je suppose que l'image générée est également une grille.

Exemple : De [1,1] à [3,6], une solution est [1,1 ; 2,2 ; 2,3 ; 2,4 ; 3,5 ; 3,6].

J'ai essayé :

    dist_x = length(linspace(p1(1),p2(1), dist(p1(1),p2(1))+1));
    dist_y = length(linspace(p1(2),p2(2), dist(p1(2),p2(2))+1));
    num_points = max(dist_x, dist_y);
    x = round(linspace(p1(1),p2(1),num_points));
    y = round(linspace(p1(2),p2(2),num_points));

Mais je pense qu'il renvoie plus de points qu'il ne devrait et peut-être y a-t-il une routine implémentée.

Merci beaucoup.

3voto

rauldg Points 391

La solution (donnée par J.F. Sebastian) est la suivante Algorithme de la ligne de Bresenham .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X