Les nouvelles technologies pour l’enseignement des mathématiques
Intégration des TICE dans l’enseignement des mathématiques

MathémaTICE, première revue en ligne destinée à promouvoir les TICE à travers l’enseignement des mathématiques.

Une bonne vibration pour la 3D

Cet article montre la possibilité - assez surprenante- d’avoir, en manipulation directe, les coordonnées 3D dans une interface de géométrie dynamique dite 2D+. Des exemples d’utilisation en classe sont ensuite proposées

Article mis en ligne le 6 novembre 2013
dernière modification le 20 août 2014

par Pierre-Marc Mazat, Yves Martin

CaRMetal propose une interface 2D+, où l’on peut construire dans l’espace, avec un trièdre manipulable à la souris. Si les outils ont été adaptés à cet environnement, ce n’est pas un logiciel 3D au sens où l’on ne travaille pas avec coordonnées 3D des points. Pourtant, la pseudo3D dynamique n’est pas que de la pseudo3D, elle est dynamique, et cet aspect permet de travailler effectivement avec les coordonnées 3D des points et donc de faire de la géométrie 3D.

Implémentation dans DGPaD

Il y a deux façons de voir la géométrie dynamique pseudo3D, c’est-à-dire ses possibilités de simuler en manipulation directe la 3D. Il y a d’abord ceux qui la rejettent, disant que c’est sans intérêt, didactiquement ambigu : des droites se coupent, on peut prendre leurs intersections alors qu’elles sont non coplanaires, et surtout on ne peux pas calculer dans cet environnement : autant utiliser Geospace, vieillissant mais encore utilisable - et utilisé, ou attendre la future version de Geogebra 4 qui aura une composante 3D (les quelques privilégiés qui l’ont vue en avant première à différents colloques la trouvent particulièrement bien intégrée à l’ensemble de la « suite logicielle » Geogebra 4, même si la vraie 3D dynamique est toujours lourde à l’utilisation, pour les constructions s’entend).

L’argument sur les droites sécantes est discutable, c’est aussi vrai de la représentation 2D du tableau : le discernement est toujours à faire, et c’est d’ailleurs pour cela que l’on appelle cet environnement 2D+ car s’il permet de nombreux travaux intéressants en 3D, y compris par les élèves, c’est avec la même vigilance, quant aux questions d’incidence, que dans un environnement de représentation plane de l’espace statique, comme le tableau en classe. Si la vigilance doit être la même, conceptuellement, elle est moindre, car on peut faire tourner la figure. On peut même dire que cette manipulation de figure permet, en même temps qu’elle est nécessaire, un apprentissage à cette vigilance : au début on tourne la figure pour voir si des droites sont ou non coplanaires, et avec l’habitude on demande aux élèves d’anticiper la réponse. Nous sommes dans la mise en œuvre d’un outil qui participe à l’accélération de la conceptualisation des objets géométriques car il permet la manipulation de leur représentation.

Dans cet article nous allons voir que l’aspect dynamique de l’implémentation 2D+ permet de calculer les véritables coordonnées 3D des points et donc de faire de nombreux calculs et illustration en 3D.

L’article est rédigé en 4 parties, suivant les onglets suivants

• Géom analytique 3D
• Retrouver la 3D dans la 2D+ en mouvement
• Et le rendre dynamique (par une vibration du trièdre)
• Applications

Si l’article est rédigé à la première personne, il est écrit à deux voix. En première partie (onglets 1 et 2), Yves introduit le sujet. Le coeur de l’article (onglet 3), est rédigé par Pierre Marc, auteur de la technique de la vibration.

Les principales figures dont il est question dans cet article peuvent être visualisées et utilisable directement, en ouvrant ce lien (dans une nouvelle fenêtre). Il y a quatre classeurs, pour chacun des les onglets 1, 2, 3 et 4

1. Géom Analytique 3D

1. Géométrie analytique 3D usuelle dans un environnement 2D+

