Français   Nuages de points

Le triangle de Sierpinski

Cette courbe apparait après que beaucoup de points soient tracés. La tortue commence au centre du triangle. Elle choisit un des trois sommets du grand triangle au hasard. La tortue se tourne vers ce sommet et place un point à la moitié du trajet pour atteindre ce sommet. Ensuite le procédé recommence, on choisit l'un des trois sommets au hasard et on place un point pile au milieu du trajet etc. Etonnament, un modèle émerge au bout d'un certain nombre de points tracés.

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

pour sier
donne "corner choix [ [190 -180] [-190 -180] [0 160] ] # choose corner
fixecap vers :corner # turn pour face corner
avance (distance :corner)/2 # move half way vers corner
baissecrayon avance 0 levecrayon # plot pixel
fin

pour demarrer
new repete 10000 [sier] # repete 10000 times
fin



Triangle de Sierpinski amélioré

Cette fois-ci, la courbe sera coloriée (trouver comment on procède !) et à présent on place chacun des points à l'aide de la primitive fixexy. Pour obtenir une deuxième courbe de Hénon:

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

pour sier
donne "corner hasard 3 # choose hasard corner
si :corner=0 [plot 190 moins 180 fcc 2]
si :corner=1 [plot moins 190 moins 180 fcc 3]
si :corner=2 [plot 0 160 fcc 5]
fin

pour plot :xp :yp
donne "xcor (:xcor+:xp)/2
donne "ycor (:ycor+:yp)/2
fixexy :xcor :ycor baissecrayon avance 0 levecrayon # plot pixel
fin

pour demarrer
new
donne "xcor 0 donne "ycor 0 # set xcor et ycor pour 0
repete 10000 [sier] # repete 10000 times
fin


Le triangle généralisé

Le premier programme a été réécrit pour pouvoir recréer la courbe à partir de n'importe quel polygone. Tester:
demarrer 3

demarrer 6

demarrer 111


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

pour sier :order :size :frac :ang
donne "angle :ang*(hasard :order) # choose hasard corner
fixex :frac * ((premier pos) +:size*sin :angle)
fixey :frac * ((dernier pos) +:size*cos :angle)
baissecrayon avance 0 levecrayon # plot pixel
fin

pour demarrer :order
new
donne "size (:order-2)*180
donne "frac 1/(:order-1)
donne "ang 360/:order
repete 10000 [sier :order :size :frac :ang] # repete 10000 times
fin

Tester le programme maintenant

Procédure à exécuter:
demarrer