Géométrie 2d et 3d pour calculatrices

Bernard.Parisse@univ-grenoble-alpes.fr

Septembre 2022

English version

Résumé: On présente ici une application de géométrie pour Numworks N0110, Casio Graph 90 et TI Nspire CX/CX II qui permet de mêler géométrie euclidienne et analytique en 2d et 3d. On discute ensuite l’interaction entre construction géométrique et algorithmique, ainsi que la possibilité de faire des preuves assistées par le calcul formel.

Avertissement : Numworks et TI verrouillent leurs calculatrices et les ferment aux développements tiers. Il est donc essentiel de ne pas mettre à jour votre calculatrice sur le site de Numworks ou de TI..

Table des matières

1  Introduction

La plupart des calculatrices graphiques (à l’exception notable de la Numworks) possèdent une application de géométrie, mais dans le plan uniquement et souvent limitée à de la géométrie euclidienne pure, sans possibilité de travailler aussi avec des courbes (comme le fait par exemple Geogebra) ni de faire du calcul exact ou formel.

La dernière version de χ\chiCAS pour Numworks N0110, Casio Graph 90 et TI Nspire CX/CX II introduit une nouvelle application de géométrie permettant de travailler en 2d et en 3d, en calcul exact ou approché. L’application permet de construire des figures dans le plan ou dans l’espace, et de faire bouger un point et tout ce qui en dépend pour illustrer certaines propriétés (géométrie dynamique). On peut faire des constructions de géométrie euclidienne pure, mais aussi avec des graphes de fonction, des coniques, etc. comme ci-dessous le graphe 4d de la fonction zz 2z \rightarrow z^2 de \mathbb{C} dans \mathbb{C} obtenu par la commande plot3d(x^2-9) :

L’application possède deux “vues”: la vue graphique et la vue symbolique qui contient les commandes Xcas permettant de créer la figure, cf. les deux captures d’écran de l’exemple de géométrie 2d en section 2.3.1.

De plus, une fois la construction effectuée, le shell de χ\chiCAS permet d’effectuer des calculs de géométrie analytique, et dans certains cas on peut utiliser le noyau de calcul formel pour faire des preuves de résultats observés dans la vue graphique. Réciproquement, on peut utiliser des algorithmes que l’on définit depuis le shell dans la construction géométrique.

J’espère que la disponibilité sur calculatrices de cette application va contribuer à redonner un peu (plus) de place à la géométrie au lycée. Les étudiants qui arrivent dans le supérieur ont malheureusement très souvent beaucoup de lacunes dans ce domaine.

2  L’application de géométrie de χ\chiCAS

2.1  Installation

Il faut installer la dernière version de χ\chiCAS pour votre calculatrice

2.2  Interface

Les touches de clavier indiquées ci-dessous correspondent à une Numworks, les captures d’écran à une Casio Graph 90.

Sur une TI Nspire CX ou CX II, remplacez la touche Home par la touche doc, la touche Toolbox par la touche menu, la touche OK par enter, la touche EXE par la touche de passage à la ligne (en bas à droite du clavier) et la touche Back par la touche esc. Il n’y a pas de mode alpha puisqu’on dispose d’un clavier alphabétique.

Sur une Casio Graph 90, remplacez Home par F6, Toolbox par F4, OK par EXE, Back par EXIT. Pour passer à la ligne, il faut utiliser shift EXE. Le mode alphabétique majuscule s’obtient en tapant sur ALPHA, le mode alphabétique minuscule se verrouille avec la touche F5. Les menus rapides sont accessibles avec F1 à F3, shift-F1 à shift-F6 et ALPHA-F1 à ALPHA-F6.

Modes, vue graphique et symbolique.
Taper Home 1 pour afficher la liste des applications additionnelles, puis OK puis sélectionnez soit une nouvelle figure 2d ou 3d soit une figure existante. Vous pouvez aussi ouvrir l’application de géométrie depuis un graphe (par exemple après avoir tapé plot(sin(x))) en tapant Home puis Sauvegarder figure.