L’argument du calcul est partiellement vrai, bien entendu, chacun a les arguments en tête pour cette affirmation, mais partiellement seulement, car dans de nombreuses situations « scolaires », on peut faire tous les calculs que l’on veut. Ce premier onglet est rédigé pour montrer des exemples (et les donner à télécharger) que j’ai été amené à construire pour illustrer mes propres cours de géométrie en L2 et L3. Certains exemples - au moins dans leur aspect « figure prête à l’emploi » peuvent être utilisés en géométrie analytique au lycée.

En pratique, les points de base sont donnés, ou encore se déplacent dans des plans donnés. Alors on a toujours la possibilité de calculer les coordonnées de ces points en manipulation directe et faire les calculs associés.

Figures de cet onglet en ligne (ouvrir dans une nouvelle page)

Exemple 1 : équation cartésienne d’un plan

Dans l’exemple ci-dessous, I, J, K sont sur des arrêtes d’un cube, autrement dit sur 3 droites connues. Les coordonnées de I, J, K sont immédiates, donc une équation cartésienne de IJK également.

On a de plus illustré que l’on peut connaitre les coordonnées d’un point du plan (IJK) en passant par les coordonnées barycentriques de IJK à partir d’un exercice vu en cours (nous sommes en L2 de maths, avec de la géométrie affine au programme) :

Soit IJK un triangle du plan, M un point du plan. La parallèle à (IJ) passant par M coupe (JK) en U et celle à (IK) passant par M coupe (JK) en V.
Alors M est barycentre de (I,$\bar{UV}$), (J,$\bar{VK}$), (K,$\bar{JU}$)

On notera que les nombres décimaux rencontrés ne correspondent pas à ce que l’on trouve dans les exercices usuels. On peut alors ajouter une possibilité de magnétisme afin que les points I, J, K aient des coordonnées particulières (ici demi-entières), ce qui produit des équations de plan ... plus canoniques ...

Dans le cours de géométrie affine, on ne calcule pas - et ne construit pas - le vecteur normal, cette partie de la figure est réservée au cours de géométrie analytique euclidienne.

Illustrations dans une situation plus complexe

On fait la même chose avec des points non plus sur des droites données mais dans des plans donnés. Les coordonnées de ces points de base restent encore faciles à calculer. Les points sont aimantés sur les faces du cube, ce qui donne des équations de plan en entiers.

a) cas où la section plane est un pentagone

b) cas où la section plane est un hexagone


Exemple 2 : tétraèdre orthocentrique

Si dans le plan euclidien, trois point ont un orthocentre, ce n’est plus vrai pour 4 points de l’espace. Il existe plusieurs caractéristiques du tétraèdre orthocentrique, l’une d’elles étant que le projeté orthogonal d’un sommet sur le plan de la face opposée soit l’orthocentre du triangle. Les calculs inclus dans les figures précédentes permettent de construire les hauteurs d’un tétraèdre, on voit qu’a priori ces hauteurs ne sont pas coplanaires (se voit mieux en manipulant le tétraèdre)

Deux points de vue de la même configuration

On illustre ensuite qu’elles sont concourantes quand la projection de A est sur l’orthocentre du triangle BCD.

Remarque : le projeté orthogonal étant dans le plan du triangle (pour être correctement placé dans l’espace), ce n’est pas un point libre, il ne peux donc pas être aimanté.

Exemple 3 : perpendiculaire commune à deux droites

Cette figure a été faite par deux étudiantes de M2 (Stéphanie Wai-Hai et Loredana Saunier) dans leur UE TICE. Dans le cadre d’un exposé, elles ont choisi comme thème de travailler la 3D de CaRMetal - le logiciel avait été vu en TP mais pas son module 3D. Elles avaient à faire plusieurs figures de lycée, pour présenter l’environnement aux autres étudiants, ainsi que la figure suivante, en redécouvrant tout ce qui précède (tous les calculs sont accessibles dans la figure) :

Illustration dans deux configurations différentes

2. La 3D dans la 2D+ en mouvement

2. Retrouver la 3D dans de la 2D en mouvement

On voit bien que les méthodes utilisées dans les trois exemples précédents sont les mêmes, qu’elles peuvent être partiellement automatisées avec des macros : par exemple une seule hauteur a été construite pour le tétraèdre, puis le résultat transformé en macro, et appliqué aux trois autres.

