(english)
Le sujet n’est pas nouveau : Éric Hakenholz - le découvreur de cette possibilité - a déjà écrit un article dynamique sur la question en mai 2005, mais nous voulions profiter de l’indexation des articles du nouveau site de l’IREM de La Réunion pour réactualiser la mise en relief de cette extraordinaire possibilité de CaR et de CaRMetal. Pour ne pas faire double emploi avec l’article original, nous allons avoir une approche un peu différente, en particulier utilisant des outils qui n’existaient pas dans CaRMetal en 2005.
Précisons toutefois que, tout comme on peut prendre un avion sans tout savoir de la combution des moteurs à réaction, on peut très bien utiliser la macro « curseur circulaire » sans vouloir savoir comment elle fonctionne, c’est justement tout l’intérêt des macros.
Les fonctions sum et d
CaRMetal dispose, depuis le noyau de CaR, de deux fonctions, implémentées par René Grothmann donc, tout à fait inédites.
La fonction d renvoie le déplacement d’un objet par rapport à sa position antéreure. Ainsi d(A) renvoie le déplacement de A à la souris. La fonction sum somme les valeurs d’une variable numérique. Elle a deux paramètres a et k : sum(a,k) somme les valeurs de a tant que k est non négatif. Une valeur de k négative réinitialise la fonction à 0.
Voici une première exploration. Voir en particulier que c’est le relâchement de la souris qui remet d à 0. Pour des raisons de continuité kinesthésique du geste, on peut ainsi laisser A sur place et que d reste non nul.
<carmetal|doc=88|largeur=520|hauteur=164>
La syntaxe est seulement
la variable VarM (à gauche, libellée d(A)) : d(M)
la variable a (au centre, libellée compteur) : if(varM>0 ;a+1 ;0)
la variable s (à droite, libellée somme) : sum(a ;0)
On aura vite remarqué que la somme ne peut qu’augmenter. Mais il suffit d’une petite modification de la variable s pour permettre de la réinitialiser
dans la figure suivante, on fait cette modification
la variable s (à droite, libellée somme) : sum(a ;-d(InitS)
où initS est un point
La somme est alors remise à 0 dès que l’on touche au point InitS
<carmetal|doc=89|largeur=524|hauteur=178>
On peut sophistiquer une éventuelle mise en place d’un compteur comme ci-dessous
la variable associée au bouton MArche/Arrêt s’appelle Marche
la variable associée au curseur s’appelle Vite
la variable a du curseur devient : if(Marche==0 ;0 ;if(varM>0 ;a+Vite ;a))
<carmetal|doc=90|largeur=610|hauteur=242>
La manivelle d’Éric
Nous allons maintenant enrouler la droite sur le cercle, et compter les tours, autrement dit, nous souvenir du nombre de tours. C’est donc une autre façon d’intégrer l’histoire de la manipulation de l’utilisateur. Ainsi les fonctions d et sum permettent une autre mémorisation du temps que l’utilisation des variables récursives.
Avant de manipuler la figure elle-même il peut être intéressant de détailler le fonctionnement de la variable principale, nommée compte tour, en ajoutant des variables intermédiaires. En voici d’abord trois copies d’écran.
Dans la première nous approchons de 360°, le point M, proche de l’origine des angles s’apprête à traverser à nouveau l’origine. Le différentiel d’angle est naturellement faible, mais rapporté à 360° il est petit, proche de 0 en fait.
Quand on franchit l’origine, l’angle mesuré par le logiciel devient nul.
Et c’est là que dans les logiciels classiques de géométrie dynamique, on regrette de ne pouvoir compter les tours...
Le différentiel d’angle devient alors très grand en valeur absolue, car il est proche de -360° et donc son quotient par 360 devient proche de -1. Ainsi en sommant l’opposé de l’arrondi, on compte le nombre de tours.
Une fois l’origine franchie, les valeurs du différentiel rapporté à 360° deviennent à nouveau trés petites sauf pour le prochain franchissement de l’origine.
Notons déjà tout de suite que le procédé est bien algébrique : si on franchit l’origine ans l’autre sens, les tours sont décomptés. En effet partons d’une valeur proche de 0 en allant dans le sens des aiguilles d’une montre :
Au franchissement de l’origine l’angle mesuré devient très grand et donc le différentiel rapporté à 360° devient proche de 1 (et non pas de -1). Son opposé va donc bien retrancher 1 au nombre de tours :
Voici maintenant la figure pour vérifier soi-même ces observations
<carmetal|doc=96|largeur=697|hauteur=379>
La figure est celle produite par la macro standard du logiciel. La valeur actuelle est l’angle rapporté à la valeur d’un tour. La macro renvoie surtout le nombre de tours. Les autres expressions ont été ajoutées à des fins didactiques comme expressions intermédiaires dont le comportement vient d’être détaillé. On a :
angle : a(I ;O ;M)
dangle : d(a(I ;O ;M))
div (libellée d(angle)/360) : dangle/360
arrondi : -round(div)
Tout cela se résume dans la seule variable du compte tour dont l’expression est :
sum(-round(d(a(I ;O ;M))/360) ;0)
Et cette expression, mélange des fonctions sum et d, permet donc de produire l’uniformisation du cercle en géométrie dynamique, soit, en pratique, la prise en compte d’angles supérieurs à 360° à travers le nombre de tours.
Un exemple d’application
Si on sait compter les tours sur un cercle on sait aussi le faire sur une ellipse, et même une ellipse dans l’espace. On peut donc compter les tours d’un point sur un solide de révolution.
Dans la figure suivante, on a représenté un triangle sur la pseudosphère de Beltrami (le premier modèle de géométrie hyperbolique découvert en 1868). Avec ce procédé, on peut donc faire tourner les points de la pseudosphère sur plusieurs enroulements ce qui correspond à prendre plus de points du plan hyperbolique associé.
<carmetal|doc=98|largeur=697|hauteur=558>
Pour réaliser cette figure il faut prendre quelques précautions et, en particulier, avoir des macros qui renvoient aussi le numéro de la feuille des milieux pour construire les médianes multifeuilles.
La figure suivante est plus lourde à charger (et à manipuler)... mais elle est téléchargeable.
Il s’agit d’une surface pseudosphérique de type hyperbolique (avec deux points à l’infini du plan hyperbolique alors que la pseudosphère est de type parabolique avec un seul point à l’infini). Étant donné un triangle ABC sur cette surface, on a construit la figure de Malffati - trois cercles deux à deux tangents et tangents aux côtés du triangle.
Cette figure est multifeuille, c’est-à-dire que les points peuvent s’enrouler sur la surface. Alors non seulement les côtés s’enroulent, mais aussi les cercles...
<carmetal|doc=99|largeur=618|hauteur=631>
Note technique
Pour des raisons de fluidité en ligne, les côtés du triangle sont des lieux à 200 points.
Après téléchargement, on aura intérêt à affiner ces lieux à 500 ou 1000 points pour un enroulement sur plusieurs feuilles plus satisfaisant.
Compléments
L’article initial d’Éric Hakenholz, découvreur du procédé sur le site CaRZine.
Un diaporama CaRMetal sur la pseudosphère est disponible dans les galeries des utilisateurs de CaRMetal : choisir le diaporama Beltrami. Quelques figures sont lourdes ... mais comme avec tous les diaporamas de cette galerie, tout est téléchageable.
Plus d’information techniques sur la pseudosphère (avec figures en Cabri-géomètre)
Commentaires