suivant: Le tapis carré
monter: Récursivité ayant plusieurs appels
précédent: Les polygones réguliers
Table des matières
Index
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*
=
3*
=
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 :
= a*
= a*
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)
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