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 :

médiatrice d'un segment [Débutant]


Sujet :

MATLAB

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 médiatrice d'un segment
    bonjours,

    Je débute en matlab, je veux quelqu'un qui m'aide a construire la médiatrice d'un segment avec des instruction de code. j'ai essayé mais je n'est pas réussi

    quelqu'un peux m'aider ?

  2. #2
    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
    Quel est exactement ton problème ?

    Montre nous ce que tu as essayé de coder (même si c'est faux)

  3. #3
    Membre éclairé
    Inscrit en
    Septembre 2009
    Messages
    343
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 343
    Par défaut
    " Line up k1 and k2 to get the Y -axis of the palm coordinate system and make a line through their mid point which is perpendicular to the Y -axis, to determine the origin of the coordinate system "

    c'est une étape dans mon projet que je veux la programmer mais j'ai pas trouvé comment le faire.. peux tu m'aider avec des instructions de code

  4. #4
    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
    Tu ne sais pas comment calculer le centre d'un segment connaissant les coordonnées de ses deux extrémités ?
    Ni calculer un vecteur directeur ?

  5. #5
    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!
    construire la médiatrice d'un segment
    Qu'est-ce que ça veut dire? La dessiner? Trouver son équation?
    Précise ton problème.
    Jean-Marc Blanc

  6. #6
    Membre éclairé
    Inscrit en
    Septembre 2009
    Messages
    343
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 343
    Par défaut
    j'ai traçé le segment qui passe par les deux points k1 et k2 avec cette instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    line([xk1 xk2],[yk1 yk2],'Color','g','LineWidth',2,'LineStyle','-');
    puis j'ai fixé le milieu de ce segment le point O1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    xO1=(xK1+xK2)/2
    yO1=(yK1+yK2)/2

    maintenant je veux traçer la médiatrice de K1K2 et qui passe de O1
    mais je suis bloquer comment le faire. Pouvez vous m'aider avec des instructions de code

  7. #7
    Membre éclairé
    Inscrit en
    Septembre 2009
    Messages
    343
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 343
    Par défaut
    construire la médiatrice ça veut dire la dessiner

  8. #8
    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.
    Un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    clear
    xk1=2;xk2=5;yk1=7;yk2=3;
    x01=(xk1+xk2)/2;y01=(yk1+yk2)/2;
    v=rotation([xk2-x01,yk2-y01]',pi/2);
    figure(1)
    line([xk1 xk2],[yk1 yk2])
    hold on
    line([x01 x01+v(1)],[y01 y01+v(2)])
    axis equal
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function vecteur=rotation(x,teta)
    R=[cos(teta) -sin(teta);sin(teta) cos(teta)];
    vecteur=R*x;
    Solution analytique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    clear
    xk1=2;xk2=5;yk1=7;yk2=3;
    x01=(xk1+xk2)/2;y01=(yk1+yk2)/2;
    a=(yk2-yk1)/(xk2-xk1);
    b=yk1-a*xk1;
    b=y01+x01/a;
    x=0:0.1:10;
    y=-1/a*x+b;
    figure(1)
    line([xk1 xk2],[yk1 yk2])
    hold on
    plot(x,y,'r')
    axis equal

  9. #9
    Membre éclairé
    Inscrit en
    Septembre 2009
    Messages
    343
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 343
    Par défaut
    Merciiiiiii la première solution ça marche bien

    la solution analytique n'a pas marcher.

  10. #10
    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
    Bnjour.
    la solution analytique n'a pas marcher.
    Quelles sont les coordonnées de ton segment ?

  11. #11
    Membre éclairé
    Inscrit en
    Septembre 2009
    Messages
    343
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 343
    Par défaut
    se sont les coordonnées de K1 et K2

    xk1=103;xk2=293;yk1=267;yk2=217;

  12. #12
    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
    Il faut dimensionner correctement les axes et la droite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    clear
    xk1=103;xk2=293;yk1=267;yk2=217;
    x01=(xk1+xk2)/2;y01=(yk1+yk2)/2;
    a=(yk2-yk1)/(xk2-xk1);
    b=yk1-a*xk1;
    b=y01+x01/a;
    x=0:0.1:300;
    y=-1/a*x+b;
    figure(1)
    line([xk1 xk2],[yk1 yk2]);hold on
    plot(x,y,'r')
    axis([0 300 0 300]);grid;axis equal

  13. #13
    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
    Juste pour le plaisir ()... une solution plus géométrique (intersection de deux cercles) ) pour obtenir l'équation de la droite correspondant à la médiatrice du segment :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    x = rand(1,2)*200;
    y = rand(1,2)*200;
     
    tic
    d = sqrt((x(1)-x(2))^2+(y(1)-y(2))^2);
    r = .75*d;
     
    xr = r*(x-x(1));
    yr = r*(y-y(1));
     
    a = -xr(2)/yr(2);
    b = (xr(2)*xr(2)+yr(2)*yr(2))/(2*yr(2));
    Le (bref) algorithme :
    • choix arbitraire d'un cercle de rayon au moins supérieur à la moitié du segment
    • translation du point 1 au point (0,0)
    • normalisation à 1 des rayons
    • simplification des équations

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    % x²-2xxo+xo²  + y²-2yyo+yo² = r²   (1)
    % x²-2xxo+xo²  + y²-2yyo+yo² = r²   (2)
     
    % x²+y² = 1                         (1)
    % x²+y² - 2xxo+xo²-2yyo+yo² = 1     (2)
     
    % 1 -2xxo+xo² - 2yyo+yo² = 1        (2)
     
    % y = -(xo/yo)x + (xo2+yo2)/(2yo)   (3)
    Je développerai si besoin

    La méthode de phryte reste néanmoins plus rapide

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    x = rand(1,2)*200;
    y = rand(1,2)*200;
     
    tic
    d = sqrt((x(1)-x(2))^2+(y(1)-y(2))^2);
    r = .75*d;
     
    xr = r*(x-x(1));
    yr = r*(y-y(1));
     
    a = -xr(2)/yr(2);
    b = (xr(2)*xr(2)+yr(2)*yr(2))/(2*yr(2));
     
    toc
     
    figure
    subplot(121)
    plot(x,y,'r*');
    hold on
     
    th = linspace(0,2*pi,100);
    plot(r*cos(th)+x(1),r*sin(th)+y(1),'m-',r*cos(th)+x(2),r*sin(th)+y(2),'m-');
     
    xm = linspace(xr(1),xr(2),10);
    ym = a*xm+b;
     
    xm = xm/r+x(1);
    ym = ym/r+y(1);
    % y = linspace(y(1),y(2),10)
     
    dot([xm(1)-xm(end) ym(1)-ym(end)],[x(1)-x(2) y(1)-y(2)])
     
    plot(xm,ym,'g-');
     
    axis equal tight
     
    subplot(122)
    plot(x,y,'r*');
    hold on
     
    th = linspace(0,2*pi,100);
    plot(r*cos(th)+x(1),r*sin(th)+y(1),'m-',r*cos(th)+x(2),r*sin(th)+y(2),'m-');
     
    tic
    x01=(x(1)+x(2))/2;y01=(y(1)+y(2))/2;
    a=(y(2)-y(1))/(x(2)-x(1));
    b=y01+x01/a;
    toc
    xm = linspace(x(1),x(2),10);
    ym=-1/a*xm+b;
    hold on
    plot(xm,ym,'r')
    axis equal tight
     
    dot([xm(1)-xm(end) ym(1)-ym(end)],[x(1)-x(2) y(1)-y(2)])

  14. #14
    Membre éclairé
    Inscrit en
    Septembre 2009
    Messages
    343
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 343
    Par défaut
    merciiiiiiiiiiiiiii bien

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment contrer la "segmentation fault" ?
    Par guillaume_pfr dans le forum C
    Réponses: 15
    Dernier message: 08/08/2003, 13h43
  2. Problème de déclaration de segment avec use32
    Par le mage tophinus dans le forum Assembleur
    Réponses: 2
    Dernier message: 10/01/2003, 10h17
  3. [VB6] [Interface] Horloge 7 segments
    Par selenay dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 07/10/2002, 16h15
  4. [TASM] Déclarer le segment de pile
    Par cipher dans le forum x86 16-bits
    Réponses: 2
    Dernier message: 01/10/2002, 03h58
  5. angle entre 2 segments
    Par tane dans le forum Mathématiques
    Réponses: 4
    Dernier message: 25/09/2002, 16h47

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