« 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''
==Droites==
|