clear;
Nx=35; // taille de la grille
Ny=29;
// Ny=5; // test
Nxaff = 30; // taille affichee
Nyaff = 24;
// Nyaff=4; // test
L=2; // largeur (loi empirique)
points_initiaux_x = zeros(Nx,Ny); // initialisation
points_initiaux_y = zeros(Nx,Ny);
for i=1:Nx
for j=1:Ny
points_initiaux_x(i,j) = i;
points_initiaux_y(i,j) = j;
end
end
points_finaux_x = points_initiaux_x;
points_finaux_y = points_initiaux_y;
// fonction
deff('[e]=profilP(r)','e=exp(-(r/L)^2)'); // profil empirique
deff('[e]=profilS(r)','e=r*exp(-(r/L)^2)');
// programme principal
xmin = (Nx-Nxaff)/2+1;
xmax = Nx-xmin;
ymin = (Ny-Nyaff)/2+1;
ymax = Ny-ymin;
unite=0;dizaine=0; // pour le nom de fichier
for r=-1:0.5:Nx+12 // position du front d'onde
intensiteP = 1.5; // variation avec la distance
intensiteS = 2;
for i=1:Nx
for j=1:Ny
// e = deplacement du point
eP = intensiteP*profilP(i-r);
eS = intensiteS*profilS(i-r*0.72);
points_finaux_x(i,j) = points_initiaux_x(i,j) + eP;
points_finaux_y(i,j) = points_initiaux_y(i,j) + eS;
end
end
// dessin
clf;
plot2d(0,0,-1,"010"," ",[xmin,ymin,xmax,ymax])
for i=1:Nx
for j=1:Ny
xpoly(points_finaux_x(i,:),points_finaux_y(i,:));
xpoly(points_finaux_x(:,j),points_finaux_y(:,j));
end
end
nom='test\test'+code2str(dizaine)+code2str(unite)+'.gif';
xs2gif(0,nom,1);
unite = unite+1;
if unite == 10 then
dizaine = dizaine + 1;
unite = 0 ;
end
end