Au lancement on est dans la vue graphique en mode repère, les touches de curseur permettent de changer de point de vue. Pour changer le mode, utiliser la touche Toolbox, pour passer en vue symbolique et vice-versa taper OK. Par exemple tapez Toolbox 3 pour passer en mode point qui permet de construire des points en déplaçant le pointeur et en tapant OK ou tapez Toolbox 5 pour passer en mode triangle qui permet de construire un triangle à partir de ses 3 sommets, on déplace le pointeur et on tape OK trois fois. Pour déplacer le pointeur, utiliser les touches de déplacement, pour se déplacer plus rapidement, faire shift touche de curseur. Si on est proche d’un point existant, son nom apparait en bas. Pour déplacer le pointeur vers un point existant, vous pouvez aussi taper le nom du point (par exemple touche alpha A).

Le mode pointeur permet de sélectionner un point et de le déplacer pour observer comment la construction varie, ce qui permet de mettre en évidence des propriétés de la figure, par exemple concurrence de 3 droites.

Si vous tapez sur la touche Back depuis la vue graphique de l’application, vous revenez au mode repère ou si vous y étiez vous passez en vue symbolique. Vous pouvez ajouter des objets à la construction depuis cette vue, en mettant une commande par ligne. Tapez EXE pour passer à la ligne. Tapez OK pour revenir à la vue graphique. Dans la vue symbolique, vous pouvez sauvegarder la construction géométrique au format texte (avec une extension .py, même s’il ne s’agit pas d’un script Python). Tapez Back pour quitter l’application de géométrie.

Lorsque vous quittez l’application de géométrie, la figure est automatiquement sauvegardée dans une variable Xcas qui a le même nom que celui du nom de fichier affiché dans la vue symbolique. Vous pouvez purger la variable Xcas si vous voulez effacer la figure de la session.

2.3  Exemples en géométrie euclidienne.

2.3.1  Exemple 2d : cercle circonscrit.


Depuis le shell, taper Home 1 sélectionner nouvelle figure 2d et valider OK. Puis Toolbox 5 Triangle, OK pour créer le premier sommet du triangle puis déplacer le pointeur avec les touches de déplacement, OK pour créer le 2ème sommet du triangle, déplacer le pointeur à nouveau et OK pour créer le triangle.

Version longue en construisant le centre : Taper Toolbox 7, sélectionner 8 Mediatrice, déplacer le pointeur de sorte que seul un segment du triangle soit sélectionné (affichage en bas à droite perpen_bisector D5,D), taper OK pour créer la médiatrice du segment, déplacer le curseur sur une autre arête du triangle et OK pour créer la 2ème médiatrice, optionnellement sur le 3ème segment pour avoir les 3 médiatrices. Puis Toolbox 6 et 4 Intersection unique. Déplacer le curseur vers une des médiatrices, taper OK puis vers une autre médiatrice, taper OK, ceci crée le centre du cercle circonscrit. Pour tracer le cercle, taper Toolbox 4, déplacer le curseur au centre du cercle (vous pouvez utiliser les touches de déplacement ou juste taper alpha H ou la bonne lettre si le centre du cercle s’appelle autrement), puis OK puis sur un des sommets et OK.

Version courte avec la commande circonscrit : taper Toolbox 9 puis circonscrit puis sélectionner chaque sommet avec OK (alpha A OK alpha B OK alpha C OK, remplacez si nécessaire A, B, C par les lettres du sommet du triangle).

Version en vue symbolique : taper Back puis en fin de script sur une ligne vide (taper EXE s’il faut en créer une), taper
c:=circonscrit(A,B,C) OK

2.3.2  Exemple 3d: bac septembre 2019 

On construit un cube ABCDEFGHABCDEFGH, il s’agit de montrer que le plan ABGABG est orthogonal au segment DEDE.

c:=cube([0,0,0],[1,0,0],[0,1,0]);
A,B,C,D,E,F,G,H:=sommets(c);
P:=plan(A,B,G,display=filled+green);
S:=segment(D,E,display=cyan);

onload

