« Programmation objet et géométrie/SmallTalk par l'exemple » : différence entre les versions

Contenu supprimé Contenu ajouté
mAucun résumé des modifications
Ligne 136 :
 
==Points==
 
===Milieu===
 
Pour construire le milieu d'un segment à partir de ses extrémités (deux points), ''DrGeoII'' fait ainsi:
 
<source lang="smalltalk">
update
self doParentsExist ifTrue:
[self point: (parents first origin + (parents first direction / 2))].
</source>
 
''DrGeoII'' additionne les deux points et divise le résultat pas 2. L'addition de points est définie par ''SmallTalk'' par addition de leurs coordonnées:
 
<source>
+ t1
t1 isPoint
ifTrue: [^ x + t1 x @ (y + t1 y)].
^ t1 adaptToPoint: self andSend: #+
</source>
 
Et le quotient d'un point par un nombre s'obtient par quotients des coordonnées par ce nombre:
 
 
 
===Distance===
Ligne 152 ⟶ 175 :
 
==Vecteurs==
 
===Vecteur défini par deux points===
 
''DrGeoII' soustrait deux points pour avoir un vecteur: Pour l'objet ''DrGVector2ptsItem'' la méthode ''update'' donne
 
<source lang="smalltalk">
update
self doParentsExist ifTrue:
[self direction: (parents at: 2) point - (parents at: 1) point].
</source>
 
Reste à voir ce que, pour ''DrGeoII'', signifie une soustraction de points; ce qu'on peut voir dans ''Graphics-Primitives'':
 
<source lang="smalltalk">
- t1
t1 isPoint
ifTrue: [^ x - t1 x @ (y - t1 y)].
^ t1 adaptToPoint: self andSend: #-
</source>
 
En bref, pour obtenir l'abscisse du [[w:Vecteur|vecteur]] joignant deux points, ''DrGeoII'' soustrait les abscisses de ces deux points.
 
===translaté d'un point===
Ligne 171 ⟶ 215 :
</source>
 
L'esprit de ''SmallTalk'' demande qu'on considère le produit scalaire comme infixé: Pour calculer le produit scalaire du point courant '''avec''' ''t1'', on multiplie leurs ''x'' respectifs (leurs abscisses) et leurs ''y'' respactifsrespectifs, on additionne les deux produits, et on retourne la somme.
 
==Droites==