Mais d’un autre côté on reste toujours sur des cas particuliers (les points de base sont sur des droites ou des plans souvent spécifiques) assez difficilement généralisables sauf à définir des procédures très précises pour faire les figures, ce qui pourrait être une option.

Jérôme Caré a développé une réflexion tout à fait différente, basée intrinsèquement sur la géométrie dynamique, c’est-à-dire en utilisant le mouvement des figures. Son idée est que si on ne peut connaître les coordonnées 3D d’un point à partir de la représentation plane de l’espace à l’écran, on peut toutefois trouver ces coordonnées à partir de cette même figure en mouvement, et donc à partir d’un mouvement du trièdre de référence.

Il a donc développé cette méthode, en octobre 2009. Au départ il pensait avoir « une bonne approximation », puis Pierre Marc Mazat a montré que selon le mouvement, on pouvait avoir les valeurs exactes. Mais en pratique, la première macro produite à cette époque donnait des résultats avec une précision de l’ordre de 0,01, ce qui était insuffisant. Autour des vacances suivantes (juillet 2010), le sujet est relancé par Pierre-Marc Mazat, et, après un échange de mails conséquent, cela a aboutit à deux contributions sur le forum.

• celle de Jérôme Caré, faite pour des données statiques, qui reprend et améliore sa propre démarche : une rotation unique du trièdre pour une valeur unique des coordonnées d’un point dans l’espace.

• celle de Pierre-Marc Mazat, sur la même idée originelle, mais plus sophistiquée, et donc plus lourde, qui consiste à organiser un mouvement imperceptible du trièdre pour avoir, (plus ou moins) en continu, les coordonnées des points à l’écran, et donc de pouvoir faire des constructions avec, éventuellement.

Ces deux contributions sont disponibles dans ce post, la première date du 30 juin. La seconde du 31 juillet.

Dans cette partie nous disons un mot succinct de la première méthode. La partie suivante sera consacrée à la vibration du trièdre.

Figures de cet onglet en ligne (ouvrir dans une nouvelle page)

Tout d’abord l’utilisation du script de Jérôme : sur une figure donnée, on lance le script « Coordonnées3D », on clique sur un point, le trièdre fait une rotation (et revient à sa position initiale) et le script affiche les coordonnées trouvée. Voici l’exemple proposé dans le fichier téléchargé (montage pour les deux étapes sur une seule illustration).

Obtention des coordonnées d’un point par une rotation instantanée du trièdre

Si on fait les calculs dans ce tétraèdre, les coordonnées de A sont $x_A=\frac{2}{\sqrt{3}}$, $y_A=-2$ et $z_A=\sqrt{\frac{2}{3}}$, ce qui correspond aux valeurs numériques que donnent le script.

Pour appliquer ce script il faut soit travailler sur la figure proposée avec le script, en supprimant le tétraèdre, soit effectuer deux légères modifications dans l’environnement de base de la figure vierge de l’espace, comme indiqué dans le script :

à savoir, créer un point W n’importe où (même en 2D cela n’importe pas, il faut juste qu’il s’appelle W), et modifier l’angle Phi du trièdre (soit l’expression E10), expression que l’on rend visible en cliquant sur la baguette magique de la palette édition, en ajoutant juste un +d(x(W)) comme ceci :