Taper Home OK pour lancer l’application de géométrie puis nouvelle figure 3d. Puis Back ou OK pour passer en vue symbolique. Puis alpha c shift = puis Toolbox flèche haut deux fois pour sélectionner 3D puis OK puis 5 pour cube puis Home (aide), qui explique que les 2 premiers arguments de cube sont les sommets d’une arête, le troisième est un point d’un plan d’une face. Le premier exemple nous convient ici exactement, on tape Ans et on obtient c=cube([0,0,0],[1,0,0],[0,1,0]) On tape EXE pour voir le cube puis * - pour ajuster le zoom et EXE pour revenir à la vue symbolique. Vous pouvez sauvegarder à tout moment la construction au format texte depuis le menu Home. On passe à la ligne en tapant shift OK. Puis on définit les sommets du cube en tapant A,B,C,D,E,F,G,H:= (taper alpha shift A , alpha shift B etc.), puis Toolbox et flèche vers le haut 3 fois pour sélectionner Géometrie puis flèche vers le haut 4 fois pour sélectionner sommets OK et mettre c en argument sommets(c). Taper OK pour visualiser puis OK à nouveau pour revenir en vue symbolique. Passer à la ligne avec EXE puis créer le plan ABG en tapant alpha shift P = puis shift-2 pour ouvrir le menu rapide lines et 8 pour saisir plane. La commande plan prend en arguments 3 points pour définir le plan (on peut aussi donner une équation cartésienne, ici A,B,G, P=plan(A,B,G, on va lui ajouter une couleur avec le menu rapide shift 4 disp display=filled+green, vérifier en visualisant avec OK OK. On passe à la ligne (EXE) et on crée le segment DE alpha S = shift 2 sélectionner la commande segment avec OK puis D,E et shift 4 pour lui donner une couleur S=segment(D,E,color=cyan) (on pouvait aussi créer le segment depuis la vue graphique en mode Lignes mais déplacer le pointeur est un peu lent). La construction est donc la suivante:

c=cube([0,0,0],[1,0,0],[0,1,0])
(A,B,C,D,E,F,G,H)=sommets(c)
P=plan(A,B,G,display=filled+green)
S=segment(D,E,display=cyan)


Vous pouvez taper OK pour la visualiser et utiliser les flèches de déplacement pour changer de point de vue. Taper OK ou Back pour revenir en vue symbolique. Pour quitter l’application taper Back. Taper F1 pour sauvegarder la figure si nécessaire. Vous pouvez depuis le shell de KhiCAS accéder à de nombreuses informations de géométrie analytique, par exemple equation(P) (menu Toolbox Géométrie) vous donnera l’équation cartésienne du plan PP ou is_orthogonal(P,S) (Toolbox Géométrie) vous confirmera que le plan PP est orthogonal au segment SS (géométriquement, l’intersection de PP et du plan ADEADE est une des diagonales du carré ADHEADHE, DEDE est l’autre diagonale, ces deux diagonales sont perpendiculaires et leur perpendiculaire commune est l’arête ABAB).

2.4  Mesures et légendes

En tapant Toolbox puis en sélectionnant 13 Mesures, on peut afficher une mesure en un point de la figure. Par exemple après avoir construit un triangle, on peut afficher son périmètre ou son aire en tapant Toolbox puis deux fois flèche vers le haut, OK. Déplacer le pointeur près du triangle, taper OK, puis déplacer le curseur à l’endroit où on souhaite mettre la mesure et taper OK.

On peut afficher n’importe quelle légende avec la commande legende() depuis la vue symbolique. Le premier argument de légende peut être un point de la figure, ou bien un vecteur de deux entiers donnant la position absolue en pixels mesuré depuis le coin en haut à gauche. Le deuxième argument est la légende, cela peut être une chaine de caractères ou n’importe quelle expression.

Si la légende est une valeur numérique, elle peut être utilisée pour un paramètre numérique d’une commande, par exemple le rapport d’une homothétie ou l’angle d’une rotation en utilisant la commande extract_measure. Par exemple r:=legend([20,40],"2")
homothetie(A,extract_measure(r),B)

2.5  Curseurs

Vous pouvez créer un paramètre qui se déplace entre 2 valeurs extrêmes par saut de 1% depuis le menu Toolbox Curseur en vue graphique ou la commande element ou assume en vue symbolique. La commande assume permet de créer un curseur “symbolique” ce qui signifie qu’il est remplacé par sa valeur numérique uniquement pour faire un calcul approché, par exemple une représentation graphique, mais pas pour faire un calcul exact. Si on fait une construction de géométrie dynamique, le calcul exact peut être long, il est conseillé de n’utiliser que des curseurs non symboliques, sauf pour établir une preuve en géométrie analytique d’un résultat en utilisant le moteur de calcul formel.

Exemple : explorateur quadratique avec des curseurs
pour explorer comment une parabole d’équation y=ax 2+bx+cy=ax^2+bx+c dépend de la valeur de a,b,ca,b,c, créer 3 curseurs (Toolbox curseur vers le haut 4 fois OK OK). En vue symbolique on doit avoir quelque chose ressemblant à

a:=element(-1..1)
b:=element(0..1,0.5)
c:=element(-1..1)

puis ajouter un graphe, depuis la vue graphique taper Toolbox 0 (pour 10 Courbe) et sélectionner plot, ou en vue symbolique shift F6 et sélectionner plot, remplir entre les parenthèses par a*x^2+b*x+c (attention à ne pas oublier les *), puis valider avec OK. En vue graphique, vous devez voir 3 curseurs a, b et c et le graphe correspondant. Vous pouvez maintenant faire varier les valeurs de a,b,ca,b,c depuis la vue graphique en mode pointeur (Toolbox 2) en déplaçant le pointeur vers a,b,ca,b,c et en tapant OK puis les flèches de déplacement gauche ou droit et OK pour arrêter.

On peut bien sur faire des exemples plus simples avec un ou deux curseurs et une courbe dépendant d’un ou de deux paramètres. Par exemple un explorateur linéaire droite(y=a*x+b) ou trigonométrique plot(sin(a*x+b)).

2.6  Traces

La commande trace() permet de conserver la trace du déplacement d’un objet géométrique.

Exemple Enveloppe des normales à une courbe paramétrée (ici une ellipse).

E:=plotparam([cos(t),2*sin(t)],t=-pi..pi)
a:=element(-pi..pi)
M:=element(E,a)
T:=tangent(M)
N:=perpendiculaire(M,T)
trace(N)

En faisant varier aa, on observe une courbe séparant la zone des normales à une zone sans point tracé qui est l’enveloppe des normales, c’est la développée de l’ellipse
evolute(E,color=red)
On peut effacer les traces à tout moment avec la touche F6, puis touche vers le haut pour sélectionner le dernier item du menu de configuration.

l:=[];

onload
Cliquez sur le bouton + plusieurs fois ci-dessous pour voir l’enveloppe :

=
Not evaled

La trace d’un point peut aussi servir à conjecturer un lieu géométrique. Par exemple soient deux points AA et BB et cc le cercle de diamètre ABAB. Soit OO le centre de ce cercle et CC un point variable de ce cercle. Soit NN l’intersection de la tangente en CC à cc avec la parallèle à ACAC passant par OO. Trouver le lieu de NN quand CC varie.

A:=point(0);
B:=point(1,2);
c:=cercle(A,B);
O:=milieu(A,B);
C:=element(c);
T:=tangent(C);
D2:=parallele(O,droite(A,C));
N:=inter_unique(T,D2);

onload
En ajoutant l’instruction trace(N) et en faisant varier CC en mode pointeur, on peut conjecturer la nature du lieu.

2.7  Exemple mêlant graphe et géométrie

On considère la courbe représentative de l’exponentielle et de son inverse et les tangentes menées en ces 2 courbes aux points de même abscisse. Quelles sont leurs propriétés ?

On traduit l’énoncé en créant un curseur qui sera l’abscisse commune des deux points :

G=plot(exp(x))
H=plot(exp(-x))
assume(a=1)
M=element(G,a)
N=element(H,a)
T=tangent(M)
U=tangent(N)

=
Not evaled
Si on fait varier le curseur (cliquer sur le bouton + ou - ci-dessus), on s’aperçoit que les tangentes semblent perpendiculaires. Cela se vérifie facilement en calculant le produit des pentes qui fait -1, on peut le vérifier depuis le shell
simplify(slope(T)*slope(U))
Il existe une autre propriété pour les pieds des tangentes sur l’axe 0x0x.

Ox=droite(y=0)
P=inter_unique(Ox,T)
Q=inter_unique(Ox,U)

Exercice : quelle est cette propriété ? Comment la prouver avec le logiciel ? Indication, utiliser la commande distance. Pour afficher un résultat sur la figure, vous pouvez utiliser la commande legende.

2.8  Interaction avec Xcas

Les figures peuvent être sauvegardées au format texte. On peut alors les copier-coller vers un niveau de géométrie de Xcas (en collant lorsqu’on a cliqué sur le numéro d’un des niveaux de la figure de Xcas). Inversement, on peut exporter une figure de Xcas au format texte dans un fichier d’extension .cas et le renommer en .py puis on peut l’insérer dans une figure sur la calculatrice.

Les versions de Xcas à compter de la 1.19-21 permettent d’exporter une session contenant un niveau de géométrie en fichiers sessions pour χ\chiCAS et réciproquement.

3  Géométrie et algorithmique

La géométrie peut servir à introduire la notion de fonction en algorithmique, avec une valeur de retour, par exemple la construction du cercle circonscrit se réécrit très facilement en une fonction prenant en argument les trois sommets du triangle et renvoyant le centre du cercle circonscrit. Il suffit d’ajouter l’en-tête de définition de fonction def f(A,B,C): et la ligne qui renvoie le centre (return I si II est le centre) et d’indenter

def f(A,B,C):
  M1=mediatrice(A,B)
  M2=mediatrice(B,C)
  I=inter_unique(M1,M2)
  return I

On entre cette définition de fonction en syntaxe Xcas compatible Python dans l’éditeur de programmes de χ\chiCAS, on la valide, on peut ensuite l’utiliser dans l’application de géométrie. On pourrait aussi définir la fonction directement dans l’éditeur de l’application de géométrie, mais il faut alors la compacter en une seule ligne
def f(A,B,C): return inter_unique(mediatrice(A,B),mediatrice(B,C))
ce qui est moins lisible.

Exercice : refaire une construction analogue en 3d pour le centre de la sphère circonscrite à un tétraèdre.

Solution :

def f(A,B,C,D):
  M1=mediatrice(A,B)
  M2=mediatrice(B,C)
  M3=mediatrice(C,D)
  d=inter_unique(M1,M2)
  I=inter_unique(d,M3)
  return I

A=point(1,2,3)
B=point(2,0,0)
C=point(0,0,-1)
D=point(1,1,-1)
I=f(A,B,C,D)
r=distance(A,I)
tetraedre(A,B,C,D)
sphere(I,r,display=red)

onload

L’avantage par rapport à la tortue logo est qu’on peut introduire de “vraies” fonctions avec une valeur de retour et pures au sens où on ne modifie pas de variables globales, La tortue permet facilement d’introduire les procédures qui n’ont pas de valeur de retour explicite, mais il faut prendre garde au fait que la position et le cap de la tortue peuvent être modifiées par la procédure (une bonne procédure logo devrait d’ailleurs s’assurer que la tortue est dans son état initial à la fin de la procédure).

4  Calcul formel et preuve en géométrie

Le moteur de calcul étant un moteur de calcul formel, il est possible de réaliser des preuves de géométrie analytique en utilisant cette application, ce qui apporte un plus par rapport à une application de géométrie dynamique standard qui travaille en calcul approché sans paramètres. Il suffit de donner des valeurs formelles à des curseurs, s’il y a suffisamment de curseurs pour représenter le cas général, on a une preuve.

Par exemple, si on veut étudier une propriété géométrique d’un triangle, on peut toujours par translation, rotation et homothétie se ramener au cas où l’un des sommets AA est l’origine, le second le point B(1,0)B(1,0) et le troisième C(a,b)C(a,b) dépend de deux paramètres.

assume(a=0.3)
assume(b=1)
A=point(0)
B=point(1)
C=point(a,b)
T=triangle(A,B,C)

La commande assume crée un curseur formel, c’est-à-dire que tant que le calcul est exact, aa conserve sa valeur formelle, dès qu’un calcul est approché, par exemple pour une représentation graphique, aa est remplacé par la valeur (0.3 ci-dessus). Ceci permet de réaliser une figure pour visualiser tout en conservant des calculs exacts. On peut modifier la valeur du curseur et voir la figure se modifier, par contre les calculs exacts en fonction de aa et bb ne changent pas.

On peut ensuite effectuer une construction sur ce triangle. Prenons un exemple très simple, montrer que les 3 médianes sont concurrentes

d1=mediane(A,B,C)
d2=mediane(B,C,A)
d3=mediane(C,A,B)
I=inter_unique(d1,d2)

On cherche l’intersection de deux des médianes, et on vérifie que II appartient bien à d 3d_3 depuis le shell
est_element(I,d3)
Pour s’assurer que les calculs ont bien été faits dans le cas général, on calcule l’équation cartésienne de d 3d_3
eq:=equation(d3)
qui renvoie y=2b2a1xb2a1y=2\frac{b}{2a-1}x-\frac{b}{2a-1}, puis on calcule les coordonnées de II
ic:=coordonnees(I)
qui renvoie [13a+13,13b][\frac{1}{3}a+\frac{1}{3},\frac{1}{3}b] et on substitue
simplify(subst(eq,[x,y],ic))
qui renvoie 13b=13b\frac{1}{3}b=\frac{1}{3}b. On observe au passage la propriété du centre de gravité sur les coordonnées de II.

On peut faire de même pour les médiatrices. Pour les bissectrices, les calculs sont nettements plus longs et mal adaptés à une calculatrice. On peut aussi prouver le théorème dit de Napoléon. On construit trois triangles équilatéraux, un sur chaque arête du triangle, alors les centres de ces trois triangles forment un triangle équilatéral.

T1:=triangle_equilateral(A,C)
T2:=triangle_equilateral(B,A)
T3:=triangle_equilateral(C,B)
D:=isobarycentre(T1)
E:=isobarycentre(T2)
F:=isobarycentre(T3)
triangle(D,E,F,display=red)

Pour prouver le théorème, on tape dans le shell
simplify(distance2(D,E))
simplify(distance2(E,F))
simplify(distance2(F,D))
ou directement
simplify(distance2(D,E)-distance2(E,F))

Que dire de cette possibilité d’un point de vue pédagogique ?
Il faut bien faire comprendre aux élèves qu’une preuve obtenue comme ci-dessus par le logiciel de calcul formel/géométrie analytique est une preuve tout-à-fait rigoureuse d’un point de vue mathématique, on a bien établi un théorème, contrairement à une observation de conjecture avec un logiciel de géométrie dynamique standard. Il faut aussi observer que l’élève reste le maitre du déroulement des calculs qu’il donne à faire au logiciel, il ne délègue que la partie calculs.

Une preuve de ce type n’a toutefois pas vocation à remplacer une preuve faite par des arguments géométriques purs qui font travailler d’autres concepts que la géométrie analytique, et elle n’a pas non plus vocation à remplacer une preuve faite soi-même dans les cas où les calculs sont simples, car ici on fait confiance au logiciel pour faire les calculs.

Plus générallement, des calculs faits à la machine peuvent servir d’aide à la preuve faite à la main, par exemple en effectuant une partie des calculs techniques, ou pour fournir un résultat difficile à obtenir à la main mais facile à vérifier (par exemple la factorisation de a 4+4a^4+4 est difficile à réaliser à la main au lycée, mais facile à vérifier).

5  Pour aller plus loin

Vous pouvez consulter le manuel de géométrie 2d de Xcas rédigé par Renée De Graeve, qui contient de nombreux exemples avec des illustrations et preuves faites par Xcas qui peuvent être transposées dans l’application de géométrie, et qui présente aussi des preuves alternatives des théorèmes par des raisonnements de géométrie “pure”.

Les liens entre géométrie et calcul formel existent dans les deux sens :

  

Retour à la page principale de Giac/Xcas.