Français   Fractales.
La courbe classique du dragon fut découverte par le physicien John E. Heighway. Vous pouvez reproduire la courbe en pliant une longue bande de papier en deux plusieurs fois, puis en dépliant alors tous les plis à 90 degrés. Elle ressemble légèrement à un dragon, d'où son nom.

N plis détermine une courbe de dragon d'ordre N, avec 2^N segments. Par conséquent la complexité de cette courbe augmente exponentiellement. Une courbe de dragon ne se recoupe jamais, c'est une courbe qui remplit l'espace.

Fractale produite récursivement

La tortue dessine la courbe d'une extrémité à l'autre en tournant à droite ou à gauche selon les besoins. Elle appelle la procédure dragon recursivement, avec une parité positive (+1) ou négative (de -1). Ceci détermine si la courbe dévie vers la gauche ou la droite de :Angle degrés.

Une courbe de dragon d'ordre 0 est une ligne droite.
La limite pour cette courbe est autour de l'ordre 13 (8192 segments), quand les lignes deviennent trop petites (taille 2).

# Commande principale: demarrer 7
pour new
# set defaults, screen, pen et tortue
init ftd [400 400] fqd 1
fcfg noir fcc vert levecrayon cachetortue
fin

pour initialise :order
# donne size et angle global values
donne "size 11*puissance (rac 2) (9-:order)
donne "angle 90
fin

pour display :order
# tape header title et curve level
fcc blanc
fpos [-190 184] etiquette phrase [dragon curve level] :order
fin

pour dragon :order :parity
si :order < 1 [avance :size stop] # ie si = 0
dragon :order-1 1
tournegauche :parity*:angle # turn tournegauche ou tournedroite :angle degrees
dragon :order-1 moins 1
fin

pour demarrer :order
new
initialise :order display :order
fpos [-108 0] fcc vert baissecrayon
tournedroite (45 *:order)+90 # similar orientations of curves
dragon :order 1
fin

pour gox
new animation
repetepour [order 0 11] [nettoie # comment out nettoie repetepour overlaid curves
initialise :order display :order
fpos [-108 0]
fcc 1 + reste :order 2 baissecrayon # rouge ou vert
tournedroite (45 *:order)+90 # similar orientations of curves
dragon :order 1
rf attends 80 levecrayon origine]
fin



Pour une animation des courbes de dragon d'ordre 0 à 11:

pour gox
new animation vrai
repetepour [order 0 11] [nettoie # comment out nettoie repetepour overlaid curves
initialise :order display :order
fpos [-108 0]
fcc 1 + reste :order 2 baissecrayon # rouge ou vert
tournedroite (45 *:order)+90 # similar orientations of curves
dragon :order 1
rf attends 80 levecrayon origine]
fin


A présent on imbrique quatre courbes du dragon à l'aide du mode multitortue:

pour demarrer4 :order
new initialise :order display :order
repetepour [turt 1 4] [
fixetortue :turt fcc :turt baissecrayon
tournedroite (:turt*90) + (45 *:order)+45
dragon :order 1 attends 40]
fin

pour initialise :order
# donne size et angle global values
donne "size 9*puissance (rac 2) (9-:order)
donne "angle 90
fin


Tester le programme maintenant

Procédure à exécuter:
demarrer 7