IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

Algorithme de jarvis


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Algérie

    Informations forums :
    Inscription : Avril 2011
    Messages : 15
    Points : 5
    Points
    5
    Par défaut Algorithme de jarvis
    bonosir ,
    ces lignes d'instruction sont l'implémentation de l'algorithme de jarvis mais ça ne donne rien , qui peut me dire où est l'erreur ; mer6
    je vous laisse avec le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    clear all ;
    axis([0 10 0 10]);
    %hold on ;
     
    [y,x]=getpts ;
    n=length(x);   %la longueur = le nbr de pt dessiné
    [ymin i] = min(y);  %le pt le plu min + l'indice de ymin
     
     
    pery=y(1);
    y(1)=ymin ;  %%%de permutation de y pour débuter avec le pt le plus bas
    y(i)=pery;
     
     
     
    perx=x(1) ;
    x(1)=x(i) ;  %%%  de permutation de x
    x(i)=perx;
     
    firstx=x(1) ;
    firsty=y(1);
     
    for k=2:n
     
        t=zeros(1,length(x)-1);   %declaration d'un vecteur dé 0
     
     
        for j=1:length(x)-1
            %%%% calculeeeer la tangente
     
            tangente =y(j+1)-firsty/x(j+1)-firstx;
            t(j)=tangente;  %%%% mettre lé tg ds un tableau t
     
        end
     
        [tmin j] = min(t); % la tg min + l'indice de la tag min
     
        %line([firstx, x(j+1)],[firsty, y(j+1)],'LineWidth',1,'Color','b')
        plot(firstx,firsty,x(j+1),y(j+1)) ;  % j car j c l'indice du tgmin
     
        firstx=x(k);  %aprés finir le 1er pt
        firsty=y(k);  %aller vers lé suivants
     
    end

  2. #2
    Membre émérite
    Avatar de Franck Dernoncourt
    Homme Profil pro
    PhD student in AI @ MIT
    Inscrit en
    Avril 2010
    Messages
    894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PhD student in AI @ MIT
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 894
    Points : 2 464
    Points
    2 464
    Par défaut
    Citation Envoyé par marocco.mimi
    mais ça ne donne rien
    = ?

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Algérie

    Informations forums :
    Inscription : Avril 2011
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Oui , justement je veux connaitre pourquoi il ne donne pas de résultat

  4. #4
    Membre émérite
    Avatar de Franck Dernoncourt
    Homme Profil pro
    PhD student in AI @ MIT
    Inscrit en
    Avril 2010
    Messages
    894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PhD student in AI @ MIT
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 894
    Points : 2 464
    Points
    2 464
    Par défaut
    Sur la figure ou dans la console ?

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Algérie

    Informations forums :
    Inscription : Avril 2011
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    je sais pa moi ,
    pourquoi il ne dessine rien ???

  6. #6
    Membre émérite
    Avatar de Franck Dernoncourt
    Homme Profil pro
    PhD student in AI @ MIT
    Inscrit en
    Avril 2010
    Messages
    894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PhD student in AI @ MIT
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 894
    Points : 2 464
    Points
    2 464
    Par défaut
    Essaie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    clear all ;
    figure
    hold on ;
     
    axis([0 10 0 10]);
    [y,x]=getpts ;
    n=length(x);   %la longueur = le nbr de pt dessiné
    [ymin i] = min(y);  %le pt le plu min + l'indice de ymin
     
    plot(x,y)
    pery=y(1);
    y(1)=ymin ;  %%%de permutation de y pour débuter avec le pt le plus bas
    y(i)=pery;
     
     
     
    perx=x(1) ;
    x(1)=x(i) ;  %%%  de permutation de x
    x(i)=perx;
     
    firstx=x(1) ;
    firsty=y(1);
     
    for k=2:n
     
        t=zeros(1,length(x)-1);   %declaration d'un vecteur dé 0
     
     
        for j=1:length(x)-1
            %%%% calculeeeer la tangente
     
            tangente =y(j+1)-firsty/x(j+1)-firstx;
            t(j)=tangente;  %%%% mettre lé tg ds un tableau t
     
        end
     
        [tmin j] = min(t); % la tg min + l'indice de la tag min
     
        %line([firstx, x(j+1)],[firsty, y(j+1)],'LineWidth',1,'Color','b')
        plot(firstx,firsty,x(j+1),y(j+1)) ;  % j car j c l'indice du tgmin
     
        firstx=x(k);  %aprés finir le 1er pt
        firsty=y(k);  %aller vers lé suivants
     
    end

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Algérie

    Informations forums :
    Inscription : Avril 2011
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    nn ,ça dessine les lignes avec l'ordre de clique , et ne respecte pas le parcourt des indices dans le code

  8. #8
    Invité
    Invité(e)
    Par défaut
    Il se dessinait bien quelque chose, mais seulement quelques points à peine visibles
    plot(firstx,firsty,x(j+1),y(j+1)) ; % j car j c l'indice du tgmin
    à remplacer par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    plot(firstx,firsty,'r*',x(j+1),y(j+1),'cp') ;  % j car j c l'indice du tgmin
    Pour mieux voir ces points

  9. #9
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Algérie

    Informations forums :
    Inscription : Avril 2011
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    1-pourquoi les positions des points se chengent ?
    2-il ne dessine pas un enveloppe convexe , il juste relie entre des points (n'existe pas une fonction "polygon qui fait ça ?")

  10. #10
    Membre émérite
    Avatar de Franck Dernoncourt
    Homme Profil pro
    PhD student in AI @ MIT
    Inscrit en
    Avril 2010
    Messages
    894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PhD student in AI @ MIT
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 894
    Points : 2 464
    Points
    2 464
    Par défaut
    Fait un diff avec ce code, ca te donnera peut-être des idées de debug :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    clear all ;
    figure
    hold on ;
     
    axis([0 10 0 10]);
    [x,y]=getpts ;
    n=length(x);   %la longueur = le nbr de pt dessiné
    %[ymin i] = min(y);  %le pt le plu min + l'indice de ymin
     
     
     
    for k=1:n
     
        firstx=x(k);  %aprés finir le 1er pt
        firsty=y(k);  %aller vers lé suivants
     
        t=zeros(1,length(x)-1);   %declaration d'un vecteur dé 0
     
        for j=1:length(x)-1
            %%%% calculeeeer la tangente
     
            tangente =y(j+1)-firsty/x(j+1)-firstx;
            t(j)=tangente;  %%%% mettre lé tg ds un tableau t
     
        end
     
        [tmin j] = min(t); % la tg min + l'indice de la tag min
     
        %line([firstx, x(j+1)],[firsty, y(j+1)],'LineWidth',1,'Color','b')
        plot(firstx,firsty,'r*',x(j+1),y(j+1),'cp') ;  % j car j c l'indice du tgmin
     
     
    end

  11. #11
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Algérie

    Informations forums :
    Inscription : Avril 2011
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    vraiment je suis désolé , mais ça aussi ne marche pas

  12. #12
    Invité
    Invité(e)
    Par défaut
    Tu parles d'enveloppe convexe, mais quels sont les variables qui définissent cette enveloppe? Je n'en vois aucune.
    Tu ne fait qu'afficher les points que tu obtients avec getpts.
    Il faudrait peut-être que tu revoies l'algorithme.

  13. #13
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Algérie

    Informations forums :
    Inscription : Avril 2011
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    revoies l'algorithme ? comment ;
    mon code normalement :
    1-l'user dessine des points
    2-le code doit :
    _récupérer les coordonnées des points dessinés et les mettre dans [x, y].
    _choisir le point le plus en bas pour débuter (c pour ça j'ai fais ymin et la permutation)
    _calculer l'angle entre l'horizon et le premier point et les autres points(x2,x3...xn) par la tangente
    _mettre les tangentes dans un tableau et choisir la tangente min .
    _ relier le point x(i) qui nous a donner la tangente min avec le x(1)
    et reboucler x(i)=x(1) et ainsi de suite

  14. #14
    Invité
    Invité(e)
    Par défaut
    Je ne suis pas tout à fait d'accord avec ces lignes
    _calculer l'angle entre l'horizon et le premier point et les autres points(x2,x3...xn) par la tangente
    _mettre les tangentes dans un tableau et choisir la tangente min .
    Je te laisse regarder ceci: [ame="http://www.youtube.com/watch?v=rsbxHqhyKD0"]Jarvis Algorithm [/ame] afin de bien comprendre le principe.
    Bon il a commencé par un xmin, mais c'est pareil.
    On fait un parcours 'double' de tous les points différents du précédent, et dès que la ligne rouge passe à l'extérieur de la verte, le point à l'extrémité verte devient celui à l'extrémité rouge.
    Lorsqu'on a fini ce parcours, on ajoute au contour, l'extrémité verte.
    Et ainsi de suite jusqu'à ce que le contour revienne à son point de départ.

Discussions similaires

  1. Formalisation graphique des algorithmes
    Par David R. dans le forum Algorithmes et structures de données
    Réponses: 14
    Dernier message: 08/12/2012, 10h21
  2. Algorithme de randomisation ... ( Hasard ...? )
    Par Anonymous dans le forum Assembleur
    Réponses: 8
    Dernier message: 06/09/2002, 14h25
  3. recherches des cours ou des explications sur les algorithmes
    Par Marcus2211 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 19/05/2002, 22h18
  4. Recherche de documentation complète en algorithmes
    Par Anonymous dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 29/03/2002, 12h09
  5. Algorithme génétique
    Par Stephane.P_(dis Postef) dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 15/03/2002, 17h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo