La forme générale est une sorte de triangle, dont chaque coté est généré par
des appels récursifs.
Vous ne devez dessiner qu'un coté de ce triangle dans la fonction
snowSide
.
Pour simplifier les choses, chaque coté a une couleur
particulière. Contentez vous de dessiner les choses en rouge (sans changer
votre couleur), et les autres couleurs seront dessinées automatiquement.
Observez l'objectif de chaque monde pour comprendre la logique du motif à dessiner, puis reproduisez-le. Au niveau 0, la courbe de Koch est une simple ligne droite. Au niveau 1, elle est divisée en trois tiers, et la partie du milieu est remplacée par deux cotés d'un triangle équilatéral de même longueur que le segment supprimé. Au niveau 2, le processus est répété avec le tiers central de chaque segment remplacé par un petit triangle équilatéral.
Le pseudo-code du cas général est le suivant :
Dessiner récursivement un segment plus petit Tourner à 60 degrés vers la gauche Dessiner récursivement un segment plus petit Tourner à 120 degrés vers la droite Dessiner récursivement un segment plus petit Tourner à 60 degrés vers la gauche Dessiner récursivement un segment plus petit
Comme vous pouvez le constater, la fonction avance() n'est pas appelée dans le cas récursif, mais seulement dans le cas de base, quand il n'y a plus d'appel récursif.
Voici le résultat des premiers niveaux de récursion.
Vous devez écrire la fonction snowSide, qui est récursive. Mais n'appelez pas snowFlake depuis snowSide, car sinon le résultat sera vraiment étrange et inattendu.