clear;
clf;
deff('[y] = pression(x,t)', 'y = sin(t)*sin(x)')
deff('[y] = vitesse(x,t)', 'y = -sin(t+%pi/2)*cos(x)')
x=0:0.025:%pi/2; // tuyau quart d'onde
y=[-1,-0.9,0.9,1]; // hauteur du tuyau
nx=max(size(x));
p=2*ones(nx,4); // pour fixer les extremes de l'echelle des couleurs
p(:,4)=zeros(nx,1); // les niveaux 0 et 2 sont toujours affiches
vx(:,1) = 0:%pi/18:%pi/2; // position des vecteurs vitesse
nx=max(size(vx));
vy1 = 0.75*ones(2,nx);
vy2 = 0.25*ones(2,nx);
vy3 = -vy2;
vy4 = -vy1; // 4 lignes de flèches
xset('colormap', graycolormap(256)); // niveaux de gris
for i=0:9
for j=0:9
t=(i*10+j)*0.02*%pi;
clf;
p1=-feval(x,t,pression);
p(:,2)=1 - p1;
// l'inversion du signe permet d'avoir les
// hautes pression en sombre
// sans torturer la carte des gris
p(:,3)=p(:,2);
vx(:,2)=vx(:,1)+0.2*feval(vx(:,1),t,vitesse);
v=feval(x,t,vitesse);
scf(0);
subplot(2,2,1)
grayplot(x,y,p,rect=[0,-1,%pi/2,1],axesflag=0);
xpoly([1.56,1.56],[-0.95,0.95]);
subplot(2,2,3)
plot2d(vx(:,1),vy1(1,:),...
rect=[0,-1,%pi/2,1],style=0,axesflag=0)
// pour l'echelle
xpoly([0,1.57],[0.95,0.95]);
xpoly([0,1.57],[-0.95,-0.95]);
xpoly([1.56,1.56],[-0.95,0.95]);
xarrows(vx',vy1,arsize=0.7);
xarrows(vx',vy2,arsize=0.7);
xarrows(vx',vy3,arsize=0.7);
xarrows(vx',vy4,arsize=0.7);
subplot(2,2,2)
plot2d(x,p1,rect=[0,-1,%pi/2,1],axesflag=5);
xtitle('P-P0','x', ' ')
subplot(2,2,4)
plot2d(x,v,rect=[0,-1,%pi/2,1],axesflag=5);
xtitle('V-V0','x', ' ')
nom='test\test'+code2str(i)+code2str(j)+'.gif';
xs2gif(0,nom,1)
end;
end;