1
Exemple détaillé de figure avec plusieurs scripts
2
=================================================
4
Dans la section suivante, nous présentons une figure plus complexe
5
intégrant un enchaînement de scripts pour la construction d’une portion
6
de courbe représentative d’une fonction et la tangente en un point
7
mobile de cette portion de courbe.
9
La figure finale est disponible dans le dossier examples de Dr.Geo,
10
elle s’appelle Curve and slope.fgeo.
12
Figure: Courbe et tangente en un point
14
Dans une nouvelle figure, nous commençons par construire un segment
15
horizontal, nous y plaçons un point libre appelé “Move me”. Ce point
16
servira de base à la construction de la courbe comme lieu d’un point.
21
Comme un script est capable de retourner n’importe quel type d’objet, le
22
premier de notre construction définira simplement la fonction utilisée.
23
Pour ce faire nous utilisons des objets Pharo de type bloc de code –
24
fonction anonyme en Lisp. Nous nommons ce script Function, sans
25
arguments, sa méthode ‘compute’ est :
27
"La définition de notre fonction"
30
Ensuite nous le plaçons dans la figure(1). Ainsi le bloc de code
31
retourné par Function attend un argument :x et retourne le cosinus de
32
celui-ci. Nous verrons dans la suite comment manipuler ce script.
34
Image d’une valeur par une fonction
35
-----------------------------------
37
Maintenant nous calculons les coordonnées d’un point appartenant à la
38
courbe. Nous utilisons notre point “Move me” et notre fonction. Ce
39
script Mcoord aura comme arguments ce point et le script Function (dans
43
^ (self arg1 x) @ (self arg2 compute value: self arg1 x)
45
L’abscisse de ses coordonnées est la même que celle du point de
46
départ, son ordonnée est l’image de son abscisse par la fonction.
50
• ‘self arg2’, l’accès au script Function, qui est un bloc de code
51
définissant la fonction ;
53
• la définition de l’ordonnée, le passage de l’argument à la fonction
54
doit se comprendre comme Function(item x).
56
Maintenant utilisons ce script Mcoord avec comme argument le point
57
“Move me!” ; le résultat du script est de la forme 1.2@0.5, cela
58
représente un couple de coordonnées.
60
Avec l’outil point ...Points → Coordonnées... créons un point ayant
61
ses coordonnées contraintes par le résultat de ce script.
63
L’outil lieu d’un point ...Lignes → Lieu de point... donne ensuite
64
la courbe en sélectionnant nos deux points.
66
Pente en un point de la courbe d’une fonction et tangente
67
---------------------------------------------------------
69
Pour ce faire, nous calculons une valeur approchée de la pente en un
70
point de la courbe, avec celle-ci nous déduirons un deuxième point de la
73
p = ( f(x + 0.0001) - f(x) ) / 0.0001
75
Cela se traduit par un script Ncoord avec comment argument le point
76
où calculer une approximation de la pente et le script Function :
80
f := self arg2 compute.
81
x := self arg1 point x.
82
p := ((f value: x + 0.0001) - (f value: x)) / 0.0001.
83
^ self arg1 point + (1 @ p)
85
Nous plaçons ensuite ce script dans la figure.
88
• La déclaration de variables temporaires | p x f |. Les variables
89
ne sont pas typées, pas de soucis de ce côté là.
90
• La référence du bloc de code avec une variable f := self arg2
91
compute. Le symbole pour assigner une valeur à une variable est
93
• Les parenthèses ! Pharo ne connait pas la priorité des opérateurs,
94
en fait ils n’existent pas dans ce langage. Le lecteur est invité
95
à étudier la section sur les messages Pharo du livre _Pharo By
98
Utilisons ce script avec comme arguments le point de notre courbe et
99
notre script Function. Nous obtenons un deuxième couple de coordonnées.
100
Avec celles-ci construisons un point, la tangente est la droite définie
101
par ce point et celui de la courbe.
103
En déplaçant le point “Move me!”, la tangente est recalculée. Tout
104
aussi intéressant : modifier le script Function actualise correctement
105
l’ensemble de notre construction. Quelques exemples de modifications :
109
^ [:x | x cos + (10 * x) sin]
111
^ [:x | (x * 5) cos + x abs]
113
---------- Footnotes ----------
115
(1) Il est important de le référencer dans la figure afin qu’il soit
116
inclus dans la description de celle-ci lors d’une opération de
117
sauvegarde sur fichier.