Vous avez peut-être déjà entendu parler des figures fractales : ce sont des structures ayant la particularité de présenter certaines auto-similarités à toutes les échelles.
Ces figures intéressent à la fois mathématiciens et informaticiens. Aussi, par exemple, vous pouvez trouver sur le SdZ un tutoriel pour expliquer comment créer une des fractales les plus célèbres : l'ensemble de Mandelbrot, ainsi qu'un autre tutoriel abordant certains aspects mathématiques des fractales.
Il existe tout un tas de types de fractales, et aussi (évidement ;) ) divers de moyens d'en générer. Si vous êtes curieux, vous pouvez aller faire un tour sur cette page Wikipédia, où sont recensés un bon nombre de fractales, ou encore lire ce dossier sur la question ici.
La courbe du dragon est une très jolie image fractale, que l'on peut obtenir notamment de deux façons :
- En utilisant une grammaire de construction, appelée L-System.
- En utilisant un système de fonctions itérées, communément appelé IFS.
Ces deux méthodes sont extrêmement riches, et permettent de réaliser de très nombreuses images fractales. Pensez à vous documenter convenablement dessus. Aussi, n'hésitez pas si vous le sentez à rendre votre code un peu plus générique pour tracer d'autres images.
Liens vers un document pour appréhender les IFS ( #1, #2, #3 ).
Votre mission, si vous l'acceptez, sera d'écrire un programme graphique permettant de tracer la courbe du dragon. N’hésitez pas à innover et sortir des sentiers battus, si vous le désirez.
Vous devez maitriser un minimum la programmation graphique, et disposer de deux primitives : tracé de point et/ou tracé de ligne.
- Comprendre une documentation.
- Maitriser la récursivité.
- Créer un programme graphique.
Créer un programme permettant de tracer et visualiser la courbe du dragon à partir de ce L-System :
- angle 90°
- graine
FX
- règles :
X -> X+YF+
Y -> −FX−Y
Ce qui se traduit simplement comme suit: Partir d'un segment de base; puis en suivant la courbe, remplacer chaque segment par deux segments à angle droit en effectuant une rotation de 45° alternativement à droite puis à gauche (source: Wikipédia).
Créer un programme permettant de tracer et visualiser la courbe du dragon à partir de l'ensemble limite de l'IFS suivant (sur le plan complexe) :
$f_1(z) = \frac{(1+i)z}{2}$ $f_2(z) = 1 - \frac{(1-i)z}{2}$
Si vous ne connaissez pas les nombres complexes, vous pouvez remplacer ces deux fonctions par ces expressions analytiques (sur un repère orthonormé) :
- $\left{\begin{matrix}x' = \frac{x-y}{2}\y' = \frac{x+y}{2}\end{matrix}\right.$
- $\left{\begin{matrix}x' = 1 - \frac{x+y}{2}\y' = 1 - \frac{x-y}{2}\end{matrix}\right.$