fractal suivant | fractal précédent | courbes 2D | courbes 3D | surfaces | fractals | polyèdres |
FOUGÈRE DE BARNSLEY
Barnsley's fern, Barnsley-Farn
Fractal étudié par Barnsley en 1988.
Michael Barnsley (1946 - ) : mathématicien britannique. |
Code Maple pour obtenir la fougère ci-dessous par itérations successives des trois contractions et un "tronc" aléatoire. | alea:=x->evalf(rand()/1e12)/40+evalf(rand()/1e12)*I:
calcul:=proc(fougere,n) local resultat,tronc,feuille1,feuille2,feuille2b,feuille2c,feuille3,i: global a1,a2,a3,b1,b2,b3: resultat:=convert(fougere,set): for i to n do feuille1:=map(x->-a1*conjugate(x)+b1,resultat): feuille2:=map(x->a2*x+b2,resultat):feuille2b:=map(x->a2*x+b2,feuille2):feuille2c:=map(x->a2*x+b2,feuille2b): feuille3:=map(x->a3*x+b3,resultat): tronc:= {seq(alea(),i=1..iquo(nops(resultat),2*n))}: resultat:= tronc union feuille1 union feuille2 union feuille2b union feuille2c union feuille3 od: end: Digits:=4:r1:=0.25: r2:=0.85: r3:=r1:theta1:=evalf(Pi*0.4): theta2:=0.05: theta3:=-theta1: a1:=evalf(r1*exp(I*theta1)):b1:=evalf(I):a2:=evalf(r2*exp(I*theta2)):b2:=b1:a3:=evalf(r3*exp(I*theta3)):b3:=b1: fougere:=calcul([0,I],6):fougere:=seq(map(x->[Re(x),Im(x)],fougere[i]),i=1..nops(fougere)): PLOT(POINTS(fougere,COLOUR(RGB,0,0.8,0),SYMBOL(POINT)),SCALING(CONSTRAINED),AXESSTYLE(NONE)); |
Le génie de Barnsley a été de considérer
la fougère comme un arbre fractal
à 3 branches :
![]() |
Ici, nous avons pris deux similitudes directes de rapports 0.25 et
d'angles 2 p/5 pour les deux branches de gauche
et droite, et une similitude directe d'angle 0.05 et de rapport 0.85 pour
la branche centrale légèrement incurvée.
On remarque que toutes les "feuilles" sont incurvées à gauche. Pour que les feuilles de gauche soient incurvées à droite, il suffit de composer la première similitude directe avec la symétrie adéquate. Ce qui donne, en choisissant A(0,0) et B(0,1) pour les
extrémités du "tronc", les similitudes de matrice complète
: |
Contrairement aux arbres, l'obtention d'une fougère réaliste nécessiterait de pousser jusqu'à une trentaine d'itérations, ce qui est impossible avec des moyens normaux (330 = 2. 1014 segments...).
Le feuillage de la fougère (c'est-à dire l'attracteur des 3 contractions ci-dessus) s'obtient facilement par itération de ces 3 contractions) :
![]() Exemple avec e = 0,01 |
![]() Exemple avec e = 0,1 : l'imposture tronc = fougère est dévoilée ! |
![]() Voici les 4 parties de la fougère semblables au tout. |
On peut aussi prendre comme 4ème "contraction"
une fonction qui donne un point choisi au hasard dans le segment [AB],
ou mieux, dans un rectangle de médiane ce segment, pour obtenir
une épaisseur. A ce moment, c'est le théorème du point
fixe qui est en défaut, car ce n'est plus une contraction a proprement
parler ; mais en pratique cela fonctionne très bien (c'est ce qui
a été utilisé dans le programme donné en en-tête)
:
![]() |
![]() |
![]() |
Ci-contre (et en image d'entrée) la fougère officielle
de Barnsley ; les trois contractions ont pour matrices complètes
:
|
Voir aussi :
http://www.math.utah.edu/~bowman/schmitt/ColFern.html
http://perceptible.chez.com/tqifs.html#deux
![]() Fougères fractales en 3d |
![]() Et voilà une vraie ! |
fractal suivant | fractal précédent | courbes 2D | courbes 3D | surfaces | fractals | polyèdres |
© Robert FERRÉOL 2019