next up previous contents index
suivant: Le tapis carré monter: Récursivité ayant plusieurs appels précédent: Les polygones réguliers   Table des matières   Index

Le flocon

Ces programmes se trouvent dans examples/recur/flocon.cxx.
Tous les programmes qui sont dans cette section se trouve dans le fichier :
flocon.cas On considère un segment AB et on place las points PQR tels que :
3*$ \overrightarrow{AP}$ = $ \overrightarrow {AB}$
3*$ \overrightarrow{BQ}$ = $ \overrightarrow {BA}$
et le triangle PQR est équilatèral direct.
On remplace alors le tracé du segment AB par le tracé APRQB.
On continue en faisant subir le même traitement aux 4 segments AP,PR,RQ,QB...on s'arrête quand la longueur des segments devient trop petite ou quand la profondeur est nulle.
Il y a donc 4 appels récursifs.
 
flocon(A,B):={
DispG();
if (longueur2(A,B)<0.01) {segment(A,B);return 0;}
flocon(A,A+(B-A)/3);
flocon(A+(B-A)/3,A+(B-A)/3*(1+exp(i*pi/3)));
flocon(A+(B-A)/3*(1+exp(i*pi/3)),A+2*(B-A)/3);
flocon(A+2*(B-A)/3,B);
};
On tape par exemple :
flocon(-1.0,1.0)

ou avec la profondeur :

 
floconp(A,B,n):={
local h;
DispG();
if (n==0) {segment(A,B);return 0;}
h:=(B-A)/3;
floconp(A,A+h,n-1);
floconp(A+h,A+h*(1+exp(i*pi/3)),n-1);
floconp(A+h*(1+exp(i*pi/3)),A+2*h,n-1);
floconp(A+2*h,B,n-1);
};
On tape par exemple :
floconp(-2.0,2.0,4)
Généralisation
On coupe le segment initial AB en trois en placant P et Q de façon à avoir :
$ \overrightarrow{AP}$ = a*$ \overrightarrow {AB}$
$ \overrightarrow{BQ}$ = a*$ \overrightarrow {BA}$
avec 0.25 < a < 0.5. puis on construit un triangle isocéle PQR tel que PR = QR = AP . On remplace le segment AB par les segments APRQB et on recommence le processus. Il y a donc 4 appels récursifs.
 
flocong(A,B,a,n):={
local h,t;
DispG();
if (n==0) {segment(A,B);return 0;}
t:=acos((0.5-a)/a);
h:=(B-A)*a;
flocong(A,A+h,a,n-1);
flocong(A+h,A+h*(1+exp(i*t)),a,n-1);
flocong(A+h*(1+exp(i*t)),B-h,a,n-1);
flocong(B-h,B,a,n-1);
};
On tape par exemple :
flocong(-2.0,2.0,0.4,4)
next up previous contents index
suivant: Le tapis carré monter: Récursivité ayant plusieurs appels précédent: Les polygones réguliers   Table des matières   Index
Documentation de giac écrite par Renée De Graeve