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 :

Coordonnée d'un point dans une figure


Sujet :

MATLAB

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

    Informations forums :
    Inscription : Octobre 2007
    Messages : 769
    Points : 726
    Points
    726
    Par défaut Coordonnée d'un point dans une figure
    Bonjour,

    En tatonnant, j'ai réalisé ce programme :

    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
    % initialisation
    %Longueur des corps
    L0 = 5;
    L1 = 4;
    L2 = 4;
    %variable articulaire initiale (en degré)
    t0 = 0; 
    t1 = 30*pi/180;
    t2 = 45*pi/180;
    te = 10*pi/180;
     
        %calcul
        c =  L0*cos(t0);
        d =  L1*cos(t0+t1);
        e =  L2*cos(t0+t1+t2);
        f =  L0*sin(t0);
        g =  L1*sin(t0+t1);
        h =  L2*sin(t0+t1+t2);
     
        Mx = c+d+e;
        My = f+g+h;
        Tx = 2;
        Ty = 4;
     
        cor = line([c c+d;c+d c+d+e],[f f+g;f+g f+g+h],'linewidth',3,'marker','o','color','g');
        xdv = line([Mx Tx],[My Ty],'linewidth',1,'color','r');
     
        a = 0;
        b = 12;
     
        ref0x = line([a b],[a a],'linewidth',2,'color','b');
        ref0y = line([a a],[a b],'linewidth',2,'color','b');
     
        refex = line([a b*cos(te)],[a b*sin(te)],'linewidth',2,'color',[0 0 0],'linestyle','--');
        refey = line([a -b*sin(te)],[a b*cos(te)],'linewidth',2,'color',[0 0 0],'linestyle','--');
     
        axis equal 
        %view(2)
        set(gca,'xlim',[a-4 b+2],'ylim',[a-4 b+2])
    Et je voudrais savoir comment trouver les coordonnées de mon organe terminal (c'est à dire le point "M" d'intersection entre le segment rouge et le segment vert) dans le référentiel noir. (je connais l'angle entre le ref noir et le ref bleu qui est "te")

    Peut-on marquer ce point car je vais modifier l'angle "te" par la suite et j'aurais tout le temps besoin des coordonnées de ce point "M" dans le ref noir.

    J'espère avoir été assez clair

    Merci de votre aide

    En passant si vous pouviez me donner la commande pour écrire du texte sur mon dessin, ce serait parfait.

    Tchao, Tchao

  2. #2
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 828
    Points
    14 828
    Par défaut
    Pour trouver le point d'intersection je dirais que tout dépend de la précision souhaitée.
    Soit tu le fais mathématiquement (ne comptes pas sur moi c'est bien trop vieux dans ma tête )
    Soit si tu ne souhaites pas une grande précision tu peux obtenir les coordonnées approximatives "à la main" avec la fonction GINPUT....Enfin du coup tu les auras dans le référentiel des axes, il faut alors faire une projection pour les avoir dans ton référentiel à toi.

    Enfin bref je ne suis pas d'une grande aide sur ce coup-là ²

    Pour écrire du texte : TEXT (c'était trouvable ) ou GTEXT (qui est dans le See Also de TEXT re-)

  3. #3
    Membre du Club Avatar de legreg2
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France, Aube (Champagne Ardenne)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 61
    Points : 68
    Points
    68
    Par défaut
    Mathématiquement (je ne sais pas si ca t'aide beaucoup...):

    1. Connaitre les equations de tes deux droites (repere normal)
    2. Trouver le point M d'intersection entre ces droites (repere normal)
    3. Changer de repere pour trouver ces coordonnées dans le nouveau repere (avec quelques sinus et cosinus, ca devrait le faire)

    Si tu as un problème avec un de ces points, n'hésite pas

  4. #4
    Expert confirmé
    Avatar de tug83
    Homme Profil pro
    MATLAB Geek !
    Inscrit en
    Juin 2006
    Messages
    1 781
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : MATLAB Geek !
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 781
    Points : 4 039
    Points
    4 039
    Par défaut
    Il y a déjà eu un post résolu sur comment trouver l'intersection de 2 segments.

  5. #5
    Membre éprouvé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    979
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 979
    Points : 1 256
    Points
    1 256
    Par défaut
    Salut,

    un bout de code qui pourras t'être utile .

    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
     
    %
    % Bras Articulé
    %
     
    function test
     
    clc
    close all
    clear all
     
    % initialisation
    % STRUCT('L', longeur ,'t', angles par rapport à R0,'coord',coordonnées)
    Corps(1) = struct('L', 5,'t',30*pi/180,'coord',[]);
    Corps(2) = struct('L', 4,'t',Corps(1).t + 45*pi/180,'coord',[]);
    Corps(3) = struct('L', 4,'t',Corps(2).t - 10*pi/180,'coord',[]);
     
    % Mettre à jour le coordonées
    update_coordinates();
     
    % Plot
    figure(1)
    hold on
    for v = 1:numel(Corps)
        Coor = Corps(v).coord;
       line(Coor(1,:),Coor(2,:),'linewidth',3,'marker','o','color','g');
    end
    axis equal
     
     
     
    %-- EXTRA
    % Changer repére
    R = struct('Origin',[1; 2],'t',30*pi/180);
    change_coordinates(R);
     
    figure(2)
    hold on
    for v = 1:numel(Corps)
        Coor = Corps(v).coord;
        line(Coor(1,:),Coor(2,:),'linewidth',3,'marker','o','color','g');
    end
    axis equal
     
    %----------------
        function update_coordinates()
            % Update function
     
            if isempty(Corps)
                return
            end
     
            varStart = [0 ; 0];
     
            for u=1:numel(Corps)
                Corps(u).L * [cos(Corps(u).t); sin(Corps(u).t)];
                current = varStart + Corps(u).L * [cos(Corps(u).t); sin(Corps(u).t)];
                Corps(u).coord = [varStart current];
                varStart = current;
            end
        end
     
        function change_coordinates(R)
            % Update function
     
            if isempty(Corps)
                return
            end
     
            % Revenir à R0 au cas ou !!
            update_coordinates();
     
            varRotation = [cos(R.t)  -sin(R.t); sin(R.t) cos(R.t)]
     
            for u=1:numel(Corps)
                Corps(u).coord = varRotation * Corps(u).coord - [R.Origin R.Origin];
            end
        end
    end
    ++ bonne chance

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

    Informations forums :
    Inscription : Octobre 2007
    Messages : 769
    Points : 726
    Points
    726
    Par défaut
    Merci pour l'aide...

    Je vais voir qu'elle sera la meilleure solution...

    Tchao Tchao

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

Discussions similaires

  1. lecture des coordonnées d'un point dans une carte
    Par encours dans le forum SIG : Système d'information Géographique
    Réponses: 2
    Dernier message: 22/02/2012, 17h24
  2. Coordonnées d'un point dans une bounding box
    Par Ikit dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 02/05/2010, 14h20
  3. Sauvegarder les coordonnées d'un point dans une figure 3D
    Par Jean Dumoncel dans le forum MATLAB
    Réponses: 2
    Dernier message: 18/11/2009, 13h28
  4. Extraire coordonnées entre deux points dans une image
    Par Pg043 dans le forum Traitement d'images
    Réponses: 4
    Dernier message: 16/01/2009, 09h35
  5. mesure de distance entre 2 points dans une figure
    Par sdecorme dans le forum MATLAB
    Réponses: 4
    Dernier message: 04/07/2008, 19h51

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