Français   Au hasard
Ces courbes proviennent de la fonction: 360*(puissance :I 3)/:N

Essayer le code suivant (copier-coller dans la ligne de commande)
ve repetepour [I 0 141] [fixecap (360*(puissance :I 3)/141) av 16]

Vous obtenez une courbe d'ordre 141.
Pour essayer une autre courbe, changer les deux apparitions de 141 par 1013 dans le code ci-dessus. Alors, pourquoi ce programme est-il si long??
En fait, Si vous changer les deux valeurs avec des nombres différents, vous obtenez encore un nouveau type de courbes. Cependant, elles sont souvent trop petites ou trop grandes pour être affichée sur l'écran. C'est pourquoi ce programme inclus une fonction d'optimisation qui calcule la position de départ ainsi que la largeur de la courbe pour tenir dans la fenêtre graphique de 400x400.

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

pour tangle :n
donne "lengthnew 16
optimise :n :lengthnew # comment out pour skip curve optimisation
nettoie display :n :xcent :ycent :lengthnew
fixexy :xcent :ycent baissecrayon
repetepour phrase liste "i 0 :n [
fcc angcol :i :n
fixecap function :i :n avance :lengthnew]
levecrayon
fin

pour optimise :n :length
origine
donne "xmax 0 donne "xmin 0
donne "ymax 0 donne "ymin 0
repetepour phrase liste "i 0 :n [
fixecap function :i :n avance :length
si (item 1 pos) > :xmax [donne "xmax item 1 pos]
si (item 1 pos) < :xmin [donne "xmin item 1 pos]
si (item 2 pos) > :ymax [donne "ymax item 2 pos]
si (item 2 pos) < :ymin [donne "ymin item 2 pos] ]
donne "xsize :xmax + abs :xmin
donne "ysize :ymax + abs :ymin
si :xsize=:ysize | :xsize>:ysize
[donne "size :xsize] [donne "size :ysize]
donne "scale 360/:size
donne "lengthnew :length*:scale
si ((abs (:lengthnew - :length))>:length/10) [
donne "length :lengthnew optimise :n :length]
donne "xcent moins (:xmax + :xmin)/2
donne "ycent moins (:ymax + :ymin)/2
fin

pour function :i :n
retourne (360*(puissance :i 3)/:n)-90
fin

pour display :n :xcent :ycent :lengthnew
# tape header et footer info
fixecap 0 fcc blanc
fpos [-190 184] etiquette [tangle curve]
fpos [150 184] etiquette :n
fpos [-190 -190] etiquette liste arrondi :xcent arrondi :ycent
fpos [150 -190] etiquette arrondi :lengthnew
fin

pour angcol :i :n
donne "green arrondi 255*(sin 180*:i/:n)
retourne phrase liste 255 :green 0
fin

pour demarrer
# draw hasard tangle curves
new tantque [vrai] [tangle hasard 2048 attends 88]
fin



Ajouter la procédure GoC pour obtenir les courbes d'ordre 1 à 2048.
Ajouter la procédure GoC pour obtenir une courbes d'ordre fixé.
pour GoC
# draw tangle curves of order 1 to 2048
New repetepour [N 1 2048] [Tangle :N attends 100]
fin

pour GoX :N
# draw a specific tangle curve of order N
New Tangle :N
fin
Tester le programme maintenant

Procédure à exécuter:
demarrer