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

Contenu supprimé Contenu ajouté
Ligne 169 :
On remarque la logique de ''SmallTalk'', pour qui un segment va d'un point à un autre, et n'est pas défini à partir de ses extrémités. Le segment s'appelle ''s'' ce qui permet de le colorier en bleu. On remarque aussi que pour cacher un point ''p'', on lui demande de se cacher, en lui envoyant un message ''hide''.
 
===Avec un lieupolygone===
 
Si on rajoute les deux projetés orthogonaux des extrémités du polygone précédent sur l'axe des abscisses, on peut envisager de fermer le polygone. Pour l'exemple qui suit, on va prendre une fonction positive, c'est-à-dire que sa représentation graphique est entièrement au-dessus de l'axe des abscisses. Ceci pour éviter que le polygone soit croisé, et pour une autre raison qui apparaîtra dans l'exemple. On va donc considérer un nouvel objet, une liste de sommets. C'est pour ''SmallTalk'' une ''OrderedCollection'', qui est un tableau (voir ci-dessous le lancer de dés pour un exemple de tableau) dont le taille n'est pas fixée d'avance, afin de pouvoir y ajouter au fur et à mesure les sommets du polygone. La création du polygone se fera à partir de cette liste de sommets.
En fait, une représentation graphique est un lieu (le lieu des points ''M'' dont l'ordonnée est l'image de l'abscisse par la fonction). Et ''DrgeoII'' peut créer des lieux avec des ''FSD'' (figures SmallTalk DrGeoII). Le principe est de créer un segment pour matérialiser une partie de l'axe des abscisses, d'y attacher un point ''m'' puis de créer le point ''p'' qui a la même abscisse que ''m'' mais dont l'ordonnée est l'image de l'abscisse par la fonction (celle de ''m'' est 0, par définition). Le lieu de ce point sera la représentation graphique souhaitée:
 
La liste de sommets, initialement vide, se crée par
 
<source lang="smalltalk">
sommets:=OrderedCollection new.
</source>
 
Pour ajouter un sommet (la référence d'un point nouvellement créé, mais caché) on envoie à ''sommets'' le message ''add'' suivi du nom du sommet à insérer dans la liste. Comme on choisit l'intervalle ''[a;b]=[-1;1]'', on commence donc par le point de coordonnées (a;0):
 
<source lang="smalltalk">
figure:=DrGeoCanvas new.
a:=-1.
b:=1.
p:=figure point: a@0.
p hide.
sommets add: p.
</source>
 
Ensuite on ajoute les points de la courbe:
 
<source lang="smalltalk">
a to: b by: 0.1 do: [ :x |
p:=figure point: x@(fonction value: x).
p hide.
sommets add: p.
].
</source>
 
Enfin, le point de coordonnées (b;0):
 
<source lang="smalltalk">
p:=figure point: b@0.
p hide.
sommets add: p.
</source>
 
Le polygone construit avec la liste de sommets ainsi constituée s'appelle ''integrale''. En effet il est par défaut, rempli (ici en bleu) et son aire est <math>\int_{-1}^{1} x^2\,dx=\frac{2}{3}</math>:
 
<source lang="smalltalk">
integrale:=figure polygon: sommets.
integrale color: Color blue.
</source>
 
Le script complet est ici:
 
<source lang="smalltalk">
|figure fonction p integrale sommets a b|
 
fonction:=[ :x | x*x ].
 
sommets:=OrderedCollection new.
figure:=DrGeoCanvas new.
 
a:=-1.
b:=1.
p:=figure point: a@0.
p hide.
sommets add: p.
 
a to: b by: 0.1 do: [ :x |
p:=figure point: x@(fonction value: x).
p hide.
sommets add: p.
].
 
p:=figure point: b@0.
p hide.
sommets add: p.
 
integrale:=figure polygon: sommets.
integrale color: Color blue.
</source>