Previous Up Next

Chapitre 16  Exercice : Les courses poursuites

16.1  Le chien qui va en direction de son maitre

On chien se trouve en C de coordonnées (0,1) et son maitre se trouve en M de coordonnées (0,0).
Le maitre se déplace sur l’axe des x et le chien se dirige à la même vitesse en direction de son maitre.
On veut dessiner la trajectoire du chien.

chien():={
local X,Y,L,xk,yk,p,j,k,d,a,a1,b,b1;
DispG;
ClrGraph();
p:=0.1;
X:=0,0,3;
Y:=1,0,0;
L:=NULL;
pour k de 0 jusque 1 faire
L:=L,point(X[k]+i*Y[k],affichage=1+epaisseur_point_2+point_point);
fpour;
tantque abs(X[0]+i*Y[0]-X[1]-i*Y[1])>0.1 faire
pour k de 0 jusque 1 faire
a:=X[k];a1:=X[k+1]-a;
b:=Y[k];b1:=Y[k+1]-b;
d:=sqrt(a1^2+b1^2);
xk:=a+p*a1/d;
yk:=b+p*b1/d;
L:=L,segment(a+i*b,xk+i*yk,affichage=k);
X[k]:=xk;
Y[k]:=yk;
fpour;
ftantque;
return L;
}
:;

16.2  Avec les sommets d’isopolygônes

Des personnes A,B,C.. sont situées aux sommets A,B,C.. d’un isoploygone.
Á l’instant t, A se dirige vers B, B se dirige vers C, C se dirige vers D,...et le dernier sommet se dirige vers A.
On veut dessiner les trajectoires de A,B,C....

isopoly(n,m):={
local X,Y,L,xk,yk,p,j,k,d,a,a1,b,b1,P,SP;
p:=0.1;
L:=NULL;
P:=isopolygone(0,1,n);
SP:=op(sommets(P));
X:=evalf(abscisse(SP));
Y:=evalf(ordonnee(SP));
pour k de 0 jusque n-1 faire
L:=L,point(X[k]+i*Y[k],affichage=1+epaisseur_point_2+point_point);
fpour;
pour j de 0 jusque m-1 faire
X[n]:=X[0];
Y[n]:=Y[0];
pour k de 0 jusque n-1 faire
a:=X[k];a1:=X[k+1]-a;
b:=Y[k];b1:=Y[k+1]-b;
d:=sqrt(a1^2+b1^2);
xk:=a+p*a1/d;
yk:=b+p*b1/d;
L:=L,segment(a+i*b,xk+i*yk,affichage=k+89);
X[k]:=xk;
Y[k]:=yk;
fpour;
fpour;
return L;
}
:;

16.3  Avec les sommets de polygônes quelconques

Des personnes A,B,C... sont situées aux sommets d’un ploygone A,B,C... dont les affixes sont les éléments de la liste Z.
Á l’instant t, A se dirige vers B, B se dirige vers C, C se dirige vers D,...et le dernier sommet se dirige vers A.
On veut dessiner les trajectoires de A,B,C....

poly(Z):={
local X,Y,L,xk,yk,p,j,k,d,a,a1,b,b1,n,m;
p:=0.1;
L:=NULL;
m:=100;
n:=size(Z);
X:=re(Z);
Y:=im(Z);
pour k de 0 jusque n-1 faire
L:=L,point(X[k]+i*Y[k],affichage=1+epaisseur_point_2+point_point);
fpour;
pour j de 0 jusque m-1 faire
X[n]:=X[0];
Y[n]:=Y[0];
pour k de 0 jusque n-1 faire
a:=X[k];a1:=X[k+1]-a;
b:=Y[k];b1:=Y[k+1]-b;
d:=sqrt(a1^2+b1^2);
xk:=a+p*a1/d;
yk:=b+p*b1/d;
L:=L,segment(a+i*b,xk+i*yk,affichage=k+89);
X[k]:=xk;
Y[k]:=yk;
fpour;
fpour;
return L;
}
:;

16.4  Avec des points aléatoires

Des souris A,B,C... sont situées aux points A,B,C... dont les coordonnées sont les éléments des listes X et Y définies aléatoirement entre -1 et 1.
Á l’instant t, A se dirige vers B, B se dirige vers C, C se dirige vers D,...et le dernier sommet se dirige vers A.
On veut dessiner les trajectoires de A,B,C....

courbot0():={
local X,Y,L,xk,yk,p,m,n,j,k,d,a,a1,b,b1;
DispG;
ClrGraph();
p:=0.1;
m:=10;
n:=50;
X:=NULL;
Y:=NULL;
L:=NULL;
pour k de 0 jusque n-1 faire
xk:=2*alea(0,1)-1;
yk:=2*alea(0,1)-1;
X:=X,xk;
Y:=Y,yk;
L:=L,point(xk,yk,affichage=1+epaisseur_point_2+point_point);
fpour;
Pause 1;
pour j de 0 jusque m-1 faire
X[n]:=X[0];
Y[n]:=Y[0];
pour k de 0 jusque n-1 faire
a:=X[k];a1:=X[k+1]-a;
b:=Y[k];b1:=Y[k+1]-b;
d:=sqrt(a1^2+b1^2);
xk:=a+p*a1/d;
yk:=b+p*b1/d;
L:=L,segment(a+i*b,xk+i*yk,affichage=k+90);
X[k]:=xk;
Y[k]:=yk;
fpour;
Pause 1;
fpour;
return L;
}
:;
courbot():={
local xt,yt,X,Y,L,xk,yk,p,m,n,j,k,d,a,a1,b,b1;
ClrGraph();
p:=0.01;
m:=100;
n:=50;
X:=NULL;
Y:=NULL;
L:=NULL;
pour k de 0 jusque n-1 faire
xk:=2*alea(0,1)-1;
yk:=2*alea(0,1)-1;
X:=X,xk;
Y:=Y,yk;
L:=L,point(xk,yk,affichage=1+epaisseur_point_2+point_point);
fpour;
pour j de 0 jusque m-1 faire
X[n]:=X[0];
Y[n]:=Y[0];
pour k de 0 jusque n-1 faire
a:=X[k];a1:=X[k+1]-a;
b:=Y[k];b1:=Y[k+1]-b;
d:=sqrt(a1^2+b1^2);
xt:=a+p*a1/d ;
yt:=b+p*b1/d;
L:=L,segment(a+i*b,xt+i*yt,affichage=k+90);
X[k]:=xt;
Y[k]:=yt;
fpour;
fpour;
return L;
}:;

Previous Up Next