| MESH toolbox 0.1 Matlab/Octave mesh utils

- Main Page
- Related Pages
- Modules
- Files

- File List
- File Members

All Files Functions Groups Pages
PlotIso.m
Go to the documentation of this file.
1 function [colors,values]=PlotIso(q,me,ar,psi,niso,tcmap)
2 % function [colors,values]=PlotIso(q,me,ar,psi,niso,tcmap)
3 % Representation graphique des contours de psi sur
4 % un maillage non-structure. Version à améliorer/modifier!
5 %
6 % parameters:
7 % q : q(i,j) i-eme coordonnee du j-eme sommet
8 % me : me(il,k) indice de stockage dans le tableau q
9 % du il-eme sommet du triangle k
10 % ar : ar(:,i) indice de stockage dans le tableau q
11 % des deux sommets de l'arete i du bord
12 % psi : psi(i) valeur au point q(:,i) du maillage
13 % niso : nombre de lignes de niveaux
14 % tcmap : optionel (chaine de caracteres contenant un
15 % type de colormap : 'jet','cool',...
16 %
17 % colors et values peuvent etre utilise pour representer
18 % une colorbar. (voir colorbarIso.m et demo.m)
19 %
20 % Version : 2.0 - 4 Fevrier 2002
21 % Auteurs : Cuvelier F. & Fayssal B.
22 % Remarques : Non optimise
23 % Derniere Modification :
24 % - Modification de l'aide 20 Novembre 2003 (F.C.)
25 % ----------------------------------------------------------------
26 if ( nargin == 6 )
27 cmap = colormap(tcmap);
28 else
29 colormap('default');
30 cmap = colormap;
31 end
32 ns=size(q,2);
33 nt=size(me,2);
34 na=size(ar,2);
35 x=q(1,:);
36 y=q(2,:);
37 hold on
38 axis equal;
39 for i=1:na
40 plot(x(ar(:,i)),y(ar(:,i)),'k')
41 end
42
43
44 psimin=min(psi);
45 psimax=max(psi);
46
47 val=zeros(3,nt);
48 numelt=zeros(1,niso);
49 kloce=zeros(1,nt);
50
51 iso_psi=psimin:(psimax-psimin)./(niso-1):psimax;
52 psi=psi';
53 for kk=1:niso
54 ecrit(kk) = 1;
55 end
56
57 % boucle sur la liste des iso_valeurs
58 for iso=1:niso
59
60 % boucle sur l'ensemble des elements pour recherche sur iso_psi
61 i=1;
62 for iel=1:nt
63 val=psi(me(:,iel));
64 if((min(val)<=iso_psi(iso)) & (max(val)>=iso_psi(iso)))
65 numelt(1,iso)=numelt(1,iso)+1;
66 stock_numelt(iso,i)=iel;
67 i=i+1;
68 end
69
70 end
71
72 end
73 % Boucle sur les iso-valeurs
74 for isov=1:niso
75 colors(isov,1:3)=RGB((iso_psi(isov)-psimin)/(psimax-psimin),cmap);
76 values(isov)=iso_psi(isov);
77 % Boucle sur les elements repertories
78 Xplot=[];Yplot=[];k=1;
79 for ii=1:numelt(1,isov)
80 iel=stock_numelt(isov,ii);
81 cote=zeros(1,2);
82 kloce=me(:,iel);
83 val=psi(kloce);
84 ic=1;
85 if((val(1)~=iso_psi(isov))&(val(2)~=iso_psi(isov)) ...
86 &(val(3)~=iso_psi(isov)))
87 % Recherche des cotes de l'element concernes par iso_psi
88 if (iso_psi(isov)>min(val(1),val(2))) & (iso_psi(isov)<max(val(1),val(2)))
89 cote(1,ic)=1;
90 ic=ic+1;
91 end
92 if (iso_psi(isov)>min(val(2),val(3))) & (iso_psi(isov)<max(val(2),val(3)))
93 cote(1,ic)=2;
94 ic=ic+1;
95 end
96 if (iso_psi(isov)>min(val(1),val(3))) & (iso_psi(isov)<max(val(1),val(3)))
97 cote(1,ic)=3;
98 end
99 % Determination des coordonnees interpolees lineairement entre 2 noeuds
100 for icotok=1:2
101 if cote(1,icotok)==1
102 noeud1=1; noeud2=2;
103 elseif cote(1,icotok)==2
104 noeud1=2; noeud2=3;
105 elseif cote(1,icotok)==3
106 noeud1=3; noeud2=1;
107 end
108 %Recherche du noeud avec psi minimal
109 if val(noeud1)<val(noeud2)
110 xmin=x(kloce(noeud1));
111 ymin=y(kloce(noeud1));
112 xmax=x(kloce(noeud2));
113 ymax=y(kloce(noeud2));
114 else
115 xmin=x(kloce(noeud2));
116 ymin=y(kloce(noeud2));
117 xmax=x(kloce(noeud1));
118 ymax=y(kloce(noeud1));
119 end
120 pourcent=(iso_psi(isov)-min(val(noeud1),val(noeud2)))./ ...
121 (max(val(noeud1),val(noeud2))-min(val(noeud1),val(noeud2)));
122 xplot(1,icotok)=xmin+(xmax-xmin).*pourcent;
123 yplot(1,icotok)=ymin+(ymax-ymin).*pourcent;
124 end %fin boucle icotok
125
126 h=plot(xplot,yplot);
127 set(h,'Color',colors(isov,1:3))
128 %linelabel(h,iso_psi(isov));
129
130
131
132
133 end %fin test 'if'
134
135 end %fin boucle sur les elements repertories
136 end %fin boucle sur les iso-valeurs
137