AlgoBox : Courbe de Von Koch (méthode itérative)

Présentation de l'algorithme :

Courbe fractale de Von Koch :
En partant d'un segment de droite initial :

  • on divise le segment de droite en trois segments de longueurs égales,
  • on construit un triangle équilatéral ayant pour base le segment médian de la première étape,
  • selon le nombre d'itérations demandé (entre 1 et 8), on réitère ce processus pour chaque segment de droite de la figure.

Fichier AlgoBox associé : vonkoch.alg (faire un clic-droit et utiliser l'option "enregistrer sous" pour télécharger le fichier)


Tester l'algorithme
Cliquer sur ce bouton pour exécuter l'algorithme : 

Résultats

Code de l'algorithme
1   VARIABLES
2     n EST_DU_TYPE NOMBRE
3     i EST_DU_TYPE NOMBRE
4     j EST_DU_TYPE NOMBRE
5     k EST_DU_TYPE NOMBRE
6     a EST_DU_TYPE NOMBRE
7     x EST_DU_TYPE LISTE
8     y EST_DU_TYPE LISTE
9     max EST_DU_TYPE NOMBRE
10  DEBUT_ALGORITHME
11    AFFICHER "Nombre d'itérations="
12    LIRE n
13    AFFICHER n
14    SI (n>=1 ET n<=8) ALORS
15      DEBUT_SI
16      max PREND_LA_VALEUR pow(4,n)
17      POUR i ALLANT_DE 0 A max
18        DEBUT_POUR
19        x[i] PREND_LA_VALEUR 0
20        y[i] PREND_LA_VALEUR 0
21        FIN_POUR
22      x[max] PREND_LA_VALEUR 450
23      POUR i ALLANT_DE 1 A n
24        DEBUT_POUR
25        k PREND_LA_VALEUR pow(4,n-i)
26        POUR j ALLANT_DE 0 A pow(4,i-1)-1
27          DEBUT_POUR
28          a PREND_LA_VALEUR 4*j*k
29          x[a+k] PREND_LA_VALEUR (2*x[a]+x[a+4*k])/3
30          y[a+k] PREND_LA_VALEUR (2*y[a]+y[a+4*k])/3
31          x[a+3*k] PREND_LA_VALEUR (x[a]+2*x[a+4*k])/3
32          y[a+3*k] PREND_LA_VALEUR (y[a]+2*y[a+4*k])/3
33          x[a+2*k] PREND_LA_VALEUR (x[a+k]+x[a+3*k]+sqrt(3)*(y[a+k]-y[a+3*k]))/2
34          y[a+2*k] PREND_LA_VALEUR (y[a+k]+y[a+3*k]+sqrt(3)*(x[a+3*k]-x[a+k]))/2
35          FIN_POUR
36        FIN_POUR
37      POUR i ALLANT_DE 0 A max-1
38        DEBUT_POUR
39        TRACER_SEGMENT (x[i],y[i])->(x[i+1],y[i+1])
40        FIN_POUR
41      FIN_SI
42  FIN_ALGORITHME