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

Contenu supprimé Contenu ajouté
Ligne 146 :
update
self doParentsExist ifTrue:
[self point: (parents first originpoint + (parents firstsecond directionpoint) / 2))].
</source>
 
Reste à savoir ce que représente l'addition de deux points pour ''DrGeoII''! C'est l'addition des coordonnées:
Pour ''DrGeoII'', le milieu est donc l'image de la première extrémité du segment par la translation dont le vecteur est la moitié du vecteur joignant les deux points. ''DrGeoII'' obtient cette image par translation en additionnant les coordonnées, comme on le verra ci-dessous.
 
<source lang="smalltalk">
+ t1
t1 isPoint
ifTrue: [^ x + t1 x @ (y + t1 y)].
^ t1 adaptToPoint: self andSend: #+
</source>
 
Et la division d'un point par 2?
 
<source lang="smalltalk">
/ t1
t1 isPoint
ifTrue: [^ x / t1 x @ (y / t1 y)].
^ t1 adaptToPoint: self andSend: #/
</source>
 
C'est plus compliqué: Le nombre 2 est d'abord transformé en le point de coordonnées (2,2) puis la division coordonnées par coordonnées est effectuée entre les deux points. Au final, les deux coordonnées sont divisées par 2. Donc on retrouve le fait que l'abscisse du milieu est la moyenne des abscisses, mais avec plus de puissance (la division d'un point par un point ressemble à ce qu'on fait avec un tableur).
 
===Distance===