Système de fonctions  itérées

(* Exemples de transformations affines *)
(* 1/Sqrt[2] RotationMatrix[Pi/4].{x,y}, *)
(* 1/Sqrt[2] RotationMatrix[5Pi/4].{x,y} + {1,0} *)
(* {x/3,y/3} + {2/3,0} *)

(*dressons d'abord une liste des transformation T_i dont nous avons besoin*)
systeme[{x_,y_}]:={
{x/3,y/3},
Sqrt[2]/6RotationMatrix[Pi/4].{x,y} + {1/3,0},
Sqrt[2]/6RotationMatrix[-Pi/4].{x,y} + {1/2,1/6},
{x/3,y/3} + {2/3,0}
}

(*nous appliquons le système de transformations linéaires à une liste de points*)
appliquerLeSystemeSur[listeDePoints_]:=Flatten[Map[systeme,listeDePoints],1] 
(*le Flatten assure que la liste qui sort est de la bonne dimension*)

(*donnons un point de départ*)
pointsDeDepart= {{0,0}};

(*Nous appliquons le système de fonctions ittérées n fois sur l'ensemble de points de départ*)
Clear[c]
c[0]=pointsDeDepart;
c[n_]:=c[n]=appliquerLeSystemeSur[c[n-1]]

(*Nous affichons sur un graphique le résultat de c[n]. Ici, nous permettons à l'utilisateur ou l'utilisatrice de manipuler la valeur de n*)
Manipulate[Graphics[{PointSize[.01],Point[c[n]]}],{n,0,9,1}]