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 3D de p(r,phi,z)


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 10
    Par défaut Affichage 3D de p(r,phi,z)
    Bonjour à tous,

    Je cherche actuellement à représenter la distribution de pression dans un cylindre avec MATLAB.
    Une image sera plus utile qu'un long discours, je voudrais avoir un résultat à peu près comme ça :


    J'ai une expression de la pression, en coordonnées cylindriques. Et après avoir essayer plusieurs solutions trouvées sur internet je n'ai pas trouvé mon bonheur.

    Dans l'absolu, je n'ai pas besoin de représenter tout mon volume. Une solution à laquelle j'ai pensé est de créer un cylindre comme sur cette image
    auquel on ajouterait les surfaces à chaque extrémité. Mais je n'ai pas réussi à réaliser cela.

    Quelqu'un a-t-il une solution?

    PS:Mon niveau en MATLAB est plutôt débutant

  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
    Quelle est la forme de tes données ?
    Sont-elles réparties sur une grille régulière le long du cylindre ?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 10
    Par défaut
    J'ai simplement une equation de la forme (j'ai mis les variables en gras) :

    p(r,ϕ,z)= cos⁡(lπz/L).cos⁡(nϕ).J(α.r/R)
    avec J une fonction de bessel du premier ordre.

    donc pour la répartition des valeurs c'est moi qui décide.
    Je peut donc créer les vecteurs R, ϕ et z avec un espacement régulier.

  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
    Un exemple :
    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
    [theta,z] = meshgrid(0:pi/50:2*pi,1:30);
    rho = ones(size(theta));
    p = z.*cos(theta);
     
    [x,y,z] = pol2cart(theta,rho,z);
     
    figure
     
    surf(x,y,z,p,'edgecolor','none')
     
    hold on
     
    patch(x(1,:),y(1,:),z(1,:),p(1,:)); % Face inferieure
    patch(x(end,:),y(end,:),z(end,:),p(end,:)); % Face superieure
     
    axis vis3d

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 10
    Par défaut
    Merci beaucoup pour ta réponse et ta rapidité,
    Je testerais ça lundi matin! (je n'ai pas matlab chez moi!)

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 10
    Par défaut
    J'ai aujourd'hui essayer le code proposé, mais malheuresement un problème persiste. En effet, sur les deux surfaces patch, la répartition des couleurs ne se fait pas suivant mon équation. Sur l'image suivante, il y a à gauche le résultat que j'ai actuellement. Or je voudrais que la surface "patch" soit comme celle de droite (image qui a été créé avec surf, donc c'est une surface 3D, qui est ici vu du dessus)


    Est-il possible de modifier la fonction patch pour répondre à mon besoin?
    (Je n'ai pas encore vraiment compris comment fonctionne la fonction patch)

    Edit: Dans le code au dessus il y a :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rho = ones(size(theta));
    Dans ce cas rho a toujours la meme valeur, pour mes surfaces inférieurs et supérieur, dois-je modifié cela?

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

Discussions similaires

  1. Pb affichage avec un PaintBox (pour eviter scintillement)
    Par juan64 dans le forum C++Builder
    Réponses: 7
    Dernier message: 08/04/2004, 09h21
  2. [VB6] [Flexgrid] Format d'affichage des numériques
    Par yansolo dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 19/10/2002, 21h00
  3. Affichage de documents PDF
    Par Dajon dans le forum C++Builder
    Réponses: 5
    Dernier message: 10/10/2002, 11h36
  4. probléme d'affichage d'une fiche
    Par sb dans le forum Composants VCL
    Réponses: 7
    Dernier message: 29/08/2002, 09h43
  5. Affichage en passant par un buffer...
    Par Sirotilc dans le forum MFC
    Réponses: 5
    Dernier message: 27/05/2002, 21h00

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