Français   Spirographes
L'harmonographe est un appareil constitué de deux pendules auxquels est attaché un crayon qui trace sur le papier une courbe résultant de l'oscillation de l'ensemble. Ce fut un jouet éducatif en vogue à la fin du XIXième siècle.
Les courbes peuvent être simulées sur ordinateur par la composition de deux sinusoïdes dont les amplitudes décroissent afin de reproduire le ralentissement du mouvement dû à la friction.

Le programme simule un harmonographe à l'aide de deux équations, l'une pour le mouvement horizontal, l'autre pour le mouvement vertical. Ce sont les mêmes que pour les spirographes à ceci près qu'elles tiennent compte de la friction.

X = ke-rt [ Sin (f1t + p1) + Sin (f2t + p2) ]
Y = ke-rt [ Sin (f3t + p3) + Sin (f4t + p4) ]


k = 90 est juste une constante pour remplir la zone de dessin (c est la vitesse de la lumière)
e = 2.718, la fameuse constante de base de l'exponentielle.
r = 0.00015 une autre constante, le facteur de frottement
f1,f2,f3,f4 = fréquence d'oscillation aléatoire du pendule, 1,2,3...9
p1,p2,p3,p4 = angles aléatoires de phase, 0...359
T = intervalle de temps, 0,1,2,3,...5000


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

pour spir
fpos xycurve 0 baissecrayon
repetepour [t 0 5000] [fcc angcol :t fpos xycurve :t]
fin

pour xycurve :t
donne "kk :k * puissance :e ( moins 0.00015 * :t )
donne "x :kk*((cos ((:f1*:t) + :p1 )) + (cos ((:f2*:t) + :p2 )))
donne "y :kk*((cos ((:f3*:t) + :p3 )) + (cos ((:f4*:t) + :p4 )))
retourne (liste :x :y)
fin

pour initialise
donne "k 90
donne "e 2.718
donne "f1 tronque 1+ hasard 9
donne "f2 tronque 1+ hasard 9
donne "f3 tronque 1+ hasard 9
donne "f4 tronque 1+ hasard 9
donne "p1 tronque hasard 360
donne "p2 tronque hasard 360
donne "p3 tronque hasard 360
donne "p4 tronque hasard 360
fin

pour display
# tape header title et footer values
fcc blanc
fpos [-190 184] etiquette "harmonograph
fpos [-190 -190] etiquette phrase phrase phrase liste
"freqs: :f1 :f2 :f3 :f4
fpos [34 -190] etiquette phrase phrase phrase liste
"phase: :p1 :p2 :p3 :p4
fin

pour angcol :theta
donne "red abs 255 *cos (:theta)
donne "gre abs 255 *cos (:theta + 120)
donne "blu abs 255 *cos (:theta + 240)
retourne phrase liste :red :gre :blu
fin

pour demarrer
repete 12 [new initialise display spir attends 200]
fin



Tester le programme maintenant

Procédure à exécuter:
demarrer