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!
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',...
17 % colors et values peuvent etre utilise pour representer
18 % une colorbar. (voir colorbarIso.m et demo.m)
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 % ----------------------------------------------------------------
27 cmap = colormap(tcmap);
40 plot(x(ar(:,i)),y(ar(:,i)),
'k')
51 iso_psi=psimin:(psimax-psimin)./(niso-1):psimax;
57 % boucle sur la liste des iso_valeurs
60 % boucle sur l'ensemble des elements pour recherche sur iso_psi
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;
73 % Boucle sur les iso-valeurs
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);
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)))
92 if (iso_psi(isov)>min(val(2),val(3))) & (iso_psi(isov)<max(val(2),val(3)))
96 if (iso_psi(isov)>min(val(1),val(3))) & (iso_psi(isov)<max(val(1),val(3)))
99 % Determination des coordonnees interpolees lineairement entre 2 noeuds
103 elseif cote(1,icotok)==2
105 elseif cote(1,icotok)==3
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));
115 xmin=x(kloce(noeud2));
116 ymin=y(kloce(noeud2));
117 xmax=x(kloce(noeud1));
118 ymax=y(kloce(noeud1));
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
127 set(h,'Color',colors(isov,1:3))
128 %linelabel(h,iso_psi(isov));
135 end %fin boucle sur les elements repertories
136 end %fin boucle sur les iso-valeurs