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

Interfaces Graphiques Discussion :

Tracage de lignes


Sujet :

Interfaces Graphiques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 36
    Par défaut Tracage de lignes
    Bonjour,

    J'aimerais savoir comment faire pour tracer des lignes dans un axe. Ces lignes devant passer par les points que je définis. C'est toujours le problème du polygone ici... Mais bon je vais essayer de faire un peu autrement. Donc si quelqu'un sait comment faire passer un segment entre 2 points dans matlab...

    Merci d'avance.

  2. #2
    Membre éprouvé
    Avatar de mihaispr
    Inscrit en
    Décembre 2008
    Messages
    1 025
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 025
    Par défaut
    Salut!

    duf42 a fait un exemple pour dessiner en axes des lignes ici dans cette discussion large:

    http://www.developpez.net/forums/d72...se-erreur-gui/

    Je t'ai attache son example ici:


    http://www.mediafire.com/?icljfdkm9nd

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 36
    Par défaut
    C'est pas exactement ce que je veux. Ici les droites se tracent bien, mais moi je cherche à les faire passer par 2 points que je déclare en fait. En gros je donne les coordonnées de 2 points et la droite passe entre.

  4. #4
    Membre éprouvé
    Avatar de mihaispr
    Inscrit en
    Décembre 2008
    Messages
    1 025
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 025
    Par défaut
    Ok. Dans ce cas tu dois utiliser un marcateur pour un point et la fonction plot.


    Il faut que tu commence lire par ici:

    F1(Help) et dans le search tab tappes: lines plot

    Tu as des nombreux sujets trates:

    -Plotting Markers and Lines
    -Plotting Lines and Markers
    -Defining the Color of Lines for Plotting
    -Line Styles Used for Plotting -- LineStyleOrder



    Moi je veux marquer en axes1 a mouse_click des points(a chaque appui du mouse il me met un point). Tu peux utliser ca et faire le plot entre les deux points(trace a deux click du mouse sur l'axes1 et puis lier ces deux points). Mais je ne sais pas comment mettre au mouse_click 2 points sur mon axes1(a deux clicks du mouse).

    Je ne peux pas t'aider plus!


    J'espere que ce que j'ai dis serais un point de depart pour toi.

    Si tu reussi mettre deux points en axes au mouseclick(dans axes1 a chaque click du mouse) annonce moi ici s'il te plait parce que ma probleme c'est ca. Je ne dois pas tracer une ligne entre les points mais pour instant tu dois placer tes points dans axes1 a chaque clique du mouse.

    Apres ca tu dois unir tes points par une ligne tu peux mettre sur ta forme un button unir les point(et quand tu tappe sur lui il unit test point qui se trouve en axes).



    Je te donne un code pour l'integrer en axes. Apres tu dois unir les 2 point que tu mets (a deux clicks du mouse) par une ligne.

    J'attache ici la source.


    CE QUE TU DOIS FAIRE :

    Tu dois ajouter ces points en axes1 a chaque appui du mouse et puis unir tes points avec une ligne (donc tu as 2 etapes pour faire ce que tu veux).

    J'ai le meme probleme que toi mais je dois tracer seulement des points en axes1 (sans l'unir).


    J'ai attache gui12.m pour etre ton point de depart. Si tu reussis mettre des points bleus a mouse click dans axes1 annonce moi s'il te plait.


    Gui12.m ici:

    http://www.mediafire.com/?10dtutlnlgc

    >>gui12 %en command window et clique avec le mouse a l'interieur de figure(qui semble a un axes). A chaque appui du mouse il te met un point. Tu peux changer le marcateur pas cercle mais *.

    Donc si tu veux des point marques par * tu dois remplacer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     pnts = line('XData', [], 'YData', [], ...
        'ButtonDownFcn', @ButtonDown, ...
        'LineStyle','None', ...
        'Marker', 'o', ...
        'MarkerFaceColor', 'b', 'MarkerEdgeColor', 'b', ...
        'UIContextMenu', cmenu);

    par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     pnts = line('XData', [], 'YData', [], ...
        'ButtonDownFcn', @ButtonDown, ...
        'LineStyle','None', ...
        'Marker', '*', ...
        'MarkerFaceColor', 'b', 'MarkerEdgeColor', 'b', ...
        'UIContextMenu', cmenu);
    Amicalment,

    Michel

    Si tu reussis l'integrer en GUI attache sur mediafire ton fichier s'il te plait!

  5. #5
    Membre éprouvé
    Avatar de mihaispr
    Inscrit en
    Décembre 2008
    Messages
    1 025
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 025
    Par défaut
    Donc comme etapes je ferais ca:

    -Mettre des cercles sur l'axes1 au mouse_click a l'appui d'un button pushbutton
    Et aussi dans ce button (pushbutton1 par example donc function pushbutton1_callback) tu dois utiliser la fonction plot pour unir les points que tu mets sur ton axes1 a chaque clique du mouse et tu dois mettre ton code dans pushbutton1_callback.

    Pour acceder rapidement a callback d'un button click droit du mouse->View Callbacks et Callback et il te dirige dans la place ou tu veux mettre ton code applie a ton button.

  6. #6
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 36
    Par défaut
    Bon en fait voilà ce que je voudrais faire. L'utilisateur me donne le nombre de cotés de son polygone dans une textbox. Ensuite au clic sur le bouton ok, je récupère cette valeur et il faudrait que je crée le nombre de points (coordonnées) correspondant au nombre de cotés + 1 et que je trace des droites entre ces points. Une petite idée de ce que je peux faire?

  7. #7
    Membre éprouvé
    Avatar de mihaispr
    Inscrit en
    Décembre 2008
    Messages
    1 025
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 025
    Par défaut
    Citation Envoyé par Babaloutch Voir le message
    Bon en fait voilà ce que je voudrais faire. L'utilisateur me donne le nombre de cotés de son polygone dans une textbox. Ensuite au clic sur le bouton ok, je récupère cette valeur et il faudrait que je crée le nombre de points (coordonnées) correspondant au nombre de cotés + 1 et que je trace des droites entre ces points. Une petite idée de ce que je peux faire?
    Salut!

    Tu dois utiliser un static text(tag: text1) ou un edit text composante edit(tag edit1) et utiliser les fonctions set &get pour passer une valeur d'une composante a un autre.

    Je te donne ici un morceau de code pour passer une valeur d'edit1 en static text1.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    a=get(handles.edit1,'String',5); %il preleve ta valeur d'edit1 polygone=5 par example
    set(handles.text1,String",a); % apres la prelevation d'edit1 tu mets ta valeur en static text composante
    Pour voir comment fonctionne les fonctions set&get voir ce video tutoriel ici pour adapter a ce que tu desires faire:

    http://www.youtube.com/watch?v=K45zDpSew98


    Comme ca pour le debut de ce que tu dois faire.(utiliser set & get)

    J'espere autres t'aider plus!

    Bonne chance,

    Michel

  8. #8
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 36
    Par défaut
    En fait les set et les get je sais faire. C'est juste le reste que j'arrive pas faire. A savoir générer le nombre de points nécessaire... Ensuite pour tracer les droites entre je devrais pouvoir trouver. Faudrait juste qu'on m'aide à générer les points.

  9. #9
    Membre éprouvé
    Avatar de mihaispr
    Inscrit en
    Décembre 2008
    Messages
    1 025
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 025
    Par défaut
    Si tu as lu le forum j'ai pose la meme question comment gerer des points dans la composante axes.

    Comme idee je crois que apres tu places tes points en axes tu dois utiliser la fonction findobj pour cherchee tes points dans la composante axes1 et puis les unir.

    C'est la derniere idee qui me vient dans la tete.

    Je ne sais pas aussi faire la mise en axes1, je suis debutant en matlab comme toi j'ai l'idee comment faire mais je n'ai reussi integrer mes points en axes1 au mouse_click (ca ce passe a togglebutton activation)

    Si tu reussis faire donne moi un reponse. Aussi si je reussis faire ca je t'envoyerai.

    Amicalment,

    Michel

    Utiliser togglebutton en matlab c'est le sujet.

  10. #10
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 36
    Par défaut
    Oui j'ai déjà vu le sujet que tu as lancé. Mais moi c'est pas pareil ce que je veux faire. Les points ne sont pas visibles. Ce que je cherche c'est déclaré des coordonnées pour chaque point. En gros ce serait de créer une matrice contenant les coordonnées des points puis de tracer le polygone correspondant.

  11. #11
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 36
    Par défaut
    Bon voilà le code auquel j'arrive pour le moment :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    alpha = 2 * pi / m(i,4);
           r = m(i,5);
           for j = 1:m(i,4)
                xj = r * sin(j* alpha + (alpha/2) );
                yj = r * cos(j* alpha + (alpha/2) );
                hold on;
                plot(handles(2), xj, yj);
           end
    m(i,4) est le nombre de cotés, r représente le rayon. A part ça je pense qu'il n'y a rien à expliquer. Le problème est que ce bout de code ne me met que des points sur l'axe. Il faudrait maintenant que j'arrive les reliés...
    mihaispr pour toi je pense que ce code convient. En gros ce que tu dois faire c'est plot(handles(2), xj, yj); en remplaçant xj et yj par les coordonnées de la souris et bien sûr remplacer handles(2) par ton axe. Tu devrais n'avoir qu'un point.

  12. #12
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 36
    Par défaut
    C'est bon j'ai trouvé. Bon je trouve ma méthode un peu barbare mais bon... L'important pour le moment c'est que ça fonctionne. Donc pour ceux qui auraient ce problème je met mon code. Bien sûr si des propositions de meilleur code sont trouvées je veux bien les voir.

    Donc voilà mon code pour dessiner toutes mes formes :

    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
     
    function dessin(obj,event)
            m =  getappdata(0,'formes');                % Récupération de la matrice m qui contient les formes
     
            taille = size(m);[nbLignes nbColonnes]
            nbLignes = taille(1,1);
     
            cla;
     
            for i = 1:nbLignes
                if m(i,1) == 0
                    XCentre = 0;
                    YCentre = 0;
                    Rayon = m(i,5);
                    VThetaDeg = 0:1:360;
                    VTheta = VThetaDeg * pi / 180;
                    XCercle = XCentre + Rayon * cos(VTheta);
                    YCercle = YCentre + Rayon * sin(VTheta);
                    hold on;
                    plot(handles(2), XCercle, YCercle, 'color','black');
                elseif m(i,1) == 1
                    alpha = 2 * pi / m(i,4);
                    r = m(i,5);
                    x = [];
                    y = [];
                    x1 = [];
                    y1 = [];
                    for j = 1:m(i,4)
                        xj = r * sin(j * alpha + (alpha/2) );
                        yj = r * cos(j * alpha + (alpha/2) );
     
                        if j == 1
                           x1 = [xj];
                           y1 = [yj];
                        end
     
                        x = [x;xj];
                        y = [y;yj];
     
                        hold on;
     
                        plot(handles(2), x, y);
                    end
                    x = [x;x1];
                    y = [y;y1];
     
                    hold on;
     
                    plot(handles(2), x, y);
                 end
            end

  13. #13
    Membre éprouvé
    Avatar de mihaispr
    Inscrit en
    Décembre 2008
    Messages
    1 025
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 025
    Par défaut
    Ok. J'attacherais aussi le code du togglebutton pour ceux qui ont besoin.

    Bonne chance,

    Michel

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

Discussions similaires

  1. [AC-2003] Tracage des lignes d'un tableau avec case a cocher
    Par isabelle b dans le forum IHM
    Réponses: 2
    Dernier message: 25/05/2009, 22h44
  2. Réponses: 9
    Dernier message: 23/05/2008, 16h05
  3. [TP]lire une ligne de l'ecran et la stocker dans une chaine
    Par Bleuarff dans le forum Turbo Pascal
    Réponses: 26
    Dernier message: 02/07/2002, 10h08
  4. Couleur des lignes dans DBGrid
    Par eddie dans le forum C++Builder
    Réponses: 5
    Dernier message: 21/06/2002, 18h15
  5. String Grid et choix d'une couleur pour une ligne
    Par Gigottine dans le forum C++Builder
    Réponses: 12
    Dernier message: 17/05/2002, 15h23

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