Next: Aspect des objets, Previous: Disséquer un script, Up: Script Pharo [Index]
Un argument passé à un script est toujours une référence vers une instance de classe de la hiérarchie DrGMathItem, elle est le modèle de base pour représenter tout objet d’une figure. Ainsi pour connaître les messages compris par un argument d’un script, il convient d’examiner la hiérarchie de DrGMathItem. Celle-ci comprend plus de 80 classes, mais du fait des héritages, seules quelques unes sont intéressantes pour les usages courants des scripts :
Pour explorer ces classes, utiliser par exemple Spotter, l’outil de recherche de Pharo. Pour l’invoquer Shift-Enter, puis saisir le nom d’une classe, par exemple “DrGPointItem” et choisir dans le résultat de la recherche. Le navigateur de classe Calypso s’affiche alors sur la classe recherchée.
Les sections suivantes contiennent la description de quelques messages utiles. Elles sont présentées par classe. Pour plus de concision dans la description de l’API, le préfixe DrG dans le nom des classes est omis.
Cette section regroupe des méthodes de la classe DrGMathItem, classe mère de la hiérarchie des objets d’une figure.
Ces messages peuvent donc être envoyés à tous les types d’objets passés en argument à un script.
⇒ une chaîne de caractères représentant le nom de l’item
nom := point1 safeName ^nom asUppercase.
⇒ un booléen indiquant si l’item est dans un état permettant son existence
Du fait de la dimension dynamique d’une figure géométrique, un objet peut ne plus exister temporairement. C’est par exemple le cas pour le point d’intersection de deux segments, cette méthode permet alors de vérifier l’existence de l’intersection.
line exist ifTrue: [ position := line origin ]
⇒ une collection d’items, parents de l’item
point1 := segment parents first
unVecteur, instance de Point
, vecteur de coordonnées (x,y)
représentant le déplacement
Déplace un item dans une direction donnée, tout en tenant compte de ses contraintes.
circle move: 2@1
⇒ coordonnées du point sur l’item le plus proche de unPoint unPoint, un couple de coordonnées
Cette méthode prend tout son sens sur des items de type ligne comme droite, cercle, arc, polygone, etc.
position := segment closestPointTo: 2@1 position := arc closestPointTo: 2@1
Un item point – objet point defini dans une construction Dr.Geo – passé en argument à un script est un objet très complexe. Il peut être un point libre dans le plan, sur une ligne, une intersection, etc. Quelques méthodes spécifiques permettent d’exploiter ce type d’objet depuis les scripts.
⇒ coordonnées de ce point
L’objet retourné est une instance de Point, son abscisse et ordonnée s’obtiennent par le message #x et #y respectivement.
abscissa := pointA point x
aPoint, couple de coordonnées
Modifie les coordonnées de l’item point tout en respectant ses contraintes propres. Pour un point libre, la nouvelle position sera exactement celle donnée en argument, pour un point contraint (sur ligne, intersection) cela sera sans effet.
pointA point: 5@2
⇒ abscisse curviligne de ce point sur sa ligne, elle est normalisée sur [0 ; 1]
Cette méthode est réservée au point libre sur une ligne
a := mobile abscissa
uneValeur, valeur décimale de [0 ; 1]
Modifie l’abscisse curviligne d’un point libre sur une ligne.
pointItem abscissa: 0.5
unPoint, couple de coordonnées (x,y) où déplacer le point
Déplace le point à la position donnée en argument.
point moveAt: 2@1
Ces messages sont à envoyer aux objets de type ligne comme droite, cercle, polygone, etc.
⇒ une valeur de [0 ; 1], abscisse curviligne de unPoint sur la ligne
unPoint, un point (x,y)
a := curve abscissaOf: 2@1
⇒ coordonnées du point de la ligne d’abscisse curviligne uneValeur
uneValeur, un nombre de [0 ; 1]
myPoint := curve pointAt: 0.5. ^ myPoint x
⇒ un booléen indiquant si unPoint est sur la ligne
unPoint, un point (x,y)
(curve contains: 0@1) ifTrue: [^ 'Yes!']
Ensemble de méthodes dédiées aux lignes droites.
⇒ un point origine de cette ligne
D’un point de vue interne les droites sont graduées avec une origine. Cela permet de positionnement de points sur celle-ci.
segment origin
⇒ un vecteur (x,y) indiquant la direction de la ligne
v := droite direction. pente := v y / v x
⇒ un vecteur unitaire normal à la direction de la ligne
n := vecteur normal
Ensemble de méthodes dédiées aux segments.
⇒ longueur du segment
segment := canvas segment: 0@0 to: 5@5. l := segment length
⇒ coordonnées de l’extrémité 1 du segment
segment := canvas segment: 0@0 to: 5@5. p := segment extremity1.
⇒ coordonnées de l’extrémité 2 du segment
segment := canvas segment: 0@0 to: 5@5. p := segment extremity2
⇒ coordonnées du milieu du segment
segment := canvas segment: 0@0 to: 5@5. m := segment middle
Ensemble de méthodes réservées aux cercle, arc et polygone.
⇒ point, centre du cercle ou de l’arc de cercle
c := arcAB center
⇒ rayon du cercle ou de l’arc de cercle
rayon := monCercle radius
⇒ longueur du cercle, de l’arc de cercle ou du polygone
perimetre := triangle length
⇒ valeur de cet item
n1 := item2 valueItem. n2 := item2 valueItem. n1 + n2.
uneValeur, valeur décimale
Modifie la valeur d’un item de type valeur libre.
item valueItem: 5.2.
unPoint, point (x,y)
Déplace dans la figure l’item à la position unPoint.
maValeur position: 0.5@2.
⇒ une mesure en degrés de cet angle orienté ou géométrique
angle1 := a1 degreeAngle.
⇒ une mesure en radian de cet angle orienté ou géométrique
angle1 := a1 radianAngle.
Next: Aspect des objets, Previous: Disséquer un script, Up: Script Pharo [Index]