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

Mathématiques Discussion :

la géométrie dans matlab


Sujet :

Mathématiques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Septembre 2009
    Messages
    343
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 343
    Par défaut la géométrie dans matlab
    je débute en matlab, je me suis bloqué
    je vous explique tout d'abords mon besoin puis mon problématique: j'ai deux points A et B et je veux tracé la perpendiculaire OE a ces deux points qui passe par leur milieu le point O, le segment OE doit avoir un longeur de 1/3 de AB.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    xA=100
    yA=300
    xB=200
    yB=500
    DAB=sqrt(((xA-xB)^2)+((yA-yB)^2))
    DAB=DAB/3
    xO1=(xA+xB)/2
    yO1=(yA+yB)/2
    je me suis bloquer maintement comment tracer le segment OE qui doit être perpendiculaire a AB au point O et de longueur AB/3 ya t'il quelqu'un qui peut m'aider

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Par défaut
    Bonjour.
    Tu peux t'inspirer de la discussion là :
    http://www.developpez.net/forums/d80...trice-segment/

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 769
    Par défaut
    Ce n'est pas un problème matlab mais de géométrie...

    Pour ton segment OE, il y a une infinité de solution puisque ta seule contrainte est la "perpendicularité" au segment AB. (ton point E se balade sur le cercle centré en O, exécutes le code ci-dessous pour visualiser).

    Si tu rajoutes la contrainte d'être dans le plan où se situe les points A et B, tu n'as plus que deux solutions (si tu visualises le segment A vers B, le point E peut se trouver à droite comme à gauche du segment AB)...

    Par rapport à ta manière de présenter ton problème, la solution est :
    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
    xA=100;
    yA=300;
    xB=200;
    yB=500;
    DAB=sqrt(((xA-xB)^2)+((yA-yB)^2));
    DAB=DAB/3;
    xO1=(xA+xB)/2;
    yO1=(yA+yB)/2;
     
    A = - acos((yB-yO1)/(DAB*3/2));
     
    teta = -pi:pi/180:pi;
    xE = xO1 + DAB*cos(teta);
    yE = yO1*ones(length(teta),1);
    zE =  0  + DAB*sin(teta);
     
    xE0 = DAB*cos(teta);
    yE0 = zeros(size(xE0,1),size(xE0,2));
    zE0 = DAB*sin(teta);
     
    Rot_Z = [cos(A)   -sin(A)   0   0; 
             sin(A)    cos(A)   0   0;
                 0         0    1   0;
                 0         0    0   1];
     
    for q=1:length(xE0)
        a(q,:)=Rot_Z*[xE0(q);yE0(q);zE0(q);1];
    end
     
    for w=1:length(a)
        xE1(w)=a(w,1)+xO1;
        yE1(w)=a(w,2)+yO1;
        zE1(w)=a(w,3);
    end
     
    figure
    hold on
    line([xA xB],[yA yB]);
    plot3(xE1,yE1,zE1,'Color','r')

  4. #4
    Membre émérite
    Avatar de Kangourou
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Par défaut
    salut,

    j'ai développé geom2d, une bibliothèque de calculs géométrique, qui te permettra de simplifier certains calculs.
    http://www.mathworks.fr/matlabcentral/fileexchange/7844

    Par exemple, une fois la lib téléchargée et installée, pour tracer un segment perpendiculaire à une autre et commençant a son milieu tu peux faire :
    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
     
    a = [2 1];
    b = [8 5];
    edge = createEdge(a, b);
    cla
    drawPoint([a;b], 'ro');
    hold on;
    axis([0 10 0 10]);
    axis equal;
    drawEdge(edge);
    line = edgeToLine(edge);
    o = centroid([a;b]);
    perp = orthogonalLine(line, o);
    dist = edgeLength(edge);
    e = pointOnLine(perp, dist);
    oe = createEdge(o, e);
    drawEdge(oe, 'color', 'k')
    Au cas ou ça aide...
    A+

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Kangourou Voir le message
    salut,

    j'ai développé geom2d, une bibliothèque de calculs géométrique, qui te permettra de simplifier certains calculs.
    merci pour ton message et lien, mais pas merci par rapport à la question du PO.

    Dans un cas de géométrie simple, mieux vaut apprendre à s'y retrouver en réfléchissant et avec les équations (le problème est simple) que prendre un outil qui "fait tout"..

    Ce n'est pas lui rendre service..

  6. #6
    Membre éclairé
    Inscrit en
    Septembre 2009
    Messages
    343
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 343
    Par défaut
    Merci christophe ,mais ton code n'as pas marcher et elle me donne cette erreur "Subscripted assignment dimension mismatch" sur la ligne "a(q,=Rot_Z*[xE0(q);yE0(q);zE0(q);1];"
    concernant les contraintes, j'ai deux contraintes qui sont :
    le segment OE qui doit être perpendiculaire à AB en O et la longeur de OE doit être le 1/3 de AB

  7. #7
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    bon, prenons logiquement, et mathématiquement :


    A (Xa,Ya)
    B (Xb,Yb)

    O = milieu de (A-B)

    Xo = (Xa+Xb)/2
    Yo = (Ya+Yb)/2


    Angle formé par le segment AB et l'horizontale : sa tangente est la pente . Donc l'angle est l'arc tangente.

    Donc l'angle perpendiculaire est cet angle + PI/2


    d(A_B) = racine ( (Xa-Xb)^2 + (Ya-Yb)^2)

    d(O-E) = 1/3 d(A-B)


    Et là tu finis tout seul..

  8. #8
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Par défaut
    Salut!
    j'ai deux points A et B et je veux tracé la perpendiculaire OE a ces deux points qui passe par leur milieu le point O, le segment OE doit avoir un longeur de 1/3 de AB.
    Un marteau est très utile pour planter des clous; une brouette est tout aussi utile pour transporter du gravier. Mais si tu essaies de planter des clous avec une brouette ou de transporter du gravier avec un marteau, tu verras que ça ne va pas très bien. De manière analogue, Matlab est un excellent outil pour effectuer des calculs, mais ce n'est pas un outil de dessin.

    D'autre part, comme te le fait remarquer Christophe Halgand, c'est un problème de géométrie. En conséquence, je déplace cette discussion dans le forum algo/maths.
    Jean-Marc Blanc

Discussions similaires

  1. la géométrie dans MATLAB
    Par M.Chaabane dans le forum MATLAB
    Réponses: 5
    Dernier message: 15/05/2009, 11h38
  2. Maximum local dans Matlab en présence d'un BRUIT
    Par shinobida dans le forum Signal
    Réponses: 3
    Dernier message: 23/05/2007, 18h57
  3. Fonction dsolve dans MATLAB 7.3
    Par mutwit dans le forum MATLAB
    Réponses: 3
    Dernier message: 23/04/2007, 11h35
  4. Réponses: 2
    Dernier message: 22/01/2007, 18h59
  5. Boîtes de dialogue dans matlab
    Par ypascal dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 29/06/2006, 14h35

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