Vous êtes sur la page 1sur 6

Informatique / Introduction aux fractales (French) 1 de 6

INTRODUCTION AUX FRACTALES

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.

Pour dessiner un dragon du point A au point B, il faut dessiner un dragon du


point C au point A et un dragon du point C au point B, C tant tel que le triangle
ABC est isocle rectangle en C et que C se trouve gauche du vecteur AB.

Tentons de dessiner un dragon partir de cette rcursivit. On choisit deux points A et B.

Tracer un dragon de A B revient tracer un dragon de C A et un autre de C B.


Informatique / Introduction aux fractales (French) 2 de 6

Tracer un dragon de C A revient tracer un dragon de D C et un autre de D A. De


mme, tracer un dragon de C B revient tracer un dragon de E C et un autre de E B.

Tracer un dragon de D C revient tracer un dragon de G D et un autre de G C. De


mme, tracer un dragon de D A revient ... On pourrait continuer indfiniment la
rcursivit. La premire chose faire quand on dessine une fractale est de fixer une
profondeur de rcursivit, c'est--dire le nombre de fois que l'on applique la rcursivit. Ici,
on va s'arrter trois, ce qui correspond au moment o il faut tracer les dragons suivants: F
A, F D, G D, G C, H C, H E, I E, I B. Et au lieu de continuer appliquer la
rcursivit, on dcide qu'un dragon se dessine simplement par une ligne et on obtient la
fractale de profondeur 3 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.

xc xa + (xb - xa) / 2 - (yb - ya) / 2


C A + AB / 2 + AB' / 2
yc ya + (yb - ya) / 2 + (xb - xa) / 2

Voici la fractale dragon profondeur 14.

LA FRACTALE "VAGUE"

Le principe de construction de cette fractale est identique celui de la fractale dragon. On


considre le motif suivant.

Le point M est le milieu du segment [AB], ses coordonnes (xm;ym) s'expriment:

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

se trouve droite et D se trouve gauche de AB. Les coordonnes de C et D se calculent en


utilisant la formule tablie pour calculer le point C de la fractale dragon.

La fonction qui permet de tracer la fractale vague de A B une profondeur p s'crit:

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;

Voici la fractale vague profondeur 10.

LA FRACTALE "FLOCON DE NEIGE"

La construction de cette fractale repose sur le motif suivant.

C de coordonnes (xc;yc) se trouve sur la droite (AB) un tiers de la distance ||AB|| de A. De


mme, D de coordonnes (xd;yd) se trouve sur la droite (AB) un tiers de la distance ||AB||
de B. Leurs coordonnes se calculent donc:

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

E est tel que CED forme un triangle quilatral.


Informatique / Introduction aux fractales (French) 5 de 6

Si on considre le vecteur CD' comme tant perpendiculaire CD et de mme longueur, on


peut alors calculer les coordonnes (xe;ye) de E de la manire suivante.

E C + CD cos(60) xe xc + (xd - xc) / 2 - (yd - yc) 3 / 2


+ CD' sin(60) ye yc + (yd - yc) / 2 + (xd - xc) 3 / 2

La fonction qui permet de tracer la fractale de A B une profondeur p s'crit:

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.

Puis on trace des fractales de X Y, de Y Z et de Z X avec la mme profondeur.

tracerFlocon(X,Y,p);
tracerFlocon(Y,Z,p);
tracerFlocon(Z,X,p);

Voici la fractale flocon de neige profondeur 5.


Informatique / Introduction aux fractales (French) 6 de 6

Copyright (c) 1999-2001 - Bruno Bachelet - bachelet@ifrance.com - http://bruno.bachelet.net

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).

Vous aimerez peut-être aussi