~hilaire-fernandes/drgeo/trunk

« back to all changes in this revision

Viewing changes to resources/doc/userGuide/fr/drgeoText/Exemple-detaille-de-figure-avec-plusieurs-scripts.txt

  • Committer: Hilaire Fernandes
  • Date: 2022-08-15 15:18:37 UTC
  • Revision ID: hilaire.fernandes@gmail.com-20220815151837-6ta4g0ymzln715j4
Organisation

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
Exemple détaillé de figure avec plusieurs scripts
 
2
=================================================
 
3
 
 
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.
 
8
 
 
9
   La figure finale est disponible dans le dossier examples de Dr.Geo,
 
10
elle s’appelle Curve and slope.fgeo.
 
11
 
 
12
Figure: Courbe et tangente en un point
 
13
 
 
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.
 
17
 
 
18
Définir un fonction
 
19
-------------------
 
20
 
 
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 :
 
26
     compute
 
27
     "La définition de notre fonction"
 
28
        ^ [:x | x cos]
 
29
 
 
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.
 
33
 
 
34
Image d’une valeur par une fonction
 
35
-----------------------------------
 
36
 
 
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
 
40
cet ordre) :
 
41
 
 
42
     compute
 
43
        ^ (self arg1 x) @ (self arg2 compute value: self arg1 x)
 
44
 
 
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.
 
47
 
 
48
   Noter :
 
49
 
 
50
   • ‘self arg2’, l’accès au script Function, qui est un bloc de code
 
51
     définissant la fonction ;
 
52
 
 
53
   • la définition de l’ordonnée, le passage de l’argument à la fonction
 
54
     doit se comprendre comme Function(item x).
 
55
 
 
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.
 
59
 
 
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.
 
62
 
 
63
   L’outil lieu d’un point ...Lignes → Lieu de point...  donne ensuite
 
64
la courbe en sélectionnant nos deux points.
 
65
 
 
66
Pente en un point de la courbe d’une fonction et tangente
 
67
---------------------------------------------------------
 
68
 
 
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
 
71
tangente.
 
72
 
 
73
   p = ( f(x + 0.0001) - f(x) ) / 0.0001
 
74
 
 
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 :
 
77
 
 
78
     compute
 
79
     | p x f |
 
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)
 
84
 
 
85
   Nous plaçons ensuite ce script dans la figure.
 
86
 
 
87
   Noter :
 
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
 
92
     “:=”.
 
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
 
96
     Exemple_.
 
97
 
 
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.
 
102
 
 
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 :
 
106
 
 
107
        ^ [:x | x * x / 10]
 
108
 
 
109
        ^ [:x | x cos + (10 * x) sin]
 
110
 
 
111
        ^ [:x | (x * 5) cos + x abs]
 
112
 
 
113
   ---------- Footnotes ----------
 
114
 
 
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.
 
118