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 :

Relier des points de droite entre eux


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    avril 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2012
    Messages : 22
    Points : 14
    Points
    14
    Par défaut Relier des points de droite entre eux
    Bonjour ,

    j'ai créer trois droite sous matlab et j'aimerais savoir si je pourrais relier les point de ce ces droite entre elle , j'aimerais que cela fasse un arc de cercle et pas une droite comme le dessin ci contre , et est-il possible de pouvoir mettre des couleur a l’intérieur de ces case ?

    Merci
    Images attachées Images attachées  

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    février 2010
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2010
    Messages : 2 048
    Points : 877
    Points
    877
    Par défaut
    pour faire une courbe (et non des droites) à partir de trois points il te faut faire une interpolation polynomiale.

    Je te conseil d'utiliser "polyfit" et "polyval", tu donnes à "polyfit" les abscisses et les ordonnées des points qui t'intéressent et il te fournira les coefficients de ton polynôme interpolateur. Ensuite tu utilises polyval pour tracer la courbe à partir des résultats de polyfit et de tes abscisses.
    ça devrait marcher sans problème, je te laisse regarder plus en détail l'aide de polyfit et polyval.

    ps: comme tu as trois points il faut que tu donnes à polyfit comme degré "2".

    => pour le coloriage des cases je ne sais pas trop

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    avril 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2012
    Messages : 22
    Points : 14
    Points
    14
    Par défaut
    peut tu m'aider pour l'utilisation de ces deux fonction j'ai essayer mais je n'arrive a obternir ce que je souhaite cela fait des droite relié entre elle

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    février 2010
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2010
    Messages : 2 048
    Points : 877
    Points
    877
    Par défaut
    soit "xx" les abscisses ta série de 3 points et "yy" les ordonnées.

    Pour tracer une courbe qui passe par ces trois points je pense que ceci doit fonctionner:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    polval(polyfit(xx,yy,2),xx)
    ensuite tu fais la meme chose avec la prochaine série de 3 points "xxx" "yyy" ...

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    avril 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2012
    Messages : 22
    Points : 14
    Points
    14
    Par défaut
    j'ai essayé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    xi=[Point1(1) Point2(1) Point3(1)];
    yi=[Point1(2) Point2(2) Point3(2)];
    x=Point1(1):1:Point3(1);
    po=polyfit(xi,yi,2);
    plot(x,polyval(po,x))
    mais regardez ce que j'obtiens la courbe ne prend en compte que deux des trois points et en plus elle ne vas pas jusque leur extrémité quelqu'un peut-il m'aider ?
    Images attachées Images attachées  

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    février 2010
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2010
    Messages : 2 048
    Points : 877
    Points
    877
    Par défaut
    pour que ça fonctionne je pense que tu devrais remplacer ceci :

    par ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    plot(xi,polyval(po,xi))

  7. #7
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    avril 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2012
    Messages : 22
    Points : 14
    Points
    14
    Par défaut
    je n'arrive vraiment pas a comprendre c'est encore pire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     xi=[Point1(1) Point2(1) Point3(1)];
        yi=[Point1(2) Point2(2) Point3(2)];
        x=Point1(1):1:Point3(1);
        po=polyfit(xi,yi,2);
        plot(xi,polyval(po,xi))
    Images attachées Images attachées  

  8. #8
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    avril 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2012
    Messages : 22
    Points : 14
    Points
    14
    Par défaut
    j'ai changer l'ordre des points il sont bien relié mais aucune courbure . . .
    Images attachées Images attachées  

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    février 2010
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2010
    Messages : 2 048
    Points : 877
    Points
    877
    Par défaut
    d'accord, je pense alors qu'il faut donner des abscisses intermédiaires entre les abscisses que tu as déjà mises : (car on a déterminer la parabole avec polyfit et pour la tracer avec polyval il nous faut plus de points que 3 )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    plot(xi(1):0.5:xi(end),polyval(po,xi(1):0.5:xi(end)))
    si ça ne marche pas non plus alors je ne vois pas trop quoi faire de plus ...

  10. #10
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    avril 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2012
    Messages : 22
    Points : 14
    Points
    14
    Par défaut
    j'ai enfin une courbure mais le troisiéme point n'est toujours relié merci quand meme pour l'aide
    Images attachées Images attachées  

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    février 2010
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2010
    Messages : 2 048
    Points : 877
    Points
    877
    Par défaut
    met tous ton code sur le forum, je pense que quelqu'un pourra t'aider, moi perso je ne vois pas trop là pourquoi ça ne marche pas

    désolé

  12. #12
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    avril 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2012
    Messages : 22
    Points : 14
    Points
    14
    Par défaut Faire apparaitre qu'une partie d'un cercle
    Bonjour ,


    Je m'explique j'ai un dessin qui représente 3 droite et j'aimerais faire un arc de cercle qui relie c'est 3 droite j'utilise ce code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     distance =(Point1(1)-(Point2(1))+i);
        VThetaDeg = 0:1:90;
        VTheta = VThetaDeg *pi / 180;
        XCercle = Centre(1) +distance * cos(VTheta) ;
        YCercle = Centre(2) +distance * sin(VTheta) ;
        plot(XCercle,YCercle)
    pour faire apparaitre qu'une partie de ce cercle je peux changer le VThetaDeg mais c'est une chiffre et mes droite ne sont jamais au même coordonnée auriez vous une solution pour que ma partie de cercle se trouve toujours à l'intérieur des droites rouge ?
    Images attachées Images attachées  

  13. #13
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Ingénieur R&D freelance
    Inscrit en
    novembre 2006
    Messages
    20 008
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur R&D freelance

    Informations forums :
    Inscription : novembre 2006
    Messages : 20 008
    Points : 53 986
    Points
    53 986
    Par défaut
    Voici un début de solution rapide qui ne demande qu'à être améliorer :

    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
    %Quelques données 
    th = rand(1,2)*2*pi;
    r = 5;
     
    xo = rand*20;
    yo = rand*20;
     
    x = xo+[0 r*cos(th)];
    y = yo+[0 r*sin(th)];
     
    figure(1)
    plot([x(1) x(1) ; x(2) x(3)],[y(1) y(1) ; y(2) y(3)],'r-')
    hold on
    axis equal
     
    % Tracé de l'arc de cercle 
    thi = cart2pol(x-xo,y-yo);
    thi = linspace(thi(2),thi(3),50);
     
    plot(xo+r*cos(thi),yo+r*sin(thi),'b-')
    Images attachées Images attachées  
    Mes compétences :
    • conception mécanique 3D (Autodesk Fusion 360)
    • développement informatique (MATLAB, Python, C, VBA)
    • impression 3D (Ultimaker)
    • programmation de microcontrôleur (Microchip PIC et Arduino)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  14. #14
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    avril 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2012
    Messages : 22
    Points : 14
    Points
    14
    Par défaut
    Pourrait tu me donner quelque precision ,

    xo et yo represente bien les point du centre des droites ?
    et x et y sont les deux droite rouge ?

    ensuite qu 'est ce que th et r ?

    voila mon code :
    il recupere les position de vehicule avec un angle de marche d'erreur par raport au position successive que j'ai recupéré je predit la prochaine trajectoire qui est la courbe bleue les courbe rouge represente l'angle de marge d'erreur , maintenant je voudrais pouvoir faire plusieur arc de cercle autour du point qui est la position que je pense etre la bonne un degrader pour emetre une propabilité sur la vraie position du vehicule

    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
       Longeur=length(T1);
     moitie=ceil(Longeur/2);
     
      ax = radtodeg(Tetha1(4,1));
     
       for k=moitie:Longeur
        for i=1:nb_vehicule
     
        % Tracer de la courbe
     
        Centre = [VEH(k-2,1,i),VEH(k-2,2,i),0];
        Point1 = [VEH(k,1,i),VEH(k,2,i),0];
        angle(i) = radtodeg(Tetha1(k-2,i));
        res=2*angle(i);
     
     
        % Tracer de la premiére droite
     
        tl = makehgtform('translate',Centre);
        trot = makehgtform('zrotate',angle(i)*pi/180);
        Point2 = tl * trot * inv(tl) * [Point1,1]';
        Point2 = Point2(1:3);
     
        % Tracer de la deuxieme droite
     
        tl = makehgtform('translate',Centre);
        trot = makehgtform('zrotate',-angle(i)*pi/180);
        Point3 = tl * trot * inv(tl) * [Point1,1]';
        Point3 = Point3(1:3);
     
        % affichage des courbe
     
        figure(1);
        plot([Centre(1),Point1(1)],[Centre(2),Point1(2)],'b')
        hold on
        plot([Centre(1),Point2(1)],[Centre(2),Point2(2)],'r')
        plot([Centre(1),Point3(1)],[Centre(2),Point3(2)],'r')
        plot(VEH(k-1,1,i),VEH(k-1,2,i),'.');
        axis([100 300 140 350]);

Discussions similaires

  1. relier des points entre eux avec une boucle
    Par persé dans le forum MATLAB
    Réponses: 2
    Dernier message: 30/04/2015, 11h04
  2. Relier des points entre eux
    Par lileric13 dans le forum MATLAB
    Réponses: 2
    Dernier message: 28/01/2013, 15h32
  3. Réponses: 2
    Dernier message: 29/07/2010, 11h12
  4. Soustraire des éléments de tableau entre eux
    Par syl2095 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 20/01/2005, 16h29

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