Colorier sous surface/ MATLAB
Résolu
Irene_Adler
Messages postés
129
Date d'inscription
Statut
Membre
Dernière intervention
-
Sacabouffe Messages postés 9427 Date d'inscription Statut Membre Dernière intervention -
Sacabouffe Messages postés 9427 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
Je travaille sur MATLAB et je veux colorier le volume compris entre les deux surfaces que j'ai créé, qui ne se rejoignent pas.
Quelle est la commande pour le faire?
Merci de votre aide!
Je travaille sur MATLAB et je veux colorier le volume compris entre les deux surfaces que j'ai créé, qui ne se rejoignent pas.
Quelle est la commande pour le faire?
Merci de votre aide!
A voir également:
- Colorier sous surface/ MATLAB
- Logiciel gratuit calcul surface m2 - Télécharger - Outils professionnels
- Télécharger surface - Télécharger - Bureautique
- Windows Surface Scanner - Télécharger - Divers Utilitaires
- Colorier case excel selon valeur - Guide
- Ecran noir surface pro - Forum Windows 8 / 8.1
3 réponses
Salut Irene_Adler
Bon, ta question date d'une semaine, je l'avais vue, mais elle est pas assez précise en fait et je voyais pas que tu voulais faire exactement. Je me lance quand même...
Quand tu parles de colorer le volume entre deux surfaces qui se rejoignent pas, la question est : Comment tu définis le volume entre deux surfaces qui se rejoignent pas?
Si on considère deux surfaces S1 et S2, il faut se placer relativement à un axe (l'axe (Oz) par exemple) et considérer les points dont la cote z vérifie z1 ≤ z ≤ z2 avec z1 = S1 ∩ (Oz) et z2 = S2 ∩ (Oz). Mais c'est possible que si la projection des surfaces sur le plan (Oxy) est la même.
Donc... en supposant que t'es bien dans ces conditions, ben... je vois pas trop comment faire. Pour colorer un volume sous MatLab, sans avoir de maillage tétrahédrique de ce volume, je sais pas si c'est possible. J'ai aussi demandé autour de moi, aucune idée lumineuse...
Du coup, la seule solution que je peux te proposer c'est de colorer la frontière de ton volume. Tu récupère les segments de la frontière des 2 surfaces, tu crées des rectangles et tu colores chacun d'eux.
Par exemple, pour deux surfaces définies pour (x,y) dans [-1,1]², ça donnerait ça:
Bon, ta question date d'une semaine, je l'avais vue, mais elle est pas assez précise en fait et je voyais pas que tu voulais faire exactement. Je me lance quand même...
Quand tu parles de colorer le volume entre deux surfaces qui se rejoignent pas, la question est : Comment tu définis le volume entre deux surfaces qui se rejoignent pas?
Si on considère deux surfaces S1 et S2, il faut se placer relativement à un axe (l'axe (Oz) par exemple) et considérer les points dont la cote z vérifie z1 ≤ z ≤ z2 avec z1 = S1 ∩ (Oz) et z2 = S2 ∩ (Oz). Mais c'est possible que si la projection des surfaces sur le plan (Oxy) est la même.
Donc... en supposant que t'es bien dans ces conditions, ben... je vois pas trop comment faire. Pour colorer un volume sous MatLab, sans avoir de maillage tétrahédrique de ce volume, je sais pas si c'est possible. J'ai aussi demandé autour de moi, aucune idée lumineuse...
Du coup, la seule solution que je peux te proposer c'est de colorer la frontière de ton volume. Tu récupère les segments de la frontière des 2 surfaces, tu crées des rectangles et tu colores chacun d'eux.
Par exemple, pour deux surfaces définies pour (x,y) dans [-1,1]², ça donnerait ça:
[X Y]=meshgrid((-1:0.1:1)); Z1=-1-sin(2*pi*sqrt(X.^2+Y.^2)); Z2=1-X.^2-Y.^2; Xb=[X(end,:).';X(end-1:-1:1,end);X(1,end-1:-1:1).';X(2:end,1)]; Yb=[Y(end,:).';Y(end-1:-1:1,end);Y(1,end-1:-1:1).';Y(2:end,1)]; Z1b=[Z1(end,:).';Z1(end-1:-1:1,end);Z1(1,end-1:-1:1).';Z1(2:end,1)]; Z2b=[Z2(end,:).';Z2(end-1:-1:1,end);Z2(1,end-1:-1:1).';Z2(2:end,1)]; Xbmat=[repmat(Xb,1,2) repmat(circshift(Xb,1),1,2)]; Ybmat=[repmat(Yb,1,2) repmat(circshift(Yb,1),1,2)]; Zmat=[Z1b Z2b circshift(Z2b,1) circshift(Z1b,1)]; hold on; surf(X,Y,Z1,'FaceColor','red','EdgeColor','none');camlight left;lighting phong; surf(X,Y,Z2,'FaceColor','red','EdgeColor','none');camlight left;lighting phong; fill3(Xbmat.',Ybmat.',Zmat.',[1 0 0],'EdgeColor','none');camlight left;lighting phong; hold off;A plus
Merci de ta réponse!
C'est vrai qu'en relisant la question je n'étais pas assez claire. ;)
Je vais essayer ton code, je pensais qu'il y avait peut etre une fonction en 3d qui coloriait le volume entre une surface et un plan, comme une projection en gardant les lignes de construction (c'est un peu dur de s'expliquer sans dessin!)
Merci encore et à bientot!
Mais attends... si c'est pour un volume entre une surface et un plan, c'est un peu plus simple !
Bon, comme précédemment on colore pas le volume mais les bords du volume mais bon...
Un exemple...
A plus
je n'avais pas vu ton message. J'ai essayé et ca marche, merci!
à plus!
À la prochaine