Ainsi, avec une intervention minimale sur l’environnement, on a accès aux coordonnées numériques 3D des points que l’on a construit (points sur droite, point sur plan. Ce sont des résultats statiques mais cette situation correspond bien à un grand nombre de situations scolaires du lycée.

Autre travail en 3D du même auteur

Avant de détailler la seconde technique, signalons que Jérome Caré a poursuivi lui aussi dans une autre voie, avec un travail sur des points de coordonnées 3D (ie dont on conserve leurs coordonnées), en construisant un ensemble de scripts objets cohérents, directement utilisable en classe. Ci dessous confirmation en direct, avec ces outils, des résultats d’un étudiant lors d’un exercice de géométrie analytique.

Il faut bien entendu utiliser son propre script de point 3D pour que les autres scripts fonctionnent sur ces points.

Téléchargement des scripts sur ce post. Prendre la version 3 du 28 aout, accompagné d’une documentation de 5 pages (visible seulement si on est inscrit, mais téléchargeable en fin d’article) :

Ce visuel est l’occasion de signaler que Jérome a été le premier à faire un CarScript objet, qui plus est, avec un interactive input pour la saisie des arêtes, pour les patrons du cube, puis, le lendemain, les patrons du dodécaèdre interactifs : on peut construire les 43380 patrons du dodécaèdre en cliquant sur ses arêtes.

3. Le trièdre vibrant

3. Et lui ajouter une vibration permanente

L’idée de mouvement unique du trièdre pour avoir les coordonnées d’un point pour une instanciation de la figure, invite à réflexion sur les possibilités d’étendre le procédé pour avoir en permanence les coordonnées d’un point, éventuellement en mouvement. Nous allons voir que pour obtenir cela, la procédure se complexifie.

A. Commençons par un exemple

Dans les onglets 1.1 et 1.2 de ce classeur (à ouvrir dans une nouvelle fenêtre), la question est de savoir quelles peuvent être les coordonnées d’un point M donné.

Pour cela, il est proposé de lancer un script qui se charge automatiquement de mettre en place un mécanisme de vibration du repère. Le script de la version 3.5 de CaRMetal a été conçu de manière à limiter au plus simple l’action de l’utilisateur, et cela est encore plus vrai pour le script de la version 3.6 (puisqu’il n’y a plus qu’à cliquer sur deux points et d’en d’animer un troisième). Cette simplicité d’utilisation ne reflète pourtant pas le travail d’implémentation, qui a tout de même demandé quelques jours de recherches et de réflexion ! En voici la conception détaillée.

B. Narration de la recherche

Étant un peu occupé à préparer mes tous premiers cours de lycée à l’époque de la tentative de Jérôme, j’ai regardé les échanges électroniques avec un peu de distance, mais toujours d’un œil curieux. Une fois l’année scolaire presque achevée, je me suis repenché sur la première figure, de façon à comprendre les balbutiements de la démarche de Jérôme. Sa toute première formule était la suivante :

$z_M=-\frac{dz}{2\sin\theta\sin\frac{d\theta}{2}}$

Cette formule est alors un petit mystère, et il s’agit bien sûr d’essayer de la comprendre avant de regarder la suite. Voici les quelques lignes de calculs qui ont tout déclenché, mais avant, notons que ce que Jérôme appelle $dz$ correspondait en fait à un $dy$.

$dy = y_1 - y_2 = z_M\cos\theta_1 - z_M\cos\theta_2 = -2z_M\sin\left( \frac{\theta_1+\theta_2}{2} \right) \sin\left( \frac{\theta_1-\theta_2}{2} \right)$

Explication de y = z cos(theta)

Si l’on note $(\overrightarrow{Ou} ;\overrightarrow{Ov})$ le repère du plan de CaRMetal, ce que l’on voit à l’écran peut être représenté comme sur la figure de gauche. Mais il suffit de regarder sous un autre angle (figure de droite) pour comprendre immédiatement d’où vient cette formule.
M est un point de l’axe $\overrightarrow{OZ}$ et m son projeté orthogonal sur l’axe $\overrightarrow{Ov}$.


C’est à dire, en notant $d\theta = \theta_1-\theta_2$ :

$z_M = -\frac{dy}{2\sin\left( \frac{\theta_1+\theta_2}{2} \right) \sin\left( \frac{d\theta}{2} \right) }$

Cette formule, très proche de celle initialement donnée par Jérôme, s’avère d’une stabilité remarquable puisque, la précision d’affichage de CaRMetal étant de 12 décimales, seule la dernière saute de temps en temps. La ressemblance s’arrête à cette formule car la suite diverge très rapidement vers une toute autre conception.

Le résultat de l’application de cette formule peut être vu dans l’onglet 2 de ce classeur (c’est toujours le même depuis le début de cet onglet) ; en voici une capture :

La stabilité du calcul de la cote semble alors acquise pour un point de l’axe $\overrightarrow{OZ}$, ce qui est malgré tout assez peu dans un espace en trois dimensions. L’idée est qu’il devrait être possible, en prenant en compte les valeurs des coordonnées bidimensionnelles du point M, ainsi que celles des angles $\theta$ et $\varphi$ avant et après un certain mouvement, de calculer les coordonnées tridimensionnelles de ce même point.

Notons $(\overrightarrow{Ou}, \overrightarrow{Ov})$ et $B’ = (\overrightarrow{OX}, \overrightarrow{OY}, \overrightarrow{OZ})$ les bases bidimensionnelle naturelle et tridimensionnelle émulée de CaRMetal.
En lisant attentivement les formules des coordonnées des points X, Y et Z, on peut en déduire que la matrice de passage de $B’$ à $(\overrightarrow{Ou}, \overrightarrow{Ov})$ est :

$\left(\begin{array}{c}\sin\varphi\\-\cos\varphi\sin\theta \end{array}\begin{array}{c}\cos\varphi\\\sin\varphi\sin\theta\end{array}\begin{array}{c}0\\\cos\theta \end{array}\right)$

Si on note alors $(a ; b ; c)$ les coordonnées d’un point M dans la base $B’$ et $(x ; y)$ les coordonnées de sa projection dans $(\overrightarrow{Ou}, \overrightarrow{Ov})$, on obtient alors le système suivant :

$\left\{ \begin{array}{l} x=a\sin\varphi+b\cos\varphi\\ y=-a\cos\varphi\sin\theta+b\sin\varphi\sin\theta+c\cos\theta \end{array}\right.$

Il est facile de disposer du couple $(x ;y)$ et l’idéal serait de pouvoir inverser ce système... mais inverser une matrice (2x3) est assez difficile...
Il faut alors à tout prix rajouter de l’information afin de pouvoir obtenir un système (3x3), et tenter alors de l’inverser. Voici le résultat de la recherche, assez simple présentée dans sa forme finale, mais qui a noirci une dizaines de pages pendant environ trois jours.

On va faire varier successivement les angles $\theta$ et $\varphi$. Lorsque cela se produit, et d’après les formules précédentes, les coordonnées $(x ;y)$ du projeté varient.
Notons $\varphi_1, \theta_1, x_1, y_1$ les valeurs initiales avant variations des angles.

Commençons par faire varier $\theta$ :

Notons $\theta_2$ et $y_2$ les valeurs après variation de cet angle. (On peut noter d’après les formules que lorsque $\theta$ varie, l’abscisse de la projection ne varie pas.)
On obtient alors :

$y_2-y_1=-a\cos\varphi_1(\sin\theta_2-\sin\theta_1)+b\sin\varphi_1(\sin\theta_2-\sin\theta_1)+c(\cos\theta_2-\cos\theta_1)$

Faisons maintenant varier $\varphi$ :

Les valeurs actuelles de $\varphi, \theta, x, y$ sont respectivement $\varphi_1, \theta_2, x_1, y_2$.
Notons $\varphi_2, \theta_2, x_2, y_3$ les valeurs après variation de cet angle.
On obtient alors :

$y_3-y_2=-a(\cos\varphi_2-\cos\varphi_1)\sin\theta_2+b(\sin\varphi_2-\sin\varphi_1)\sin\theta_2$

Et :

$x_2-x_1=a(\sin\varphi_2-\sin\varphi_1)+b(\cos\varphi_2-\cos\varphi_1)$

L’équation

Les trois égalités obtenues précédemment sont linéaires en a, b et c, profitons-en pour obtenir ce merveilleux système (3x3) :

$\left(\begin{array}{ccc} y_2-y_1\\ y_3-y_2\\x_2-x_1 \end{array}\right)=\left(\begin{array}{ccc}-\cos\varphi_1(\sin\theta_2-\sin\theta_1)&\sin\varphi_1(\sin\theta_2-\sin\theta_1)&\cos\theta_2-\cos\theta_1\\-(\cos\varphi_2-\cos\varphi_1)\sin\theta_2&(\sin\varphi_2-\sin\varphi_1)\sin\theta_2&0\\\sin\varphi_2-\sin\varphi_1&\cos\varphi_2-\cos\varphi_1&0\end{array} \right)\left(\begin{array}{ccc}a\\b\\c\end{array}\right)$

Il ne reste plus qu’à résoudre le système, ce que sait très bien faire Maxima... (les formules donnant les solutions sont reproduits un peu plus bas)

L’utilité des CaRScripts

Ces calculs montrent qu’il est possible d’obtenir la valeur exacte des coordonnées tridimensionnelles à partir d’un mouvement du trièdre engendré par une variation des angles $\theta$ et $\varphi$. Il s’agit donc d’écrire un script permettant de réaliser les étapes suivantes :
 récupérer les valeurs de $\varphi, \theta, x, y$
 engendrer une variation sur $\theta$ et récupérer les valeurs de $\theta$ et $y$
 engendrer une variation sur $\varphi$ et récupérer les valeurs de $\varphi$, $x$ et $y$
 calculer les coordonnées et afficher les résultats

Mais très vite, un problème fait son apparition : si le point désigné est un point sur objet que l’utilisateur déplace, les coordonnées ne sont pas mises à jour automatiquement et il faut alors relancer le script pour refaire tous les calculs... L’idée est alors d’entretenir les variations des angles, c’est à dire implémenter une vibration permanente du trièdre. Cette vibration doit de plus, afin que l’utilisateur ne finisse pas épileptique, être imperceptible. Cela se fait sans trop de difficultés en encapsulant le script précédant dans une boucle sans fin (ou presque...), comme le montre la capture suivante :

Cette implémentation a quelques effets catastrophiques avec une version 3.5.1 de CaRMetal tournant sous Windows. En effet, des tentatives de construction pendant l’itération de la boucle infinie se soldaient le plus souvent par un plantage du logiciel (depuis la version 3.6, ce bug est corrigé). Il faut donc trouver un autre moyen d’entretenir la vibration du repère, le CaRScript étant relégué à seulement placer les expressions dans la figure. Cette vibration devant être maintenant produite par la figure elle-même (quelle autre solution y avait-il ?), il faut trouver un moyen de récupérer toutes les valeurs de $\theta, \varphi, x, y$ de façon interne au logiciel. Voici comment :
 $\theta$ ayant varié une seule fois, la valeur de $\theta_2$ est donnée par l’expression E11 de CaRMetal, tandis que la valeur de $\theta_1$ est donnée par old(E11)
 $\varphi$ ayant varié une seule fois, la valeur de $\varphi_2$ est donnée par l’expression E10 de CaRMetal, tandis que la valeur de $\varphi_1$ est donnée par old(E10)
 $x$ ayant varié une seule fois, la valeur de $x_2$ est donnée par l’expression x(M) de CaRMetal, tandis que la valeur de $x_1$ est donnée par old(x(M))
 $y$ ayant varié deux fois, la valeur de $y_3$ est donnée par l’expression y(M) de CaRMetal, tandis que la valeur de $y_2$ est donnée par old(y(M)) et enfin (CaRMetal est vraiment un logiciel magique), la valeur de $y_1$ est donnée par old(old(y(M))). (On peut apercevoir cette dernière dans la capture suivante, ligne 7.5)

Le CaRScript devient alors le suivant, prêt à injecter les bonnes formules dans trois expressions préparées à l’avance :

Il n’est pourtant ici pas encore question d’entretenir la vibration directement depuis la figure. Le premier essai a ce sujet consister à utiliser un bouton poussoir, permettant en deux clics successifs de faire varier successivement $\theta$ et $\varphi$. Dans l’onglet 3 de ce classeur (oui, oui je sais, c’est encore le même), on peut tester cette variation manuelle. Première remarque : les données affichées sont correctes uniquement lorsqu’un nombre pair de clics a eu lieu. Si on s’arrête sur un nombre impair, les données calculées sont fausses, voire aberrantes !

Les résultats après 2 clics (à gauche) et après 3 clics (à droite)

Mais avant de s’occuper de l’affichage exclusif des bonnes valeurs, il faut trouver un moyen d’entretenir une vibration permanente du repère.

Le temps au service de CaRMetal (non non, ce n’est pas le contraire !)

L’idée est d’introduire une variable, notons-la u qui prendra successivement trois états :
 l’état 0, ou état initial, dans lequel les valeurs des angles sont $\theta_1$ et $\varphi_1$
 l’état 1, dans lequel les valeurs des angles sont $\theta_2$ e t$\varphi_1$
 l’état 2, dans lequel les valeurs des angles sont $\theta_2$ et $\varphi_2$

Les formules définissant les expressions E10 et E11 deviennent alors les suivantes.

En effet :
 lorsque u = 0, les expressions booléennes (u==1||u==2), ainsi que (u==2) sont fausses, c’est-à-dire valent 0. Aucune quantité n’est ajoutée aux expressions E10 et E11 de base ;
 lorsque u = 1, seule la première expression est vraie, c’est-à-dire possède la valeur 1, ce qui provoque une variation de l’angle $\theta$ ;
 lorsque u = 2, les deux expressions sont vraies et c’est au tour de l’angle $\varphi$ de varier.

On peut résumer les états successifs de toutes les valeurs dans le tableau suivant, qui se complète en fait de bas en haut, puisque l’état le plus récent est celui où u = 2.

Valeurs de u Valeurs des angles Expressions CaRMetal associées aux angles Valeurs des coordonnées Expressions CaRMetal associées aux coordonnées
0 $\varphi_1 ;\theta_1$ old(E10) ; old(E11) $x_1 ;y_1$ old(x(M)) ; old(old(y(M)))
1 $\varphi_1 ;\theta_2$ old(E10) ; E11 $x_1 ;y_2$ old(x(M)) ; old(y(M))
2 $\varphi_2 ;\theta_2$ E10 ; E11 $x_2 ;y_3$ x(M) ; y(M)

Remarquons tout de suite que c’est dans le seul état 2 de la variable u que les formules ci-dessus donnent les valeurs exactes des coordonnées 3D (avant cet état, toutes les données ne sont pas connues). On vient de résoudre au passage le problème d’affichage des bonnes valeurs puisqu’il suffira de les afficher au seul moment où u = 2, et sinon de garder l’ancienne valeur affichée.

Pour l’instant, toujours pas de vibration entretenue... Introduisons alors une nouvelle variable (c’est la dernière) : le point Rot, destiné à tourner sur un cercle. L’expression définissant u est alors la suivante :

La syntaxe signifie que si le point Rot est en mouvement et que la valeur de u est strictement inférieure à 2, alors la valeur de u est incrémentée de 1, sinon la valeur de u est remise à 0. Cela permet à u de boucler indéfiniment sur les valeurs 0, 1, 2.

Le CaRSCript final

Celui-ci se décompose en deux parties :
 la partie « mécanique », permettant d’entretenir la vibration continue du repère ;

Voir le script


On pourra porter une attention particulière aux lignes 10 et 11. Pourquoi ne pas les voir regroupées en une seule en écrivant tout simplement :

Expression(« u », "if(d(Rot)>0&&u<2,u+1,0)", "x_o", "y_o").

Tout simplement car cette expression devant être récursive, sa création ne l’initialise pas pour la récursivité. Il faut donc procéder en deux temps : création et initialisation puis définition récursive.

On notera aussi que ce script est utilisable directement dans une figure non préparée (ce qui est un plus en matière d’ergonomie) : le script se chargeant tout seul de modifier les expressions nécessaires.


 la partie création des expressions et injection des formules

Portons une attention à la ligne 27 (ou 31 et 35) : la formule signifie que si le point Rot est à l’arrêt, la valeur est définie à 0 (la vibration n’ayant plus lieu, les calculs s’arrêtent) ; sinon, si u = 2, la valeur est celle de l’expression x1(« +p+ »), sinon la valeur est celle de l’expression elle-même.

De même que précédemment, on pourra regarder les lignes 26 et 27, ainsi que 30 et 31 ou bien 34 et 35, où il est indispensable de dissocier initialisation d’une expression et définition récursive.

On notera aussi une petite correction dans le calcul des coordonnées d’un point appartenant à l’axe (OZ), il y avait un petit bug. Dans ce cas, les deux premières coordonnées sont égales à 0 ; quant à la cote, une autre formule (plus facile) permet de la calculer directement.

Conclusion

La démarche décrite ici est théoriquement applicable à tout logiciel de géométrie dynamique, puisqu’il suffirait de récupérer les valeurs des variables, faire effectuer les calculs par un bon logiciel. Le fait est que seul CaRMetal nous donne la possibilité d’effectuer ces calculs en continue : cela est rendu possible par l’implémentation de la fonction old(), qui nous permet de connaître l’état d’un variable à un état antérieur.

4. Premières applications

Ayant un cours de géométrie affine à illustrer en L2 de Maths, j’ai été amené à utiliser plusieurs reprises les scripts sur le trièdre vibrant de Pierre Marc. Par rapport aux figures du premier onglet, il est évident que l’investissement est largement moindre puisque l’on ne détermine aucune coordonnée des points engagés.

Figures de cet onglet en ligne (ouvrir dans une nouvelle page)

4a. Équations cartésiennes de plan

Soient trois points de l’espace I, J, K et trois points A, B, C du plan (IJK). Pour illustrer que trois points du plan donnent une équation cartésienne du plan identique (ie à proportionnalité prés) à une équation de (IJK), on se propose d’utiliser une figure comme celle-ci :

Pour faire cette figure on utilise une macro qui à partir des coordonnées de 3 points, donnent des coefficients a, b, c, d d’une équation du plan. C’est la même macro que dans le premier onglet. La différence réside dans le fait que nous n’avons pas à calculer les coordonnées des points A, B, C dans le plan (IJK) : le script de Pierre Marc ... s’occupe de tout, même si les coordonnées des points I, J, K, pris sur des arêtes d’un cube, seraient élémentaires à calculer.

Ci dessus on n’a qu’une copie d’écran, l’intérêt est bien entendu de manipuler A, B ou C et de déplacer le trièdre.

Proposée en vidéo projection, une telle figure permet de réinterpréter le cours en TD. En effet, les calculs théoriques des preuves canoniques, pourtant« élémentaires », ne font pas toujours sens pour les étudiants. En particulier faire verbaliser sur les égalités des 4 rapports et faire anticiper ce qu’il arriverait à ces 4 rapports si le plan (ABC) était parallèle à (JK) aide à construire de bonnes images mentales associées à ces calculs.

4.b Thalès généralisé

Dans le même registre, voici une figure sur le théorème de Thalès dans l’espace. Cette figure, même si elle est en définitive tout aussi élémentaire que la précédente, est assez spectaculaire à l’utilisation. Son utilisation en cours est un exemple de ce qui a été dit en introduction : la manipulation directe en 3D est un accélérateur de conceptualisation des concepts géométriques que l’on illustre.

Remarque : à l’ouverture de la figure, soit dans le navigateur soit sur son propre poste, généralement les points de base « dans les parallélogrammes » sont en fait sur les contours, il suffit de les prendre pour les amener strictement à l’intérieur.

Perspectives

La manipulation directe de ces figures construites dans un trièdre vibrant invite à plusieurs commentaires techniques :

• pendant la manipulation des points ou du trièdre, dans cette version, les calculs ne sont pas maintenus. Ils reprennent sens quand on lâche la souris.
• les actions scripts de la nouvelle version 3.6 devraient pouvoir permettre une modification de cet aspect de la manipulation.
• mais d’autres pistes sont aussi actuellement explorées (à suivre) ...

Quelques remarques :

Il est étonnant de voir à quel point une vibration du repère permet de récupérer, de manière dynamique, toute l’information 3D à partir des informations récupérées sur trois projections.
En somme, il est possible de créer dynamiquement une troisième dimension à partir de trois images planes correctement disposées... tout est dans le « correctement » !

Petites questions philosophiques :
 quel est le nombre minimum d’images permettant de récupérer l’info 3D ?
 quelle(s) information(s) pourrait-on récupérer avec des images 3D « correctement » agencées ? Quel serait le nombre de celles-ci ?
 peut-on créer tout un univers à partir de vibrations d’un espace de dimension inférieure ? Quelle serait la dimension de cet espace minimaliste ?