Académique Documents
Professionnel Documents
Culture Documents
INTRODUCTION
Ce document est une introduction aux fractales. Il montre comment, avec le simple concept
de récursivité, des figures complexes peuvent être dessinées très facilement. La construction
de trois figures est détaillée ici: le "dragon", le "flocon de neige" et la "vague". Elle est
illustrée par l'applet Fractal écrite en Java, pour laquelle le code source est disponible.
LA FRACTALE "DRAGON"
La construction des fractales est basée sur une idée de récursivité. Si on regarde une fractale à
des échelles différentes, on retrouve le même motif. C'est ce motif qui est la base de la
fractale. En effet, pour construire une fractale, on considère une forme très simple. Dans le
cas du dragon, il s'agit du motif suivant.
ABC forme un triangle isocèle rectangle en C, C se trouvant à gauche du vecteur AB. Pour
dessiner le dragon, on se base sur la récursivité suivante.
Les fractales telles qu'on les connait ont simplement été dessinées avec une profondeur plus
importante. Dessiner une fractale peut paraître compliqué quand la profondeur est
importante, mais en fait, c'est très 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 déterminer maintenant les coordonnées (xc;yc) du point C. Rappelons que ABC
est un triangle isocèle rectangle en C.
D'après la figure, le triangle AC'C est également isocèle rectangle en C'. Si on considère le
vecteur AB' comme étant perpendiculaire à AB et de même longueur, on peut alors calculer
C de la manière suivante.
LA FRACTALE "VAGUE"
xm (xa + xb) / 2
M (A + B) / 2
ym (ya + yb) / 2
Le triangle AMC est isocèle rectangle en C et le triangle MDB est isocèle 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 traçage de la fractale. Pour cela, on
choisit trois points X, Y et Z qui forment un triangle équilatéral.
tracerFlocon(X,Y,p);
tracerFlocon(Y,Z,p);
tracerFlocon(Z,X,p);
La permission est accordée de copier, distribuer et/ou modifier ce document sous les termes de la licence GNU Free Documentation License,
Version 1.1 ou toute version ultérieure publiée par la fondation Free Software Foundation. Voir cette licence pour plus de détails
(http://www.gnu.org).