Dans Cabri, la gestion des cas de figure n'est pas évidente

On a remarqué depuis longtemps que certaines constructions géométriques comportent plusieurs cas de figures, qui doivent être pris en compte en géométrie dynamique. (À ce sujet, voir par exemple H. Schumann et D. Green, Discovering Geometry with a Computer - using Cabri Géomètre, Chartwell-Bratt, 1994, pages 228 et 229).

Considérons, par exemple, la construction suivante des tangentes communes à deux cercles. On constate que la construction reste correcte tant que le rayon du cercle C1 demeure inférieur au rayon du cercle C2.

Dans un contexte classique règle/compas, il suffisait d'identifier visuellement le cercle de plus grand rayon et d'effectuer la construction appropriée. Mais dans le cadre d'une géométrie dynamique, chacun des deux cercles peut être appelé à jouer ce rôle, et il faut imaginer une façon de préserver la justesse de cette construction même quand le cas de figure change. Nous allons examiner brièvement trois approches qui visent à apporter une solution à ce type de problème: les deux premières (la géométrie logique et la géométrie booléenne) cherchent à implanter dans Cabri diverses formes de constructions conditionnelles, qui existent tout naturellement dans ProEuclide via son langage de programmation. Pour simplifier les choses, nous nous limiterons au problème d'identifier le cercle de plus grand rayon parmi deux cercles donnés.

La géométrie logique

La géométrie logique est due à Yves Martin, et vous pouvez en trouver une description et quelques développements au site abraCadaBRI, et plus particulièrement dans la rubrique Alice. Nous nous contenterons ici d'en évoquer brièvement quelques caractéristiques après avoir traité le problème du cercle de plus grand rayon, en détaillant le point clé de la construction.

Dans chaque cas de figure, on construit d'abord un objet dit "logique", qui existe dans ce cas, et dans ce cas seulement. Tous les objets subséquents seront basés sur cet objet "logique". On doit donc répéter la même construction (éventuellement encapsulée dans une macro) pour chaque cas de figure. Si, en cours de route, d'autres cas de figures venaient à se présenter, on assisterait à une multiplication des sous-cas. Cette approche se ramène donc à une structure conditionnelle du type suivant:

SI tel objet existe ALORS effectuer telle construction

La géométrie booléenne

La géométrie booléenne est due à Eric Hakenholz, et vous pouvez en trouver une description et quelques développements dans la rubrique Alice. Nous nous contenterons, ici aussi, d'en évoquer brièvement quelques caractéristiques après avoir traité le problème du cercle de plus grand rayon, en détaillant le point clé de la construction.

En se basant sur l'orientation sous-jacente dans Cabri, on construit d'abord des points dit "booléens" qui sautent d'une position à une autre selon le cas de figure. Tous les objets subséquents seront basés sur ces points "booléens". Il n'est donc plus nécessaire de répéter la même construction pour chaque cas de figure. Cette approche se ramène donc à une structure conditionnelle du type suivant:

SI tel objet a telle orientation ALORS positionner le point "booléen" ici SINON positionner le point "booléen" là

et, en combinant de telles structures, on peut obtenir une structure conditionnelle du type suivant:

SI telle condition est vérifiée ALORS effectuer telle construction ici SINON effectuer la même construction ailleurs.

La géométrie conditionnelle

Le langage de programmation utilisé dans ProEuclide pour la description des figures nous permet de faire appel directement à des structures conditionnelles du type suivant

SI telle condition est vérifiée ALORS effectuer telle construction SINON effectuer telle autre construction,

ce qui généralise les deux approches précédentes.

Dans ce contexte, on doit délaisser temporairement la souris pour faire appel au clavier, mais la démarche résultante nous semble plus naturelle, moins complexe, et plus générale.