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 :

affichage en 3D apres recuperation de valeurs par la methode DOM dans un XML


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 42
    Points : 18
    Points
    18
    Par défaut affichage en 3D apres recuperation de valeurs par la methode DOM dans un XML
    bonjour j'aimerais afficher des valeurs que j'ai recupéré dans un fichier xml a partir de matlab sur des graphes en 3D . Jai utilisé la methode DOM pour cela mais je n'arrive pas à les afficher en 3D. J'ai aimerais aussi ameliorer mon code en faisant une fonction vu que je repete deux la fois meme action pour recuperer mes valeurs. merci de m'aider voici mon petit 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
    DOMnode = xmlread('3D1infos.xml');
    xRoot = DOMnode.getDocumentElement;
    allPILEPRIMITIVES = DOMnode.getElementsByTagName('PILEPRIMITIVE');
    allPILEPRIMITIVES2 = DOMnode.getElementsByTagName('REGLE3D');
    for b = 0:allPILEPRIMITIVES2.getLength-1
       thisListItem2=allPILEPRIMITIVES2.item(b); 
       espace = char(thisListItem2.getAttribute('Nom'));
        result = strcmp(espace,'Ruler_1');
        if(result==1)
            thisList = thisListItem2.getElementsByTagName('Point1');
         Point1 = thisList.item(0);
          thisList = thisListItem2.getElementsByTagName('Point2');
          Point2 = thisList.item(0); 
        end
    end
    allPILEPRIMITIVES2 = DOMnode.getElementsByTagName('REGLE3D');
    for b = 0:allPILEPRIMITIVES2.getLength-1
       thisListItem2=allPILEPRIMITIVES2.item(b); 
       espace = char(thisListItem2.getAttribute('Nom'));
        result = strcmp(espace,'Ruler_2');
        if(result==1)
            thisList = thisListItem2.getElementsByTagName('Point1');
         Point3 = thisList.item(0);
          thisList = thisListItem2.getElementsByTagName('Point2');
          Point4 = thisList.item(0);
        end
    end

  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 302
    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 302
    Points : 53 165
    Points
    53 165
    Par défaut
    Essaie ceci :

    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
    DOMnode = xmlread('3D1infos.xml');
     
    xRoot = DOMnode.getDocumentElement;
    allPILEPRIMITIVES = DOMnode.getElementsByTagName('PILEPRIMITIVE');
    allPILEPRIMITIVES2 = DOMnode.getElementsByTagName('REGLE3D');
     
    Pt1 = [];
    Pt2 = [];
    Pt3 = [];
    Pt4 = [];
     
    for b = 0:allPILEPRIMITIVES2.getLength-1
     
        thisListItem2=allPILEPRIMITIVES2.item(b);
        espace = thisListItem2.getAttribute('Nom');
     
        result = strcmp(espace,{'Ruler_1','Ruler_2'});
     
        thisList1 = thisListItem2.getElementsByTagName('Point1');
        thisList2 = thisListItem2.getElementsByTagName('Point2');
     
        if result(1)==1
            Point1 = thisList1.item(0);
            Pt1 = [Pt1 ; str2num(get(Point1,'TextContent'))];
            Point2 = thisList2.item(0);
            Pt2 = [Pt2 ; str2num(get(Point2,'TextContent'))];
        elseif result(2)==1
            Point3 = thisList1.item(0);
            Pt3 = [Pt3 ; str2num(get(Point3,'TextContent'))];
            Point4 = thisList2.item(0);
            Pt4 = [Pt4 ; str2num(get(Point4,'TextContent'))];
        end
     
    end
    Il y a peut être plus simple...?

    Pour l'affichage, essaie dans un premier temps quelque chose comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    figure
    hold on
    plot3(Pt1(:,1),Pt1(:,2),Pt1(:,3),'r*',Pt2(:,1),Pt2(:,2),Pt2(:,3),'b*');
    plot3(Pt3(:,1),Pt3(:,2),Pt3(:,3),'m*',Pt4(:,1),Pt4(:,2),Pt4(:,3),'g*');
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 42
    Points : 18
    Points
    18
    Par défaut merci
    j'ai resolu mon problème merci

    Petite autre question svp si je veux relier mes points comment faire ?

  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 302
    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 302
    Points : 53 165
    Points
    53 165
    Par défaut
    Quel code utilises-tu pour tracer les valeurs ?
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 42
    Points : 18
    Points
    18
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    figure
    scatter3(Pt1(1,1),Pt1(1,2),Pt1(1,3),'o','r','linewidth',5);
    hold on;
    scatter3(Pt2(1,1),Pt2(1,2),Pt2(1,3),'o','r','linewidth',5);
    scatter3(Pt3(1,1),Pt3(1,2),Pt3(1,3),'o','b','linewidth',5);
    scatter3(Pt4(1,1),Pt4(1,2),Pt4(1,3),'o','b','linewidth',5)
    axis equal;
    set(gca,'xlim',[-200 200])
    set(gca,'ylim',[-200 200])
    set(gca,'zlim',[300 600])
    pour ce bout de code comme celui que vous ai passé précédemment j'ai voulu le rendre stylé , exactement comme vous l'avez fait ça ne marche pas avant d'afficher mes deux coordoonées de centre
    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
     
     allPILEPRIMITIVES1 = DOMnode.getElementsByTagName('SPHERESURFACE');
     for a = 0:allPILEPRIMITIVES1.getLength-1   
        thisListItem1=allPILEPRIMITIVES1.item(a);
        espace = char(thisListItem1.getAttribute('Nom'));
         result1 = strcmp(espace,'Sphere_1');
         if(result1==1)
             thisList = thisListItem1.getElementsByTagName('Centre');
        Centre1 = thisList.item(0);
         end
     end
       allPILEPRIMITIVES1 = DOMnode.getElementsByTagName('SPHERESURFACE');
     for b = 0:allPILEPRIMITIVES1.getLength-1   
        thisListItem1=allPILEPRIMITIVES1.item(b);
        espace = char(thisListItem1.getAttribute('Nom'));
         result1 = strcmp(espace,'Sphere_2');
         if(result1==1)
             thisList = thisListItem1.getElementsByTagName('Centre');
         Centre2 = thisList.item(0);
         end
     end

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 42
    Points : 18
    Points
    18
    Par défaut AIDE
    Bonjour J'ai reussi à afficher mes deux centres mais j'arrive pas a relier mes points par une droite ceux que vous m'avez aidé à tracer plus haut .Merci de m'aider dans la mesure du possible

  7. #7
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    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 302
    Points : 53 165
    Points
    53 165
    Par défaut
    Pourquoi utilises-tu SCATTER3 ?
    PLOT3 me semble plus appropriée ici, non ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    plot3(Pt1(:,1),Pt1(:,2),Pt1(:,3),'r-*')
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 42
    Points : 18
    Points
    18
    Par défaut aide
    avec plot la couleur de fond est blanche et je ne vois pas mes points tandis qu'avec scatter je vois tres bien mes points avec des couleurs differentes . Je ne vois pas trop la difference entre scatter et plot ? Comment pourrais-je faire pour relier mes quatre points que j'ai afficher plus haut deux à deux .

  9. #9
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    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 302
    Points : 53 165
    Points
    53 165
    Par défaut
    Essaie ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    p = plot3(Pt1(:,1),Pt1(:,2),Pt1(:,3));
    set(p,'marker','o','markerfacecolor','r','color','r','linestyle','-','markersize',10)
    Voir aussi la documentation sur les propriétés des objets Line : http://www.mathworks.com/help/techdo...ine_props.html
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 42
    Points : 18
    Points
    18
    Par défaut aide
    oups desolé avec plot3 ça marche aussi nickel c'est quoi la difference entre les deux ? comment pourrais-je faire pour les relier deux à deux svp ? Merci j'espere que je ne vous prends pas tout votre temps .

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 42
    Points : 18
    Points
    18
    Par défaut voilà merci
    J'ai réussi finalement grace à ceci :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    plot3(Pt1(1,1),Pt1(1,2),Pt1(1,3),'r-o','linewidth',5);
    plot3(Pt2(1,1),Pt2(1,2),Pt2(1,3),'r-o','linewidth',5);
     
     M=[Pt1;Pt2];
     M=transpose(M);
     plot3(M(1,:),M(2,:),M(3,:),'r')

Discussions similaires

  1. Réponses: 5
    Dernier message: 10/11/2011, 08h58
  2. [XL-2007] recupere une valeur par rapport a une date
    Par chris09300 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 13/02/2011, 21h13
  3. [MySQL] recuperer une valeur par POST et utiliser dans un SELCT
    Par patheo2 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 15/01/2010, 10h35
  4. Réponses: 2
    Dernier message: 12/01/2010, 18h43
  5. Recuperer une "valeur par default" dans une table
    Par Conico113 dans le forum IHM
    Réponses: 7
    Dernier message: 05/03/2008, 14h13

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