Je ne vais pas disserter sur ce sujet, google fait ça très bien : exemple. En plus, les graphiques parlent d'eux-mêmes.
J'ai trouvé que c'était un excellent exercice pour tester le tout nouveau programme de conversion de marcus et en même temps les possibilités de programmation et d'affichage de la FX-8000g.
Le code est assez court quoiqu'il m'ait demandé quelques heures de recherche, en particulier la formule de récurrence.
Il permet de générer 4 niveaux de fractales, le cinquième niveau est incompatible avec la définition de l'écran (et avec l'heure tardive).
Les variables :
-P : niveau ou profondeur
-N : segment courant à dessiner
-D longueur de la base du triangle initial
-(X,Y) : coordonnées su sommet du segment courant
-A : angle du segment courant par rapport à l'horizontale.
-S : signe de la rotation du segment courant par rapport au segment précédent (-2 ou +1)
Dans le calcul de Y, (1.5) est le rapport de taille de l'écran (largeur / hauteur), indispensable pour ne pas déformer la figure.
Principe : tous les segments ont la même longueur, je travaille sur l'angle du segment courant avec l'horizontale. Avec cet angle et la longueur, j'utilise COS et SIN pour tracer le segment. La difficulté de l'exercice consiste donc uniquement à comprendre comment varie cet angle.
Code : Tout sélectionner
Version 1 (4 niveaux):
Cls:Range 0,1,0,0,1,0:Deg:30->A
?->P:5->N
0.55->D
0.15->X:0.50->Y
Plot X,Y
Lbl 0
(-)2->S
P>=1=>Frac(N/2)<>0=>1->S
P>=2=>Frac(N/8)=0=>1->S
P>=3=>Frac((N+12)/32)=0=>1->S
N+1->N
X+Dcos(A)/(3^P)->X
Y+1.5*Dsin(A)/(3^P)->Y
A+60S->A
Plot X,Y:Line
N<3*4^P+5=>Goto 0
191 octets
Version 3 multi-niveaux
Cls:Range 0,1,0,0,1,0:Deg:30->A
?->P:3*4^P->N
0.65/(3^P)->D
0.15->X:0.50->Y
Plot X,Y
Lbl 0
(-)2->S
P->I:Lbl 1
(4^I)/2->J
Frac((N-1+j/2)/j)=0=>1->S
DSZ I:Goto 1
X+Dcos(A)->X
Y+1.5Dsin(A)->Y
A+60S->A
Plot X,Y:Line
Dsz N:Goto 0
160 octets
Et voici le résultat :
Niveau 1 (P=0 - 3 segments)

Niveau 2 (P=1 - 12 segments)

Niveau 3 (P=2 - 48 segments)

Niveau 4 (P=3 - 192 segments)

La conversion au Basic est assez simple.
Attention, le programme ne fonctionne pas au niveau suivant sans trouver le test [P>=4].
Bonnes fractales !









