« Programmation objet et géométrie/Programmation avec DrGeoII » : différence entre les versions

Contenu supprimé Contenu ajouté
Ligne 248 :
==Représentation comme un lieu==
 
===Point mobile===
On peut aussi construire un segment ''s'' d'extrémités (-5;0) et (5;0), attacher un point ''mobile'' à ce segment, construire un point ''courbe'' sur la courbe, de coordonnées (x;y) où ''x'' est l'abscisse de ''mobile'' puis construire le lieu de ''courbe'' quand ''mobile'' bouge. Mais pour construire le point ''courbe'', on doit définir ses coordonnées par un ''bloc'' de ''Smalltalk'', c'est-à-dire une fonction qui récupère l'abscisse du point par ''mathItem point x'' et calcule l'image de l'abscisse par la fonction:
 
[[Fichier:Snail-WA edit02.jpg|200px|right]]
 
Variante plus légère: Avec un seul point, mais qu'on promène de telle manière que quelle que soit son abscisse, son ordonnée reste égale à l'image de celle-ci par la fonction. Tout d'abord, on va ralentir le mouvement du point-escargot pour avoir le temps de le voir bouger:
 
On va rajouter à la figure précédente une variable ''pause'' qui est un objet ''Delay''. On place ''p'' au départ de son trajet, sur son [[w:Starting-block|starting-block]], et on règle la pause sur 0,2 secondes, une bonne vitesse d'escargot. Ensuite au lieu de créer d'autres points, on va déplacer celui qu'on a et lui faire parcourir la courbe, en rafraichissant l'affichage au fur et à mesure:
 
<source lang="smalltalk">
|figure fonction p pause|
fonction := [:x | x*x*x/25-x].
figure := DrGeoCanvas new.
 
p:=figure point: -5@0.
pause := Delay forSeconds: 0.2.
 
[-5 to: 5 by: 0.1 do:
[:x |
p mathItem moveAt: x@(fonction value: x).
p name: (fonction value: x) asString.
figure domain updateAllMathItems.
pause wait.].
] fork
</source>
 
===Trace du point===
 
On peut maintenant imaginer que l'escargot dépose de la bave au cours de son trajet, et définir la représentation graphique comme la trace laissée par la bave: Un lieu géométrique.
 
On peutva aussi construirealors un segment ''s'' d'extrémités (-5;0) et (5;0), attacher un point ''mobile'' à ce segment, construire un point ''courbe'' sur la courbe, de coordonnées (x;y) où ''x'' est l'abscisse de ''mobile'' puis construire le lieu de ''courbe'' quand ''mobile'' bouge. Mais pour construire le point ''courbe'', on doit définir ses coordonnées par un ''bloc'' de ''Smalltalk'', c'est-à-dire une fonction qui récupère l'abscisse du point par ''mathItem point x'' et calcule l'image de l'abscisse par la fonction:
 
<source lang="smalltalk">