Le flocon de Koch, un fractal de la nature?

Bonjour à tous,

Hier, je diffusais un article sur la création de fractals au moyen de l’itération.
Aujourd’hui je vous propose d’attaquer un autre système de création de fractal: la récursivité.

Pour illustrer ce principe, j’ai choisi un fractal que l’on peut (presque) retrouver dans la nature: le flocon de Koch. En effet, sa forme de flocon nous fait inévitablement penser à un flocon de neige.

Le principe de récursivité est simple: j’ai un objet -dans ce cas-ci un segment-, je le modifie de telle sorte qu’à la sortie j’obtienne un ou plusieurs objets similaires -ici un segment de longueur n donnera naissance à quatre segments de longueur n/3- et puis j’applique la même modification sur les objets de sortie.
Vous l’aurez compris, nous entrons alors dans une boucle qui m’amènera loin avec un code pourtant léger. Il suffit juste de ne pas oublier d’inclure une condition pour sortir de cette boucle à un moment donné.
Dans mon exemple, la condition est que le segment fourni ait une longueur de plus de 1 pixel.

Sans plus attendre voici le flocon promis!

Et voici également le code PHP qui permet, par l’intermédiaire de variables GET (width & height) de choisir la taille de l’image générée.

  1. span class= »st0″>’width’‘width’‘height’‘height’//Coupe le segment AB en une ligne brisée ACDEB
  2.     $dx = $xb$xa; //différence des abscisses
  3.     $dy = $yb$ya; //différence des ordonnées
  4. //Longueur de AB
  5. //On brise le segment AC            
  6.         koch($image, $xc, $yc, $xd, $yd); //On brise le segment CD            
  7.         koch($image, $xd, $yd, $xe, $ye); //On brise le segment DE        
  8.         koch($image, $xe, $ye, $xb, $yb); //On brise le segment EB        
  9. "Content-type: image/png"

Tags: , , , , ,