fractal suivant | fractal précédent | courbes 2D | courbes 3D | surfaces | fractals | polyèdres |
ARBRE FRACTAL
Fractal tree, Baum-Fraktal
Code maple récursif pour calculer l'arbre ci-dessus | proc_arbre:=proc(A,B,L,t,n)
local k,M; k:=nops(L): M:=evalf([seq(L[q]*exp(t[q]*I),q=1..k)]); if n>0 then [A,B],seq(proc_arbre(B,B+M[q]*(B-A),L,t,n-1),q=1..k) else [A,B] fi end: arbre:=[proc_arbre(0,I,[0.7,0.7],[Pi/9,-2*Pi/9],9)]: arbre:=map(y ->map(x ->[Re(x),Im(x)],y),arbre): |
Affichage en 2d | plot(arbre,axes=none,color=COLOR(RGB,0.55,0.2,0),scaling=constrained); |
Affichage en 3d | tube:=proc(A,B,q,n)
tubeplot([(1-t)*A[1]+t*B[1],(1-t)*A[2]+t*B[2],0],t=0..1,radius=(2-t)*0.1/(1+q),grid=[2,20],color=COLOR(RGB,(1-q/n)*.55,(1-q/n)*.2+q/n*0.7,0.05)) end: affiche3d:=proc(arbre,n) local LL,i : LL:= [seq(i,i=1..n+1 )]:for i from n+1 to 2 by (-1) do LL:=[op(LL),op(LL[i..nops(LL)])] od; display3d(seq(tube(arbre[k][1],arbre[k][2],LL[k],n),k=1..nops(arbre)),scaling=constrained,style=patchnogrid,lightmodel=light2,orientation=[-90,0]); end: affiche3d(arbre,9); © Robert FERRÉOL, Alain ESCULIER 2002 |
Un arbre est fractal en ce sens que ses branches maîtresses,
issues du tronc, sont chacune des arbres en réduction. Pour simplifier,
si le tronc est le segment [AB], nous allons considérer p
similitudes
fi
transformant le segment [AB] en des segments plus courts [CiDi],
attachés aux troncs (c'est-à dire que Ci
appartient à [AB]). Remarquons qu'il y a exactement deux
similitudes possibles pour chaque [CiDi],
l'une directe, l'autre indirecte.
Partant de K0
= [AB], on définit la suite des compacts ,
qui converge vers l'attracteur des fi
, lequel peut être considéré comme le "feuillage" de
l'arbre :
Voici la construction animée des 10 premières étapes, avec des Ci égaux à B, et deux similitudes directes de rapport 0,7 et d'angles p/9 et -2p/9.
Si l'on veut obtenir l'arbre complet comme un attracteur, il faut rajouter une p + 1ème contraction. Certains auteurs prennent une affinité de rapport assez petit de façon à ramener l'arbre au tronc. Ceux qui considèrent qu'assimiler le tronc à un arbre en réduction est une imposture peuvent aussi prendre 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. Cette fonction n'est alors plus une contraction à proprement parler, ce qui n'empêche pas l'algorithme de très bien fonctionner :
Si l'on prend des similitudes directes de rapport 1/2 et d'angles , 0 et , C1 = milieu(A,B) , C2 = B, C3 = milieu(C1,B), on obtient l'érable :
Un beau sapin est obtenu avec 4 similitudes directes de
rapports 1/2, 1/2, 1/3 et 2/3 et d'angles , ,
0 et 0, C1
= C2
= C3 =
A
, C4 =(2A
+ B)/3 :
|
Encore plus vraisemblable avec une affinité. |
Le feuillage de ce sapin, avec un angle de p/4 au lieu de p/6. |
Voici un arbre taillé en espalier (2 similitudes directes de rapport 0,7 et d'angles , , C1 = C2 = B) :
L'arbre suivant obtenu par 2 similitudes directes de rapport 1/Ö2 et d'angles , , C1 = C2 = B est encore moins naturel :
Avec deux similitudes d'assez faible rapport (1/4) et une similitude de rapport assez proche de 1 (0,85) et de faible angle, on obtient une fougère : Ici, c'est une vue de l'étape 6, mais il faudrait aller au moins jusqu'à l'étape 30 pour en obtenir tous les étages distingables, ce qui est impossible (330 = 2. 1014 segments...) ; voir la suite à l'article fougères.
L'arbre suivant, à branches d'épaisseur variable, a été dénommé "arbre de Pythagore" car il est formé de copies de la figure classique illustrant le théorème de Pythagore :
Voir aussi :
mariefrance.hellot.free.fr/Tree1.html
aesculier.fr/fichiersPovray/arbre3d/arbre3d.html
Ca, c'est un vrai !
|
Arbre de Pythagore, les carrés étants allongés en rectangles, et les barres intermédiaires supprimées. |
fractal suivant | fractal précédent | courbes 2D | courbes 3D | surfaces | fractals | polyèdres |
© Robert FERRÉOL 2016