Colorier sous surface/ MATLAB
Résolu/Fermé
Irene_Adler
Messages postés
129
Date d'inscription
jeudi 26 juin 2008
Statut
Membre
Dernière intervention
9 juillet 2011
-
1 août 2008 à 16:32
Sacabouffe Messages postés 9427 Date d'inscription dimanche 19 août 2007 Statut Membre Dernière intervention 29 mai 2009 - 12 août 2008 à 21:39
Sacabouffe Messages postés 9427 Date d'inscription dimanche 19 août 2007 Statut Membre Dernière intervention 29 mai 2009 - 12 août 2008 à 21:39
A voir également:
- Colorier sous surface/ MATLAB
- Logiciel calcul surface terrain gratuit - Télécharger - Outils professionnels
- Télécharger surface - Télécharger - Bureautique
- Remplir une matrice matlab ✓ - Forum Matlab
- Windows Surface Scanner - Télécharger - Divers Utilitaires
- Colorier case tableau word ✓ - Forum Word
3 réponses
Sacabouffe
Messages postés
9427
Date d'inscription
dimanche 19 août 2007
Statut
Membre
Dernière intervention
29 mai 2009
1 834
8 août 2008 à 18:24
8 août 2008 à 18:24
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
Irene_Adler
Messages postés
129
Date d'inscription
jeudi 26 juin 2008
Statut
Membre
Dernière intervention
9 juillet 2011
18
6 août 2008 à 15:25
6 août 2008 à 15:25
re-bonjour!
je n'ai toujours pas trouvé (je crois avoir lu une 20taine de pages sur google!)
alors SVP quelqu'un aurait une idée?
Ce serait une fonction un peu comme area() mais en 3D.
Merci d'avance!
je n'ai toujours pas trouvé (je crois avoir lu une 20taine de pages sur google!)
alors SVP quelqu'un aurait une idée?
Ce serait une fonction un peu comme area() mais en 3D.
Merci d'avance!
Irene_Adler
Messages postés
129
Date d'inscription
jeudi 26 juin 2008
Statut
Membre
Dernière intervention
9 juillet 2011
18
7 août 2008 à 17:10
7 août 2008 à 17:10
re-re-bonjour,
Je crois que je vais finir par laisser tomber...
Mais si quelqu'un a la réponse, je suis curieuse de savoir...
Bye!
Je crois que je vais finir par laisser tomber...
Mais si quelqu'un a la réponse, je suis curieuse de savoir...
Bye!
11 août 2008 à 15:39
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!
11 août 2008 à 17:45
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
12 août 2008 à 20:52
je n'avais pas vu ton message. J'ai essayé et ca marche, merci!
à plus!
12 août 2008 à 21:39
À la prochaine