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 :

cylindres avec épaisseur [Débutant]


Sujet :

MATLAB

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 24
    Par défaut cylindres avec épaisseur
    Bonjour à tous

    je suis à actuellement dans une impasse. je cherche à modéliser le tronc d'un arbre. Pour cela je dois modéliser des couches qui se superposent.

    dans un premier temps il faut donc que je crée des cylindres concentriques avec une certaine épaisseur

    ainsi donc le premier de mes soucis : faire des cylindres avec une certaine épaisseur
    j'ai utilisé l'outil cylinder suivant ce modèle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    [X,Y,Z] = cylinder;
    h = 10;
    Z = Z*h;
    figure
    surf(X,Y,Z);
    mais je ne vois pas comment donner une épaisseur à la paroi
    Si quelqu'un a une idée

    Merci d'avance
    Tube

  2. #2
    Membre éprouvé
    Homme Profil pro
    Doctorant LNE Trappes
    Inscrit en
    Mai 2014
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Doctorant LNE Trappes
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 64
    Par défaut
    Pour modifier l'épaisseur de la couche :

    Code m : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    [X,Y,Z]=cylinder;
    Z(2,:)=Z(2,:)*10;
    mesh(X,Y,Z)

    Pour ajouter des couches :

    Code m : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    clear;clc;
    [X,Y,Z]=cylinder;
    nbTrancheTronc=5;
    xx=repmat(X,nbTrancheTronc,1);
    yy=repmat(Y,nbTrancheTronc,1);
    zz=repmat(Z,nbTrancheTronc,1)+kron(repmat((1:nbTrancheTronc)',1,21), ones(2,1));
    mesh(xx,yy,zz)

  3. #3
    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
    Citation Envoyé par LeTube Voir le message
    mais je ne vois pas comment donner une épaisseur à la paroi
    Tu ne peux pas donner d'épaisseur au cylindre. Tu peux juste tracer les peaux interne et externe à l'aide de deux cylindres, et fermer les deux surfaces circulaires au dessus et au dessous :

    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
    N = 50;
    r = 0.2;
    R = 0.4;
     
    [X1, Y1, Z1] = cylinder(r, N);
    [X2, Y2, Z2] = cylinder(R, N);
     
    [th, r] = meshgrid(linspace(0, 2*pi, N+1), linspace(r, R, 10));
    [X3,Y3] = pol2cart(th,r);
     
    figure
    hold on
    s(1) = surf(X1, Y1, Z1);
    s(2) = surf(X2, Y2, Z2);
    s(3) = surf(X3, Y3, zeros(size(X3)));
    s(4) = surf(X3, Y3, ones(size(X3)));
     
    view(3)
    grid on
    axis equal tight vis3d
    Pour un rendu comme en CAO :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    set(s, 'facecolor', 'c', 'edgecolor', 'none', 'FaceLighting', 'gouraud')
    lighting gouraud
    light

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 24
    Par défaut
    je vous remercie tous les deux pour l'aide apportée

    Paul je pense m'être mal exprimée puisque en fait je parlais de plusieurs cylindres concentriques de rayons différents et non d'un empilement de couche ayant le même rayon suivant l'axe du tronc.
    Cependant ta réponse m'intéresse puisque pour modéliser un tronc, on doit d'abord passer par un modèle cylindrique (histoire de comprendre) puis changer la géométrie pour se rapprocher d'une sorte d'empilement de cône. Il est donc probable que j'ai à me servir de ta méthode.


    Dut, si j'ai bien compris, il m'est impossible de créer un volume avec de l'épaisseur? par exemple si l'on créait un disque de rayon interne ri et de rayon externe re, on peut répéter la manip de manière à obtenir un empilement de disque avec un espacement suffisamment faible pour avoir l'impression d'un cylindre avec une paroi épaisse mais pas on ne peut pas obtenir un domaine continu?

  5. #5
    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
    Citation Envoyé par LeTube Voir le message
    Dut, si j'ai bien compris, il m'est impossible de créer un volume avec de l'épaisseur?
    Pas au sens physique du terme. Le monde de l'informatique est discret, pas continu

    Tout l'art de la 3D et du rendu est de faire croire que ce qu'on voit est réel. L'objet (ici le cylindre) n'existe pas en 3D. Tu vois juste une "projection" sur la grille de pixels de l'écran. Donc les notions de volumes et d'épaisseurs n'ont (pratiquement) aucun sens.

    Quel est le problème avec la solution que je te propose ?

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 24
    Par défaut
    Aucun problème en fait

    c'était plus une curiosité qu'autre chose
    je viens de me rendre compte que le problème qui m'est posé est géométrique et non statique. du coup, la recherche de la création de cylindre avec une épaisseur est quelques peu "inutile"

    en fait j'étudie l'influence de l'angle de fil (inclinaison des différentes couches par rapport à l'axe) sur la résistance d'une planche découpée dans un tronc d'arbre.
    donc dans un premier temps je tente d'établir un modèle mathématique qui va tenir compte de plusieurs paramètres.
    dans le cas où l'on considère des cylindres en soit c'est pas très intéressant puisque du coup l'angle est nul

    mais, c'est un premier pas et j'ai besoin d'aide sur matlab que je ne maitrise pas du tout

  7. #7
    Membre éprouvé
    Homme Profil pro
    Doctorant LNE Trappes
    Inscrit en
    Mai 2014
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Doctorant LNE Trappes
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 64
    Par défaut
    Pour ma part je ne travaille qu'avec des nuages de point, et ça devient plus facile pour modéliser ton arbre.

    A titre d'exemple, au lieu de modéliser des arbres, je souhaite modéliser des champignons, voici un résultat simple :

    Nom : mushrooms.png
Affichages : 662
Taille : 22,7 Ko



    De loin, tout a l'air lisse. Lorsque tu commences à t'approcher, tu t’aperçois que ce sont des nuages de point.

    Nom : mush.png
Affichages : 669
Taille : 496,3 Ko



    - Le chapeau est un nuage de point de type gaussien
    - Le tronc est une superposition de cercles, qui eux même sont construits par des points distribués périodiquement en cercle.
    - Le pied est un nuage de point distribué en rectangle

    Aprés avec du scatter3 ou d'autres programmes libres sur mathwork, tu améliores la couleur.

  8. #8
    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
    Citation Envoyé par Paul-Ceria Voir le message
    De loin, tout a l'air lisse. Lorsque tu commences à t'approcher, tu t’aperçois que ce sont des nuages de point.
    Cette méthode a l'inconvénient de nécessiter une grosse quantité de mémoire (RAM) et une bonne puissance de calcul (CPU).
    Il est vrai que c'est moins un problème aujourd'hui avec les architectures 64 bits et la quantité de RAM associée.


    Citation Envoyé par Paul-Ceria Voir le message
    Aprés avec du scatter3
    Attention, scatter3 créée beaucoup d'objets Patch. C'est clairement une fonction qui met à plat les configurations les moins puissantes.

  9. #9
    Membre éprouvé
    Homme Profil pro
    Doctorant LNE Trappes
    Inscrit en
    Mai 2014
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Doctorant LNE Trappes
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 64
    Par défaut
    Oui scarter est très mauvais, personnellement j'ai une fonction qui lui ressemble mais va considérablement plus vite, de plus je peux sur un même graphique utiliser différents jeux de couleur.

    A titre d'exemple, avec un PC moyen, j'affiche 25 millions de point en 3 secondes avec cette fonction. Suffisant pour obtenir des champignons ou des arbres

    Code m : 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
    function plotNuage(X,Y,Z,C,cmap)
     
    numclass = max(size(cmap));
    siz = 5;
     
    ii = floor( (C - min(C) ) * (numclass-1) / (max(C) - min(C)) );
    ii = ii + 1;
     
    colormap(cmap);
     
    %% Affichage par récurrence
    j = 1;
    iteration(j,numclass)
     
        function iteration(j, numclass)
            jj = (ii(:)== j);
            if ~isempty(jj) && j<=numclass
                plot3(X(jj),Y(jj),Z(jj),'.','color',cmap(j,:),'markersize',siz);
                j = j + 1;
                iteration(j,numclass);
            end
        end
    end

    La fonction itération permet juste d'éviter une boucle for.

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

Discussions similaires

  1. Modifier l'épaisseur et le style d'un tracé gpx avec API IGN 1.3
    Par SebDeSuper dans le forum IGN API Géoportail
    Réponses: 10
    Dernier message: 11/04/2012, 09h01
  2. Afficher des cylindres avec OpenGL
    Par PetitProgJava dans le forum OpenGL
    Réponses: 3
    Dernier message: 10/01/2009, 02h14
  3. trait avec une épaisseur spécifique
    Par pulsefight dans le forum Flash
    Réponses: 3
    Dernier message: 12/11/2008, 12h56
  4. [Graphics] rectangle avec épaisseur
    Par Galima dans le forum 2D
    Réponses: 2
    Dernier message: 10/06/2004, 20h06
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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