Académique Documents
Professionnel Documents
Culture Documents
INTRODUCTION
Ce document est une introduction aux fractales. Il montre comment, avec le simple concept
de rcursivit, des figures complexes peuvent tre dessines trs facilement. La construction
de trois figures est dtaille ici: le "dragon", le "flocon de neige" et la "vague". Elle est
illustre par l'applet Fractal crite en Java, pour laquelle le code source est disponible.
LA FRACTALE "DRAGON"
La construction des fractales est base sur une ide de rcursivit. Si on regarde une fractale
des chelles diffrentes, on retrouve le mme motif. C'est ce motif qui est la base de la
fractale. En effet, pour construire une fractale, on considre une forme trs simple. Dans le
cas du dragon, il s'agit du motif suivant.
ABC forme un triangle isocle rectangle en C, C se trouvant gauche du vecteur AB. Pour
dessiner le dragon, on se base sur la rcursivit suivante.
Les fractales telles qu'on les connait ont simplement t dessines avec une profondeur plus
importante. Dessiner une fractale peut paratre compliqu quand la profondeur est
importante, mais en fait, c'est trs simple programmer. En effet, voici la fonction qui
permet de tracer la fractale dragon du point A au point B avec une profondeur p.
fonction tracerDragon(A,B,p):
si (p = 0) alors
tracerLigne(A,B);
sinon
C /* Calcul de C */;
tracerDragon(C,A,p - 1);
tracerDragon(C,B,p - 1);
fin si;
fin fonction;
Informatique / Introduction aux fractales (French) 3 de 6
Il faut juste dterminer maintenant les coordonnes (xc;yc) du point C. Rappelons que ABC
est un triangle isocle rectangle en C.
D'aprs la figure, le triangle AC'C est galement isocle rectangle en C'. Si on considre le
vecteur AB' comme tant perpendiculaire AB et de mme longueur, on peut alors calculer
C de la manire suivante.
LA FRACTALE "VAGUE"
xm (xa + xb) / 2
M (A + B) / 2
ym (ya + yb) / 2
Le triangle AMC est isocle rectangle en C et le triangle MDB est isocle rectangle en D. C
Informatique / Introduction aux fractales (French) 4 de 6
fonction tracerVague(A,B,p):
si (p = 0) alors
tracerLigne(A,B);
sinon
C /* Calcul de C */;
D /* Calcul de D */;
tracerVague(A,C,p - 1);
tracerVague(C,D,p - 1);
tracerVague(D,B,p - 1);
fin si;
fin fonction;
xc xa + (xb - xa) / 3
C A + AB / 3 yc ya + (yb - ya) / 3
D B - AB / 3 xd xb - (xb - xa) / 3
yd yb - (yb - ya) / 3
fonction tracerFlocon(A,B,p):
si (p = 0) alors
tracerLigne(A,B);
sinon
C /* Calcul de C */;
D /* Calcul de D */;
E /* Calcul de E */;
tracerFlocon(A,C,p - 1);
tracerFlocon(C,D,p - 1);
tracerFlocon(D,E,p - 1);
tracerFlocon(E,B,p - 1);
fin si;
fin fonction;
Pour tracer le flocon en entier, il faut lancer trois fois le traage de la fractale. Pour cela, on
choisit trois points X, Y et Z qui forment un triangle quilatral.
tracerFlocon(X,Y,p);
tracerFlocon(Y,Z,p);
tracerFlocon(Z,X,p);
La permission est accorde de copier, distribuer et/ou modifier ce document sous les termes de la licence GNU Free Documentation License,
Version 1.1 ou toute version ultrieure publie par la fondation Free Software Foundation. Voir cette licence pour plus de dtails
(http://www.gnu.org).