• Aucun résultat trouvé

5.3 Principales fonctionnalites de construction des gures

5.3.2 Construction d'une speci cation

Une deuxieme maniere de fournir la speci cation geometrique d'une gure est de la construire en suivant une approche imperative a l'aide d'outils mis a disposition dans une barre d'outils geometriques. GDRev dispose d'un tel langage qui constitue les langages SCL et ESCL introduit dans le chapitre 4. Avec cette approche, l'utilisateur indique non seulement la speci cation geometrique de la gure qu'il attend, mais aussi la speci cation dynamique des elements qui la composent. Nous presentons d'abord les primitives de construction d'objets et de proprietes puis celles de construction de clauses.

Primitives de construction

Le langage ESCL de construction de gures geometriques que nous decrivons ici est base sur celui de Cabri-Geometre II. Ce choix n'est pas seulement lie a notre participa-tion au projet Cabri-Geometre. Il decoule des indeniables qualitees didactiques de son interface, issue d'une etude pluridisciplinaire reunissant des professeurs de college et

5.3 Principales fonctionnalites de construction des gures 89

lycee, des didacticiens et des informaticiens. La tres large di usion de Cabri-Geometre est aussi un atout incontestable puisqu'elle permet de supposer une prise en main rapide de notre systeme.

Fig. 5.4 { Barre d'outils de construction.

Les primitives de construction ESCL de GDRev sont accessibles au travers de la barre d'outils geometriques illustree par la gure 5.4. Le deuxieme, troisieme, qua-trieme et cinquieme bouton de cette barre d'outils regroupent par theme les fonction-nalites de construction de gures. Ces boutons sont respectivement dedies au point, aux objets rectilignes, au cercle et aux autres constructions.

Rappelons nous que dans GDRev, une construction est autorisee, suivant un schema d'interactionVerbe/Objet, qu'a la condition que celle-ci soit valide numeriquement. A l'inverse de Cabri-Geometre, la selection des arguments d'un outil de construction suit un ordre preetabli. De plus, les outils de constructions ne permettent actuellement pas la creation des points sur objet ou points sur deux objets a la volee. Les primitives

Droite,Demi-Droite,Segment,Cercle,Droite Perpendiculaire,Droite Parallele,Milieu,

Mediatrice et Compas supportent neanmoins la creation a la volee de point de base, c'est-a-dire de points instancies.

Les tableaux 5.1 et 5.2 detaillent les formules LDL correspondant aux primitives de construction du langage ESCL. Dans ces tableaux, l'appellationai fait reference au iiemeargument de la primitive de construction, et les appellationsi, j, ...font reference aux objets construits. Ceux-ci peuvent ^etre nommes par l'utilisateur, en utilisant tout le jeu de caracteres o ert par le clavier de l'ordinateur, a l'aide de l'operationNommer,

90 De nition des langages d'interface de GDRev

mais ils sont quoi qu'il en soit identi es de maniere unique par le systeme.

Primitive Arguments Formule LDL

de construction correspondante

Objets ponctuels

point aucun point(i)

point sur objet droite point(i) ^ appDr(i, a1) demi-droite point(i) ^ appDD(i, a1) segment point(i) ^ appSeg(i, a1) cercle point(i) ^ appCc(i,a1) point d'intersection droite, droite point(i) ^ appDr(i, a1)^

appDr(i, a2)

droite, demi-droite point(i) ^ appDr(i, a1)^ appDD(i, a2)

droite, segment point(i) ^ appDr(i, a1)^ appSeg(i, a2)

droite, cercle point(i) ^ appDr(i, a1)^ appCc(i, a2)

demi-droite, demi-droite point(i) ^ appDD(i, a1) ^ appDD(i, a2)

demi-droite, segment point(i) ^ appDD(i, a1) ^ appSeg(i, a2)

demi-droite, cercle point(i) ^ appDD(i, a1) ^ appCc(i, a2)

segment, segment point(i) ^ appSeg(i, a1)^ appSeg(i, a2)

segment, cercle point(i) ^ appSeg(i, a1)^ appCc(i, a2)

cercle, cercle point(i) ^ appCc(i,a1) ^ appCc(i, a2)

Objets rectilignes

droite point, point droite(i)^ appDr(a1, i)^ appDr(a2, i)

demi-droite point, point demiDroite(i,a1, l) ^ appDD(a2, i)

segment point, point segment(i,a1, a2, l)

Objets non rectilignes

cercle point, point cercle(i,a1, r) ^

appCc(a2, i) ^ distPP(r, a1, a2)

Tab.5.1 { Primitives de construction du langage ESCL

5.3 Principales fonctionnalites de construction des gures 91

Primitive Arguments Formule LDL

de construction correspondante

Autres

droite perpendiculaire point, droite droite(i)^ appDr(a1, i) ^ perp(i, a2)

point, demi-droite droite(i) ^ appDr(a1, i) ^ perp(i, a2)

point, segment droite(i)^ appDr(a1, i) ^ perp(i, a2)

droite parallele point, droite droite(i)^ appDr(a1, i) ^ par(i, a2)

point, demi-droite droite(i) ^ appDr(a1, i) ^ par(i, a2)

point, segment droite(i)^ appDr(a1, i) ^ par(i, a2)

milieu point, point point(i)^ milieu(i,a1, a2)

segment point(i)^ segment(a1, p1, p2, l) ^ milieu(i,p1,p2)

mediatrice point, point point(i)^ milieu(i,a1, a2) ^ droite(j)^ appDr(a1, j) ^ appDr(a2, j) ^ droite(k)^ appDr(i, k) ^ perp(j, k)

segment point(i)^ segment(a1, p1, p2, l) ^ milieu(i,p1,p2)^ droite(k)^ appDr(i, k) ^ perp(a1, k) compas segment, point segment(a1,p1,p2, l) ^

distance(d)^

distPP(d,p1, p2) ^ cercle(i, a2, d)

Tab. 5.2 {Primitives de construction du langage ESCL

Point cree des points instancies, la primitive Point sur objets cree des points demi-instancies et toutes les autres primitives conduisent a des objets construits. Toutefois, les points crees a la volee par les primitives Droite, Demi-Droite, Segment, Cercle,

Droite Perpendiculaire,Droite Parallele, Milieu,Mediatrice etCompas sont des points instancies.

A n d'illustrer nos propos, considerons l'exemple 5.5 suivant.

Exemple 5.5

Construction d'une specification

Construire le centre de gravite d'un triangle ABC. Le resultat de cette construction est illustre par la gure 5.5.

92 De nition des langages d'interface de GDRev

Fig. 5.5 { Construction du centre de gravite d'un triangle.

Une construction peut commencer par:

1. Creer les points A, B et C a l'aide de la primitive Point.

2. Construire a partir de ces points les segments SAB, SAC et SBC a l'aide de la primitive Segment.

3. Construire a partir des objets deja construits ou crees les milieux IAB et IAC des segments SAB et SAC a l'aide de la primitive Milieu.

4. Construire les medianes MB et MC issues respectivement des points B et C a l'aide de la primitive Droite.

5. Et en n construire le centre de gravite G a l'aide de la primitive Point d'inter-section.

La speci cation LDL de cette gure est :

point(A) ^ point(B) ^ point(C) ^

segment(SAB, A, B, lAB) ^ segment(SAC, A, C, lAC) ^ segment(SBC, B, C, lBC) ^

point(IAB) ^ point(IAC) ^ milieu(IAB, A, B) ^ milieu(IAC, A, C) ^ droite(MB) ^ droite(MC) ^

5.3 Principales fonctionnalites de construction des gures 93

appDr(C, MC) ^ appDr(IAB, MC) ^

point(G) ^ appDr(G, MB) ^ appDr(G, MC).

La speci cation dynamique de cette gure precise de plus que les points A, B et C sont des points instancies, et que tous les autres objets sont des objets construits.

Primitives de construction de clauses

Nous decrivons maintenant les aspects lies a la notion de clause introduite dans le paragraphe 4.2.2 page 63. Ces aspects concernent la saisie d'une clause et l'execution de celle-ci.

Saisie d'une clause

Nous avons explique dans le paragraphe 1.2.1 page 15 ce que Cabri-Geometre extrait de la speci cation d'une gure pour former une macro construction suite a la donnee d'objets initiaux et d'objets naux.

La de nition que nous avons donnee dans le paragraphe 4.2.2 des clauses qui rem-plissent un r^ole analogue a celuides macros constructions mais en geometriedynamique declarative, ne permet pas de proceder de la m^eme maniere. Le probleme dicile au-quel nous devons faire face est qu'il n'existe pas de structure de dependance orientee de laquelle on peut extraire un sous graphe. En geometrie dynamique declarative, la speci cation d'une gure peut toutefois ^etre vue sous la forme d'un graphe, ou les nuds de celui-ci sont les objets de cette derniere, et ou deux nuds sont relies entre eux par une ar^ete si et seulement si ils sont les arguments d'une m^eme propriete. De plus, les ensembles d'objets initiaux et d'objets naux ne sont pas disponibles dans une optique declarative. Une clause comporte des arguments, et a partir d'eux il faut d'ex-traire de la speci cation de la gure les objets intermediaires que l'utilisateur souhaite voir intervenir dans sa clause. Une fois l'ensemble des objets intermediaires connus, une idee consiste a considerer parmi les proprietes de la gure exclusivement celles faisant intervenir les objets selectionnes comme argument de la clause ou les objets intermediaires.

Il n'y a pas de regle reconnue pour resoudre ce probleme, c'est-a-dire pour deter-miner l'ensemble de ces objets intermediaires. Une premiere idee consiste a considerer comme objets intermediaires tous les objets de la gure lies directement ou indirecte-ment aux objets selectionnes comme arguindirecte-ment, prives de ces derniers. De la sorte, le graphe extrait est le sous-graphe connexe pour les arguments de la clause du graphe

94 De nition des langages d'interface de GDRev

original. Cette premiere approche a l'avantage d'^etre simple a mettre en uvre et de convenir dans de nombreux cas.

Une deuxieme idee consiste a requerir de l'utilisateur la donnee des objets inter-mediaires qu'il souhaite voir intervenir dans sa clause. De la sorte, le graphe extrait exprime la fermeture des proprietes sur les objets arguments et intermediaires. L'inte-r^et d'une telle approche est qu'elle o re a l'utilisateur une approche predictible. Son principale inconvenient est qu'elle lui impose une t^ache de selection supplementaire.

Une troisieme idee repose sur une notion de chemin dans un graphe. Muni du graphe d'une gure, nous pouvons de nir la notion d'ensemble d'objets intervenant dans un chemin de longueur i comme etant l'ensemble des objets intervenant dans un chemin de longueur au plus i reliant deux arguments distincts de la clause. La saisie d'une clause peut se resumer alors a determiner la plus petite longueur de chemin telle que la clause alors formee soit valide.

La question se pose maintenant de determiner le critere de validite d'une clause ayant n arguments. Nous proposons que celui-ci soit qu'une clause est valide si tous les objets de cette derniere peuvent ^etre construits a partir de la donnee de n,1 de ces arguments.

Pour illustrer nos propos, considerons l'exemple 5.6 suivant.

Exemple 5.6

Saisie d'une clause

Considerons que la gure construite par l'utilisateur soit celle de l'orthocentre d'un triangle. Le probleme consiste a extraire une clause reliant les points A, B, C et H. Notre vision sous forme de graphe de cette gure est illustree par la gure 5.6.

Dans cet exemple, la plus petite longueur de chemin reliant deux arguments de la clause est 2. Elle conduit a considerer comme objets intermediaires les droites DAB, DAC, DBC, DAH, DBH et DCH. La clause formee est la suivante :

orthocentre(A, B, C, H)

point(A) ^ point(B) ^ point(C) ^ point(H) ^ droite(DAB) ^ droite(DAC) ^ droite(DBC) ^ appDr(A, DAB)^ appDr(A, DAC) ^

appDr(B, DAB)^ appDr(B, DBC)^ appDr(C, DAC) ^ appDr(C, DBC)^

droite(DAH)^ droite(DBH)^ droite(DCH) ^ appDr(A, DAH) ^ appDr(H, DAH) ^

5.3 Principales fonctionnalites de construction des gures 95

Point A Point H Point B

PointC Droite D Hauteur D Hauteur D CH BH AB Hauteur DAH AC Droite D Droite D BC Légende

: Noeud correspondant à un objet sélectionné comme argument : Noeud correspondant à un objet non sélectionné comme argument : Arête correspondant à une propriété d’appartenance à une droite : Arête correspondant à une propriété de perpendicularité

Fig. 5.6 {Vision sous forme de graphe de la gure. appDr(B, DBH)^ appDr(H, DBH) ^

appDr(C, DCH) ^ appDr(H, DCH) ^

perp(DAB, DCH) ^ perp(DAC, DBH) ^ perp(DBC, DAH).

Elle est valide puisque tous les objets de cette derniere peuvent ^etre construits soit a partir des points A, B et C, ou des points A, B et H, ou des points A, C et H, ou en n des points B, C et H.

Execution d'une clause

Les clauses saisies sont mises a disposition de l'utilisateur dans la barre d'outils geometriques, comme tout autre outil. Elles suivent le m^eme mode d'interaction que les autres primitives, a savoirVerbe/Objet. De m^eme que toute primitive de construction, la selection des arguments d'une clause suit l'ordre de

celle-96 De nition des langages d'interface de GDRev

ci. En n, l'utilisateur speci e qu'il ne souhaite pas selectionner un argument par un double clic sur le bouton droit de la souris.