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 :

Relier des points de droite entre eux


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    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
    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 éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    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 averti
    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
    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 éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    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 averti
    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
    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 éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    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 averti
    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
    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  

  8. #8
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    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  

  9. #9
    Membre averti
    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
    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, 10h04
  2. Relier des points entre eux
    Par lileric13 dans le forum MATLAB
    Réponses: 2
    Dernier message: 28/01/2013, 14h32
  3. Réponses: 2
    Dernier message: 29/07/2010, 10h12
  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, 15h29

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