next up previous contents index
suivant: Les arbres monter: Pour s'amuser avec des précédent: Les fleurs   Table des matières   Index

La fougère

Pour obtenir cette fougère, on va itérer un système de fonctions avec poids aléatoires. On considère : A:=[[0,0,0.5],[0,0.16,0],[0,0,1]] de poids 0.01,
B:=[[0.2,-0.26,0.4],[0.23,0.22,0.005],[0,0,1]] de poids 0.07,
C:=[[-0.15,0.28,0.57],[0.26,0.24,-0.12],[0,0,1]] de poids 0.07,
D:=[[0.85,0.04,0.08],[-0.04,0.85,0.18],[0,0,1]] de poids 0.85,
On définit F:=A,B,C,D et on itère en partant du vecteur w0:=[0,5,1]. Pour définir w1, on applique à w0, soit A, soit B, soit C ou D de façon aléatoire selon leur poids et on définit w2 etc...On dessine les points définit par les 2 premières coordonnées des w, mais, pour la beauté du dessin, on ne dessine pas les n1 premiers points. Donc dans fougere on a n1 points invisibles et n2 itérations .
On tape :
choisirk():={
local r,p,k;
p:=[0.01,0.07,0.07,0.85];
r:=rand(0,1);
k:=0;
tantque r>p[k] faire 
  r:=r-p[k];
  k:=k+1;
ftantque;
return k;
}:;
fougere(n1,n2):={
local A,B,C,D,F,j,k,w,P;
A:=[[0,0,0.5],[0,0.16,0],[0,0,1]];
B:=[[0.2,-0.26,0.4],[0.23,0.22,0.005],[0,0,1]];
C:=[[-0.15,0.28,0.57],[0.26,0.24,-0.12],[0,0,1]];
D:=[[0.85,0.04,0.08],[-0.04,0.85,0.18],[0,0,1]];
F:=A,B,C,D;
w:=[0,5,1];
P:=NULL;
pour j de 1 jusque n1 faire
  w:=F[choisirk()]*w;
fpour;
pour j de n1+1 jusque n2 faire
  w:=F[choisirk()]*w;
  P:=P,point(w[0],w[1]);
fpour;
return P;
}:;
On tape : fougere(10,3000)
On obtient :

Image fougere



Documentation de giac écrite par Renée De Graeve