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.

Que devient une tortue plongée dans un champ dynamique ?
L’exemple de la tortue de DGPad

La tortue de DGPad est dynamique, plongée dans un environnement de sortie dynamique et en manipulation directe. Cela pourrait être anecdotique de construire une tortue dynamique. Nous vous proposons de voir qu’il n’en est rien, bien au contraire.

Article mis en ligne le 11 août 2016
dernière modification le 1er avril 2021

par Yves Martin

Une tortue dans un environnement de géométrie dynamique ? Qui réagit - et se programme - en temps réel ? Pour quoi faire ?

On se propose dans cet article de montrer que cette tortue ouvre des champs d’investigation - géométriques et algorithmiques - surprenants, tout à fait nouveaux.

  • En 2D elle va être l’occasion de faire interagir en temps réel, une démarche mathématique et une pensée algorithmique - ou l’inverse selon le cas - de revisiter de manière constructive des propriétés géométriques usuelles, et mettre en oeuvre, de façon un peu surprenante des démarches algébriques.
  • En 3D, son dynamisme et ses outils permettent de revisiter l’espace et ses objets communs, véritablement autrement. À tel point que l’on pourrait repenser l’enseignement de la géométrie 3D en lien avec la programmation visuelle dynamique. Bienvenue dans ce monde si particulier de la tortue dynamique, une tortue à la fois ludique, créative, et conceptualisante.

Cet article peut être librement diffusé et son contenu réutilisé pour une utilisation non commerciale (contacter l’auteur pour une utilisation commerciale) suivant la licence CC-by-nc-sa

Avertissement

L’article comporte un nombre considérable d’images, que SPIP peine parfois à télécharger. Cela se traduit par des cadres vides (sauf, semble-t-il, avec Mozilla Firefox, qu’il est préférable d’utiliser pour cet article).
Dans le cas de cases vides, il existe une parade simple : télécharger l’article deux ou trois fois successivement (davantage si nécessaire...). Les images sont alors mises en cache et l’article est complet à l’affichage.

Ajout mai 2017

Pour les lecteurs travaillant sous environnement OS X ou sous iOS, cet article est partiellement repris - et simplifié pour partie - dans un iBook gratuit que l’on peut télécharger sur l’iBook Store soit en cherchant avec les mots clés « Blockly - tortue - DGPad », où aller directement à cette adresse

http://itunes.apple.com/fr/book/id1231386212

Après un large tour d’horizon des enjeux et des possibilités de la programmation visuelle en géométrie dynamique proposé en mai dernier, nous abordons ici un deuxième volet du Blockly de DGPad, sa tortue, et son immense diversité d’utilisations.

Qu’est ce qu’une tortue dynamique ?

Les tortues « Logo »

Les tortues usuelles ont cette caractéristique d’être à exécution différée : que ce soit en XLogo, ou le récent GéoTortue par exemple, mais encore dans les logiciels de programmation visuelle, (Scratch, Snap, Sofus ou même Tickle), on écrit un programme, éventuellement avec des procédures, puis on exécute le programme.

L’intérêt didactique est clair : en ralentissant l’exécution du programme, on peut voir le programme se dérouler séquentiellement. Cela donne une représentation mentale temporelle des concepts engagés (par exemple la récursivité). Cela permet aussi la correction du code.

On est d’ailleurs tellement formaté - les anciens du moins - à ce mode de fonctionnement, depuis des années, que toute modification de ce « rapport à la tortue » peut être perçu dans un premier temps comme un obstacle à l’appropriation d’un nouvel outil. Et pourtant, fondamentalement, ce n’est qu’un mode de fonctionnement possible, mis en œuvre historiquement parce que à l’origine, on programmait vraiment une tortue physique, puis généralisé quand les tortues physiques ont été en voie d’extinction dans le milieu scolaire (elles renaissent maintenant, très améliorées, sous forme de robots divers et variés, dont les drones).

Les tortues dynamiques

Placée dans un environnement dynamique, à la fois d’exécution et de sortie, une tortue ne peut être que dynamique, c’est-à-dire « en temps réel », ce qui peut créer quelques confusions au début, au moins chez les habitués des autres tortues.

Ainsi, avec une tortue dynamique, on ne voit pas un hexagone se construire, ni même la courbe de Koch. Plus précisément, il n’y a aucune possibilité de ralentir la tortue pour voir une exécution pas à pas, au contraire tout est donné d’un coup. Mais parce que « tout est donné d’un coup », le paradigme d’usage de la tortue change : l’utilisateur est d’emblée plongé dans une perception globale de ce qu’il est en train de produire. Il n’y a plus cette notion d’exécution, comme si on avait fait sauter une interface intermédiaire (le runtime) entre le codage et sa sortie graphique, avec deux conséquences immédiates à l’utilisation :
• La possibilité d’explorer plus facilement, instantanément, autour de ce que l’on est en train de faire, car tout est paramétrable, et la trace de la tortue est alors modifiée dès que l’on touche à ces paramètres.
• Et celle de corriger le code en temps réel, comme libéré de l’interfaçage entre l’écriture d’un code et sa mise en oeuvre en sortie graphique.

Et chacun comprend bien, même s’il n’a pas encore touché à une tortue dynamique, que c’est clairement un autre paradigme de la tortue qui est proposé ici. Ce changement fondamental étant acquis, on va faire de la programmation, de manière relativement classique, mais en repère relatif, ce qui change beaucoup de choses en 3D, et simplifie bien les démarches, pour peu qu’on les pense autrement qu’en repère absolu. Une tortue dynamique en 3D est déjà une petite révolution didactique en soi qui mérite que l’on s’y penche sérieusement.

La tortue de DGPad

Eric Hakenholz a donc développé une tortue 2D et 3D. Cette tortue est dynamique, c’est-à-dire qu’elle accepte, pour le traitement de sa trace, des données de la figure, modifiables - typiquement des points bien entendu, mais pas seulement. En particulier la trace de la souris est réactive aux curseurs de la figure : elle est construite en temps réel en fonction de l’état du curseur. En terme de rendu, mais aussi de rapport à l’organisation de la tâche, la tortue fonctionne dans un tout autre registre que ce que l’on a pu rencontrer jusque là.

Pour fixer les idées, si on veut mettre dans une boucle qui répète 4 fois les instructions avancer de 60 pixels et tourner à gauche de 90°, le fait de poser, séquentiellement d’abord le avancer de 60 pixels, va faire que la tortue va avancer de 240 pixels, et c’est seulement en plaçant le tourner à droite que l’on va voir le carré.

Mais on peut aussi les mettre en dehors de la boucle, les placer ensemble, ensuite, les déplacer dans la boucle. Ce qui donne alors, graphiquement

Il ne faut pas négliger les possibilités de surcharge cognitive temporelle - y compris chez les enseignants, l’auteur de l’article n’y a pas échappé sur des situations complexes dans l’espace - où l’on oublie cette règle simple de l’immédiateté de la réaction, en particulier quand il convient aussi de changer d’unité. Mais d’un autre côté, c’est aussi un beau défi que de visualiser ces anticipations locales, et en classe on peut proposer l’explicitation de ce que va faire la tortue lorsqu’on place cette instruction ici ou là. On peut même construire des fiches d’apprentissage autour de cette simple notion d’anticipation.

Dynamique, cela signifie aussi qu’on peut l’orienter vers des points donnés de la figure, disponibles à la manipulation directe, mais aussi que sa position peut être prise en compte dans les programmes. Utiliser la position de la tortue dans un programme, cela peut être de l’arithmétique, mais aussi de l’algèbre si on combine cette position. Là encore, nous allons en déduire des activités originales. Une première illustration est proposée dans la présentation de l’interface, au premier onglet de la première partie de l’article.

Les parties de l’article

1. Généralité sur la tortue - Premières activités de collège.
Cette première partie, par le détail des analyses, et la présentation de nombreux outils, est quasiment un article en soi, centré sur des figures élémentaires 2D proposées dans un contexte scolaire de collège. On y voit différentes techniques simples et souvent nouvelles quant à l’utilisation de la tortue.
2. Quelques activités élémentaires dans l’espace.
Même démarche que la partie précédente, mais consacrée à la 3D. La 3D à la tortue dynamique est une vraie opportunité, même à un niveau élémentaire, pour découvrir et explorer l’espace. Quelques fin d’onglets peuvent être plus centrées sur la pratique de l’enseignant.
3. Polyèdres - Cycles eulériens et hamiltoniens sur les polyèdres réguliers ou semi-réguliers
Nous ne sommes plus dans une utilisation scolaire, mais plutôt dans une appropriation plus experte de la géométrie 3D à la tortue. Cette partie est plus centrée sur l’analyse du code, son l’efficacité, le choix des procédures pour minimiser le code. Cette partie - du style « Galerie de la tortue » peut être réservée à une seconde lecture, mais elle contient aussi les plus belles figures de cet article, dont une figure avec trois patrons du dodécaèdre et une autre avec 5 patrons du ballon de football. Quand la tortue de DGPad est sortie à la mi mai, je ne pensais pas réaliser ces figures deux mois après : cela montre la facilité du traitement de la 3D, de son appropriation, mais aussi la résistance de l’environnement (il y a un bon nombre de procédures). Pour les personnes intéressées par les patrons des semi-réguliers plus complexes, des figures intéressantes sont dans les onglets « Chiralité dynamique » et « Cycles eulériens ».
4. Autres exemples d’activités avec la tortue
Cette partie revient sur des thèmes plus scolaires avec les frises et les pavages, les aspects algébriques. Elle aborde aussi des thèmes moins scolaires utilisés à la fête de la science. La première partie du premier onglet est une « narration de recherche » construite sur un échange de courriels avec l’auteur de DGPad autour d’un questionnement géométrique élémentaire : la projection orthogonale à d’un point sur une droite la tortue.
5. Récursivité avec la tortue
Plus centré sur la programmation bien entendu.

Les quelques 150 figures proposées dans l’article sont manipulables en ligne - en dehors de l’article pour pouvoir consulter le code dans un espace moins limité - et téléchargeables en fin d’article.

Parcourir rapidement l’article pour une première lecture ... puis y revenir

On peut considérer - en terme de temps de lecture - que chaque barre d’onglets est un article en soi. Si on souhaite un tour d’horizon rapide, on peut, dans une première lecture, aller sur

Partie 1 : les onglets Présentation, Spirales, et Modifier un quadrilatère.
Partie 2 : les onglets Cube par 4 carrés et Patrons de cube.
Ces cinq premiers onglets permettent, en peu de temps, de se construire une bonne représentation de que l’on peut faire avec une tortue dynamique. Cela n’empêche pas de poursuivre.
Partie 3 : Icosaèdre et dodécaèdre. La partie 3 peut aussi être réservée à une seconde lecture, néanmoins (et je ne suis pas footeux), la plus belle figure de l’article est peut-être la dernière de l’onglet ballon de foot, avec 5 patrons ... de l’icosaèdre tronqué.
Partie 4 : Retour en géométrie (la première partie sur le pied de la hauteur), Pavages circulaires en lecture rapide éventuellement, et ne pas manquer Aspects Algébriques pour le contenu mais aussi le design des figures.
Partie 5 : une partie plus coup de cœur, tout est mathématiquement beau, mais s’il n’y avait qu’un onglet à regarder en première lecture, choisir la très traditionnelle Fractale de Pythagore à la tortue.

Ceci dit, les autres onglets ont été écrits eux aussi pour être visités, en prenant le temps : en dehors de la partie 5 peut-être, très classique finalement, pratiquement tous les onglets des autres parties contiennent de petites pépites surprenantes en termes de pratique mathématique, de relation à la programmation visuelle, ou d’appropriation personnelle de la 3D en repère relatif (partie 3).

Un minimum d’appropriation de l’interface de DGPad est nécessaire si on veut faire les premières figures d’appropriation en ligne ou simplement manipuler et modifier légèrement les figures terminées et les figures plus techniques. Une présentation de cette interface a été proposée dans la barre d’onglet 2 de l’article précédent sur le Blockly de DGPad Vous pouvez vous y référer, mais dans le bloc suivant, on reprend les principaux gestes à connaître.

Rappels sur quelques gestes de base pour une utilisation efficace des figures en ligne

1. Mode standard et mode consultation

Quand vous ouvrez une figure en ligne par un lien de l’article, vous êtes nécessairement en mode consultation, c’est-à-dire qu’aucun outil n’est sélectionné et que vous ne pouvez pas créer sans le vouloir des points en manipulant une figure - surtout sur tablette, c’est important pour les élèves.

Dans ce mode vous pouvez manipuler la figure, agir sur les points et les curseurs mais pas créer de point ni aller voir le code Blockly d’une trace. Pour accéder au code, il faut être en mode standard. Pour cela, sélectionner la flèche en bas à gauche du tableau de bord (bas de l’écran).

La 3D en mode consultation : dans ce mode, sur ordinateur un clic gauche glisser sur la fenêtre déplace le repère 3D, sur tablette un glisser du doigt suffit, c’est un mode pratique et efficace pour une simple utilisation en 3D. Sinon, en mode standard, il faut 2 doigts sur tablette et un clic-droit glisser convient sur ordinateur pour modifier le repère.

Passage d’un mode à l’autre : quand on n’a pas l’habitude, en 3D on passe souvent sans s’en apercevoir d’un mode à l’autre. Il faut juste y penser.

2. Le tableau de bord

Pour une consultation des figures proposées en ligne, a priori vous n’aurez besoin de n’utiliser que le pointeur standard et l’item d’annulation pour supprimer un point créé par inadvertance.

Pour modifier des scripts de la tortue, il n’y a pas d’accès nécessaire au tableau de bord, sauf si vous voulez faire une figure 3D (voir plus loin), car tout est dans Blockly en fait.

3. Accès à la 3D

Si vous chargez une figure 3D, bien entendu vous êtes d’emblée dans ce mode 3D. Mais si vous voulez faire une figure 3D - un script tortue 3D - il faut pratiquer un minimum de la 3D de DGPad.

Or la 3D de DGPad est dans les macro-constructions. Donc il faut activer le mode macro-construction (icône marteau-clé à molette). Puis :

a - Choisir 3D
b - Dans 3D, choisir Repère 3D,
c - Le logiciel attend que vous choisissiez un point à l’écran, ce point sera le repère 3D de la figure.
d - Pour placer rapidement des points en 3D, le plus simple est de choisir Montrer le sol. Il faut alors re-cliquer sur l’origine du repère.

Pour créer un point on montre le polygone du sol. Un point se crée sur le contour. Pour créer le point à l’intérieur il suffit de lâcher le doigt (ou la souris) quand le doigt ou le pointeur est à l’intérieur du polygone.

Plus sur la pratique de la 3D de DGPad : sur le site de l’IREM de La Réunion ou sur le site de MathémaTICE dans cet article.

4. Créer un curseur et son réglage

Vous pouvez avoir besoin de créer un curseur. Cela se fait tout simplement avec le module expression (icône calculatrice) on donne la valeur minimale (à droite de l’écran) la valeur maximale. L’expression prend alors la forme de trois points d’interrogation. On l’initie alors dans le champ général de l’expression (à environ 1,5 cm de la gauche, pas trop à gauche). Ne pas oublier de valider par le bouton vert.

Choisir le pas du curseur. Cela se fait dans le module inspecteur d’objet (icône roue).

Souvent, avec la tortue, on a besoin d’un curseur à pas entier :

Reprendre une figure et la modifier

Pour un premier contact par quelqu’un qui ne connait pas encore DGPad et serait surtout intéressé par la programmation visuelle dynamique, on peut, dans un premier temps, juste prendre une des figures en ligne et la modifier (supprimer le code de la tortue), cela évite de devoir reconstruire des outils intermédiaires - que ce soit en 3D, ou avec plusieurs curseurs.

Pour plus d’information, et particulier sur les choix d’interface, très spécifiques, voir cet ancien tour d’horizon des possibilités de DGPad. L’article date de 2014 et DGPad a bien progressé depuis. L’article est parfois assez technique. Voir par exemple la partie pour enregistrer en local les figures que l’on voit en ligne. La partie sur les expressions contient des informations de base et d’autres qui, si pour certaines ne sont pas obsolètes, n’ont plus la même pertinence avec les nouvelles possibilités de Blockly. Mais pour une prise en main général, cela reste encore très lisible.

Pour d’autres tutoriaux, voir le Didacticiel de l’IREM de Toulouse, et le site maintenu par Patrice Debrabant], dédié à CaRMetal et DGPad.

fin du bloc sur les rappels autour de DGPad


1. Généralités sur la tortue de DGPad - Premières activités

Présentation générale : les outils classiques de la tortue et d’autres. Exemple du centre de gravité d’un triangle à la tortue. Statut de la trace. Exemples de grandes traces.
Spirales : les spirales arithmétiques et géométriques (Jolygones). Activités élémentaires aboutissant naturellement à s’interroger en classe sur les relations entre l’algèbre et les variables en informatique. Questionnements géométriques sur les spirales produites - Spirale de Pythagore : les procédures comme étapes. Le cercle comme limite de la spirale de Pythagore. Différence avec le cercle « AV 1 TG 1 ».
Hexagones et carrés : exploration sur des manipulations directes du code. Procédures. Variables globales. Itérations.
Polygones réguliers : différents exemples de découvertes par manipulation directe. La rotation effective de figures au curseur.
Transformer un quadrilatère : activités géométriques nouvelles à la tortue dynamique.

Présentation générale

Présentation des outils de la tortue de DGPad

L’interface de base

La tortue étant une composante de l’interface Blockly, on y accède comme comportement d’un point.

L’interface Blockly ouverte, on dispose désormais de 5 onglets pour un point, les trois déjà développés (article précédent) - Appuyé - Déplacé - Relâché - et deux nouveaux, les onglets Tortue, et Expression. C’est toujours l’onglet Déplacé qui est sélectionné par défaut.

Cliquer l’onglet Tortue rend disponible deux nouveaux items dans l’interface Blockly, un item Tortue et un item Textes, disponible seulement dans l’environnement de la tortue.

L’interface est bien entendu celle de Blockly dans DGPad : la fenêtre de travail est transparente. On peut travailler le code et voir en même temps son action. On peut aussi s’arranger pour agir sur les objets de la figure tout en se laissant de l’espace pour modifier le code.

Pour une bonne pratique, déjà pour l’enseignant qui prépare des figures, mais aussi avec des élèves un peu habitués à l’interface (après quelques séances, ou selon la classe) il est judicieux de mettre le code qui fonctionne dans une fonction, même sans paramètre, et réduire le bloc. Avec l’habitude, on peut même travailler directement dans une fonction qui est appelée dans le code principal (que l’on peut ne pas voir). C’est une façon efficace de localiser l’attention sur le code qui est en train d’être produit avec un oeil sur son résultat. En effet, comme on l’a dit, la tortue réagit immédiatement au code produit, donc c’est intéressant d’avoir à la fois le code et son résultat sous les yeux, et ce d’autant plus que l’on voit où est la souris en permanence, ce qui permet d’ajouter les actions.

Le temps réel maintient l’anticipation, mais la rend souvent locale : cela peut être un nouvel outil.

Certains peuvent penser qu’on rentre dans une ère de simple production opérationnelle, que l’on évacue l’anticipation. Pour ma part je suis très sensible à ce sujet, longuement traité dans l’article précédent. L’expérience - pour le moment individuelle, la tortue DGPad est toute nouvelle, au moment de la rédaction de cet article, elle n’a été testée en classe que par le staff de DGPad seulement - est que l’anticipation est déplacée. Elle n’est peut-être plus toujours nécessairement globale, mais elle est toujours présente dans des tâches plus locales. Pour être plus précis
• D’une part, on peut proposer des activités simples mais soit conceptualisante, soit de réinvestissement qui aide à la conceptualisation des savoirs en cours d’acquisition. Dans ce cas, voir la tortue et décider de l’action à effectuer pour la prochaine étape participe de cette démarche de mise en oeuvre et d’appropriation des propriétés engagées.
• D’autre part, en particulier dans l’espace, le fait de voir où en est la souris et dans quel sens, dans un programme - typiquement à la fin d’une boucle - permet d’aller réellement plus loin (anticipation locale) dans sa propre réflexion sur les outils et sur l’espace. Plus simplement encore, tourner la tortue de 45° ou de 90° dans un plan et voir immédiatement l’action que cela produit participe aussi de l’appropriation de l’espace.

La tortue dispose d’outils standards et d’autres plus spécifiques à une tortue dynamique.

Outils standard de mouvement de la tortue

Le fait que l’on dispose de deux unités pour la tortue est nécessaire pour travailler avec les objets de la figure. Déjà rien qu’avec cet outil avancer/reculer, on n’est plus dans la géométrie d’une tortue standard puisque l’on peut travailler par exemple au millionième de pixel si on a besoin d’une grande précision. Certes c’est déjà le cas avec les autres tortues, mais de manière statique, ici c’est aussi dynamique, d’où un (éventuel) intérêt particulier. On donnera un exemple de construction « à la tortue » du centre du cercle circonscrit d’un triangle, sans autre donnée que les longueurs des trois segments.

En manipulation directe, la roue des angles est par tranche de 15°, pour d’autres angles numériques il faut utiliser le clavier.

Outils standards d’habillages divers de la trace de la tortue

Voici deux premiers exemples de code pour voir comment ces outils standards peuvent se combiner : tout d’abord une tortue qui pond des oeufs de plus en plus gros, puis une tortue qui en plus affiche la taille de ses oeufs, et ceci, dans une couleur différente :

On notera sur le texte qu’il suffit de mettre une liste et que le mélange de données numériques et alphabétiques est transparent pour l’utilisateur, il n’a aucune syntaxe à utiliser (comme les % en LaTeX par exemple). La troisième partie du texte est une série de 5 caractères blancs pour que le texte soit éloigné des points un peu gros.

Outils classiques de la 3D

En 3D la tortue prend la simple forme d’une flèche dont on voit le dessus ou le dessous d’une couleur différent.

Exemple d’exercice pour tester l’effet des angles avec des curseurs

La figure en ligne : https://huit.re/Helice3Dbase

Le code est dans le point A, il faut sélectionner le pointeur standard à gauche pour activer le mode standard et accéder aux palettes en cliquant sur A.

On comprend bien en manipulant cette figure - le nombre de points n mais aussi les angles - que la trace est construite en temps réel.

Vous pouvez modifier le code pour voir l’effet des différentes rotations. Deux barres d’onglets de cet article sont consacrées à la 3D, une d’utilisation scolaire et une plus technique, à la fois pour montrer des techniques propres à la 3D, mais aussi pour le plaisir de faire de la géométrie dans l’espace.

Outils spécifiques à la tortue de DGPad

Nous abordons des outils propres à la géométrie dynamique et à l’interaction de la tortue avec la figure. Dans l’illustration suivante, les outils de la colonne de gauche sont dans l’item Tortue, les deux outils de la colonne de droite sont dans l’item Expressions, justement pour être utilisés soit avec la tortue soit avec des expressions.

Pivoter vers et Rejoindre peuvent s’utiliser soit directement avec des points de la figure, soit, plus subtilement, avec des points de la trace déjà construite (item de droite), ce qui implique une autoréférence interne descendante car la trace est alors en cours de création.

Réinitialiser les angles est particulièrement simplificateur en 3D, y compris pour les enseignants (pour moi en tout cas). Par exemple au lieu de programmer la séquence de gauche, ci-dessous, on peut simplement utiliser celle de droite.

Bien entendu, on peut proposer aux élèves de l’utiliser aussi en 2D, pour éviter des surcharges cognitives inutiles.

Position de la tortue - Statut de la trace

L’item sur la position de la tortue est l’occasion d’apporter quelques précisions sur la trace de la tortue. On parlera de trace plutôt que de liste pour bien signifier que la trace de la tortue, malgré son nom interne que l’on peut voir apparaître de temps en temps dans le menu d’expressions, n’est pas une liste ni Blockly, ni DGPad. Il en résulte qu’il est inutile d’essayer d’utiliser les outils des listes de Blockly sur une trace de tortue. C’est pour cela qu’il y a des outils spécifiques de remplacement.

La position de la tortue peut être utilisée pour placer un point de la figure à l’endroit où est la tortue. Pour cela on crée un point supplémentaire dans la figure et on l’affecte, dans l’interface de la tortue à la position de la tortue.

Voici un exemple : soit un triangle ABC, on ajoute un point G dans la figure et on construit la trace suivante : la tortue va au milieu de [AB] puis au tiers du point où elle est et le point C. On voit déjà qu’il y a, d’une certaine façon, un peu d’algèbre dans cette figure, la position de la tortue jouant un rôle de variable, ici plus au sens informatique (mémoire d’une situation) que mathématique. On a prépositionner l’affectation de G.

Et dés que l’on pose le bloc de position de la tortue, elle se place au centre de gravité du triangle.

On peut construire une fiche d’activité avec ce début de figure et le code, - selon la classe, la progression dans la classe - les élèves devant compléter par le trajet partant des autres points. Avec l’interface blockly ouvert, on voit la tortue (et donc le point de concours), avec l’interface fermée on peut conjecturer la rencontre des trois trajets en G. Bien entendu la figure produite est dynamique.

Notes techniques : Pour une utilisation en classe, voir plus loin la rubrique « copier / coller du code »

Figure en ligne : https://huit.re/CentreGTortue

Point de la trace et longueur de la trace sont deux outils qui s’utilisent soit à l’intérieur d’un programme tortue, soit plus généralement en interaction avec la figure. Détaillons ce dernier cas d’utilisation.

Pour récupérer la longueur de la trace dans la figure (typiquement pour construire la borne max d’un curseur par exemple), on crée une expression, dans la figure. On lui donne l’expression Blockly suivante :

Pour placer un point sur une position particulière d’une trace, il faut avoir créé le point dans DGPad - actuellement l’interface Blockly ne crée pas de points, il ne fait que les modifier (d’où la place de l’icône Blockly dans la palette de comportements).

Un point étant créé, on lui affecte un code Blockly dans son onglet Expression (le 5° à droite). Pour faire un parcours d’un point sur une trace, on renvoie tout simplement cette instruction (ici extrait de la figure sur la courbe Hilbert 3D de la barre d’onglets sur la récursivité) :

Nous verrons l’utilisation au sein d’une trace elle-même, une première fois, dans un exercice scolaire, avec la spirale de Pythagore en tortue, dans le prochain onglet sur les spirales.

Les outils de « Textes »

Le plus souvent, les outils textes de la tortue suffisent, mais on peut affiner avec les outils de la rubrique texte, en particulier pour créer un texte plus complexe comme dans le cas de l’exemple sur la tortue pondeuse.

Le TeX dans la tortue

Depuis la mise en ligne de cet article, le La TeX a été ajouté à la tortue, c’est la raison pour laquelle il ne sera pas présent dans cet article (ou très peu). On peut ainsi écrire des choses comme

On n’est pas obligé d’utiliser une variable locale, on peut écrire directement comme ceci :

Au passage on remarque que cela permet de mettre des « alias » (au sens de CaRMetal) de points en LaTeX (ou des étiquettes au sens de GGB)

Le TeX utilisé dans DGPad est le KA-TeX, très rapide en JavaScript, 20 fois plus que l’ancien TeX en JavaScript (« KA » pour Khan Academy). Il n’est pas tout à fait complet, en particulier il manque la possibilité de mettre un vecteur sur deux lettres, option demandée sur le GitHub de KA-TeX depuis plus d’un an. Comme rien ne bouge, Eric Hakenholz est allé modifier, récemment, le code de KA-TeX, et on a donc le overrightarrow dans DGPad (début septembre) :

(cet ajout sera « poussé » bien entendu sur le GitHub de KA-TeX sous peu)

La sérénité de l’interface Blockly

Contrairement à d’autres interfaces, celle de Blockly est finalement très typée (même si le terme n’est probablement pas le plus approprié d’un point de vue informatique) et en particulier on ne peut pas entrer du texte par inadvertance à la place d’une variable (comme sous Tickle par exemple, comme on l’a montré dans l’article précédent).

C’est donc une simplification supplémentaire pour une utilisation scolaire d’outils sous Blockly comme DGPad et sa tortue : sur cette copie d’écran, on écrit, par étourderie, par habitude de programmation, au clavier au lieu de glisser une variable, Blockly réagit pour nous signifier que « Cela ne va pas être possible, Monsieur » ... finalement très discrètement ... très classe ...

La grande stabilité des traces

Une des raisons du choix de Eric Hakenholz pour qu’une trace de la tortue ne soit pas une liste DGPad réside dans une amélioration de l’optimisation de sa réactivité sur des figures complexes.

Une conséquence de cette optimisation est dans la remarquable stabilité des traces de la tortue de DGPad sur de longues séquences. Dans l’illustration suivante, on a construit la courbe de Hilbert 2D. Contre toute attente, on peut aller très loin avec la tortue :

Finalement, on peut aller jusqu’à plus de 260 000 points dans une trace 2D et plus de 110 000 points en 3D. Bien entendu dans ce cas la figure est moins dynamique, il faut plusieurs secondes pour déplacer un point, mais elle fonctionne. La figure suivante est construite dans l’onglet Arbre de la barre Récursivité.

A titre de comparaison, les listes de Blockly ont du mal à réagir passé 18000 points. Mais c’est déjà largement plus que d’autres types de séquences d’autres logiciels ;-) La Tortue explose les compteurs.

Exemple d’utilisation de grandes traces

Même si c’est un peu anecdotique dans un contexte aussi dynamique que celui-ci, cet aspect peut intéresser certains collègues pour faire des dessins spécifiques. En particulier quand il y a beaucoup de calculs.

Par exemple sur l’attracteur de Gumovki-Mira (utilisé désormais dans des motifs aléatoires de tissu alors qu’il a été élaboré au CERN pour modéliser des trajectoires de particules) : on peut le faire en Blockly en se limitant à 8000 ou 10000 points. A la tortue on peut aller bien plus loin (même s’il ne plante pas, il est lent à réagir passé 32000 points mais on peut le faire)

Ci-dessus, la figure en Blockly à 8000 objets, ci-dessous le détail d’une figure en 32000 objets à la tortue.

Voici un exemple (dans le bloc) où on part sur les mêmes paramètres, de 2000 points, puis on passe à 8000 et à 18000 points. On voit alors que le motif, s’il a la même structure initiale, est bien différent dans chaque cas.

Exemple cité

Exemple cité


Figure en ligne en Blockly à 8000 points : https://huit.re/MiraList8000

Figure en ligne à la tortue à 2000 points : https://huit.re/MiraTortue2000

Le principe est de choisir des paramètres (sur 2000 ou 8000 points) et de modifier ensuite le nombre de points en ouvrant Blockly quand on a un dessin que l’on veut approfondir.

Pour que la trace n’affiche que des points il faut mettre l’épaisseur du segment à 0 :

Complément post publication

Yves Biton, l’auteur de MathGraph32 a été inspiré par cet algorithme et a modifié son logiciel - il faut utiliser la version 5.1.1 - pour permettre d’afficher 100 000 points sur cet algorithme. Il en a ensuite fait cet article.
Les figures obtenues sont superbes bien entendu !

Copier-Coller du code

L’interface sur le copier-coller, si elle est naturelle, mérite une petite explication : l’outil copier-coller copie tout ce qui suit le bloc sélectionné. On sépare donc, dans le code, là où on veut que la copie s’arrête. Reprenons l’exemple du centre de gravité. Pour copier le code qui fait les deux segments, et l’appliquer simplement à d’autres points, on sépare la partie principale de l’affectation du point G : le copier suivant copie les 4 lignes avant le « Fixer », soit les deux lignes Pivoter et Avancer.

Le coller place les blocs au même endroit, il faut les déplacer (ici les placer sous la couleur rouge). Illustration avec le réglage du pivoter vers C : on voit que la distance parcourue est encore AB/2 donc il faut poursuivre les modifications, et cela va très vite.


Haut de la barre de généralité (onglet suivant : spirales et réflexions algorithmiques)

Spirales

Le thème des spirales

Pour introduire l’utilisation de la tortue de DGPad, nous commençons par une situation ultra classique en tortue standard, celle des spirales. Une partie des activités proposées est d’inspiration ludique (artistique ?), une autre partie a une composante mathématique claire. Le tout est plongé dans une problématique sous-jacente d’apprentissage du codage, en programmation visuelle.

Mathématiquement, les spirales à la tortue sont discrètes, donc ne relèvent pas des définitions standards des spirales d’Archimède ou logarithmiques, mais elle peuvent, dans certaines conditions en être de belles approximations.

Ce thème est décliné en plusieurs parties :

S1 - Spirales à modification additive (cas d’une nano-modification puis d’une macro-modification, conjectures en classe sur les spirales)
S2 - Spirales à modifications multiplicatives (idem, deux cas, dont les jolygones)
S3 - Spirale sans modification (spirale de Pythagore)
S4 - Le cercle comme limite d’une spirale

S1 - Spirales à modifications additives (suites arithmétique au lycée)

Le principe

On se donne deux curseurs : un curseur pour l’angle, constant, dont tourne la tortue à chaque étape, et un curseur de modification de l’avancement de la tortue. Nous allons nous intéresser principalement à deux types de conditions initiales. Tout d’abord un angle quelconque avec une augmentation très petite de l’avancement de la tortue. Puis un angle constant, mais fixé à une fraction entière de tours, et une diminution constante d’une condition initiale grande.

Illustration dans le cas d’un départ petit et d’une augmentation « infinitésimale »

Dans cette figure, on part d’un pixel, et on augmente d’une fraction d de pixels. L’angle est donné par a. Pour des angles et une augmentation petites, la spirale est une approximation d’une spirale d’Archimède.

Manipuler la figure en ligne : https://huit.re/spirale1

S’entrainer à l’interface en entrant le code à partir d’une figure ne comportant que les curseurs : https://huit.re/EssaiSpirale
(sélectionner la flèche à droite, puis cliquer sur le point A et choisir le comportement « Blockly ». Dans l’interface Blockly, prendre l’onglet Tortue à droite. Puis s’entrainer à l’interface : la couleur des objets indique sa rubrique d’origine.

Pour d’autres valeurs d’angles, les résultats sont très différents :

Questionnements mathématiques

Même sur une figure aussi élémentaire, on peut proposer une réflexion mathématique. Pour cela prenons un angle diviseur de 360 (dans l’illustration ce n’est pas le cas, mais 22,5° est intéressant car moins immédiat que des plus ordinaires 18 °ou 36°). On peut soulever la question de l’apparent parallélisme des côtés de la spirale : les côtés sont-ils parallèles ? Est-ce un artefact du dessin d’ordinateur qui le laisse penser ?

On peut penser à Thalès (selon la classe) et repérer que la progression arithmétique ne semble pas faciliter l’approche par Thalès - multiplication. Il vaut mieux privilégier l’approche angulaire. Ce résultat sera nettement plus clair pour les élèves dans la seconde version de la spirale, en particulier parce que cela sera plus perceptible sur la trace de la tortue.

Remarque technique importante : on trouve une expression qui s’appelle d dans cette figure, et cela fonctionne très bien. Il y a un cas où on ne peux pas nommer une expression d dans la figure, c’est dans le cas où on utilise le bloc distance entre deux points. Par contre, même si on utilise ce bloc, on peut toujours nommer dans le programme une variable locale ou globale avec le nom d.

Quel diamètre pour le célèbre cercle AV 1 TG 1 ?

On peut aussi s’intéresser au cas où il n’y a pas d’augmentation : le cas où d=0 (qui n’a pas été exclu). On peut conjecture qu’ on obtient un cercle et alors se poser la question du diamètre du cercle, et si ce diamètre est en relation avec l’angle. Pour cela on a complété la figure avec la construction - de visu, par l’élève si on en fait une activité - du diamètre à la tortue (en pixel) avec le curseur n :

Utiliser cette version en ligne : https://huit.re/ExploreSpirale

On peut alors envisager de faire remplir un tableau du diamètre en pixels avec l’angle a (de 0,2 à 1 par exemple) et effectuer les produits ... pour repérer une relation d’inverse proportionnalité.

Déjà, sur ces deux illustrations, on remarque que 0,5x229 = 114,5 donc proche (au pixel près) de 115. Le tableau précédent est rapidement convainquant : il vient assez rapidement de conjecturer que le produit est constant. On en vient à (se) demander quelle peut être cette constante ($\frac{360}{\pi} = 114,59$). Éventuellement, selon la classe - car il y a un sinus - on peut aller plus loin, et rechercher le diamètre $D$ (en pixels) du cercle circonscrit d’un triangle isocèle de côté 1 dont l’angle au sommet est $a$ : la définition même du sinus donne $R=\frac{1}{2sin(a/2)}$, soit pour des petits angles, $R$ proche de $\frac{1}{a}$ et donc $D$ environ égal à $\frac{2}{a}$ (du moins si $a$ est en radian ... ce qui peut être délicat à justifier en collège).

On voit que sur des figures aussi élémentaires que celle-ci on peut engager quelques réflexions mathématiques intéressantes et originales.

Cas d’un départ grand et d’une diminution arithmétique de quelques pixels

L’autre activité, plus classique, de spirales à pas variable de manière arithmétique, consiste à partir d’un segment assez grand (de l’ordre de 150 pixels), de proposer un fractionnement entier d’un tour pour l’angle dont la tortue va tourner : par exemple 60° pour avoir une forme hexagonale ou 72° pour une forme pentagonale.

Commençons par la figure générale, qui peut être - éventuellement partiellement - l’objectif final d’une séquence sur le sujet, avec une progression que nous allons détailler plus loin.

Dans ce programme, le nombre de côtés est une variable de la figure (on les repère par la couleur marron) nommée nbc, la taille de départ s’appelle longueur. On remarquera qu’on a créé une variable locale qui porte le même nom pour être modifiée dans le programme.

Manipuler la figure en ligne : https://huit.re/spirale4

Plusieurs démarches ne sont pas évidentes pour les élèves, comme l’expression de l’angle, la modification de la longueur, et bien entendu le répéter tant que. C’est la raison pour laquelle pour une telle activité, il est important de commencer par des démarches seulement numériques.

De la constante numérique au paramètre comme nombre généralisé

On peut commencer tout simplement par tourner de 60°. Pour avoir fait de nombreuses rosaces dans leur instrumentation du compas en cycle 3, et éventuellement quelques hexagones réguliers, ils savent - ou réactivent rapidement - qu’il y a 6 fois 60° dans un tour complet. Une première phase de ces spirales peut ressembler à ce qui suit. Dans une fiche de travail, on peut, comme on en trouve sur le site de GéoTortue, proposer un dessin à reproduire, éventuellement avec un programme à trous qu’il convient de compléter.

On notera qu’il n’y a qu’une seule variable, la longueur qui est nécessairement modifiée. Tout le reste est seulement numérique. Il faut s’attendre à ce que certains élèves pensent à modifier la longueur par ce type d’instruction :

La réactivité immédiate de la tortue n’est pas nécessairement une aide dans ce cas, sinon pour montrer assez rapidement qu’il faut une autre idée, celle de l’affectation d’une variable. On notera le vocabulaire choisi : fixer.

Une fois cette première étape réalisée correctement, l’usage d’une tortue dans un environnement de géométrie dynamique retrouve tout son intérêt. Il suffit de changer l’angle, de remplacer 60° par 72° pour qu’aussitôt la trace soit mise à jour. On peut ensuite modifier les autres paramètres, juste dans un souci d’esthétique, et peu à peu prendre conscience de l’efficacité des variables informatiques comme paramètre, dans le sens - représentation - de nombre généralisé.

Cela peut ensuite être l’occasion de proposer ces paramètres sous forme de curseur, d’abord ceux sans véritable enjeu mathématique, considérés comme prise d’information initiale, comme l’écart ou la longueur initiale, et ensuite, la seule information plus mathématiquement engagée avec l’angle en fonction d’un nombre de côtés. On peut aussi choisir, avant cela, de travailler sur le nombre d’itérations maximal que l’on peut inclure dans l’instruction répéter.

Affiner le nombre d’itérations : arithmétisation ou algébrisation ?

En effet, l’instruction tant que proposée dans la figure initiale n’est pas du tout nécessaire. Selon certains, selon la culture de la classe, le programme, elle peut même être perçue comme conceptuellement trop complexe. Or la simple instruction répéter suffit, à condition de déterminer le nombre d’itérations en fonction de la longueur initiale et de l’écart. Même si c’est, finalement, plus délicat que le tant que, c’est une voie généralement perçue comme plus naturelle car il s’agit d’affiner l’utilisation d’une instruction familière. En réalité, toute la subtilité conceptuelle - que n’aurait pas la boucle tant que - réside dans l’interprétation que l’on donne à cette expression « affiner » : est-elle de nature arithmétique ou algébrique ? La question peut paraître assez triviale car ce n’est qu’une question de division : combien de fois l’écart est-il contenu dans la longueur initiale ? Rapidement les élèves vont proposer de diviser la longueur par l’écart pour avoir le nombre de fois qu’il faut répéter l’action de tourner et de diminuer la longueur. Il suffit de faire cela :

En général, la subtilité conceptuelle (arithmétique/algèbre) de la mise en oeuvre de cette division n’apparaît pas immédiatement mais elle se rencontre vite quand les élèves font :

Il devrait y avoir 50 itérations (100/2), il n’y en a que 25 ! Stupeur chez les élèves ! Car pour eux, l’écriture d’une division a toujours eu un résultat arithmétique, c’est-à-dire un résultat, donné, fixe. Or, dans ce contexte d’utilisation, cette écriture-là est algébrique : la longueur initiale est fixe, l’écart aussi, mais la longueur utilisée est réactualisée, c’est une variable, informatique mais aussi mathématique : cette division de deux variables, rend compte d’une écriture réactualisée en fonction de l’état de ces variables. Or justement, la longueur est modifiée dans la boucle de répétition. C’est intéressant que les enseignants de mathématiques aient en charge cet enseignement de programmation visuelle, c’est l’occasion d’activer un changement de cadre nouveau - et subtil - entre constantes ou variables informatiques, et l’aspect algébrique de ce qui est engagé (sens des expressions, métacognition algébrique de ce qui est écrit), sur des exemples concrets et simples comme ici. On voit qu’une variable informatique peut être une constante (comme l’écart) ou une variable mathématique, comme la longueur, et qu’il convient d’être attentif, en informatique, comme en mathématique, à ce que l’on écrit : le changement de cadre de l’erreur est intéressant car ici il met en lumière les différents statuts des variables - ou des opérations - selon le contexte d’utilisation. Dans le cadre de cet exercice, le nombre d’itérations est entièrement défini par les conditions initiales, il n’a pas à être réévalué à chaque entrée dans la boucle.

Il faut utiliser une autre variable (au sens informatique) qui va être le résultat constant de la division précédente, variable qui va rendre ce calcul arithmétique. Il y a deux orientations possibles : utiliser ce qui a été dit « oralement » ci-dessus, avec cette notion de longueur initiale, en distinguant la longueur initiale (constante) de la longueur courante (variable) :

Dans cette écriture, le nombre d’itérations donné dans le répéter est encore une division, même si elle est constante (résultat arithmétique) lors de la réévaluation. Un autre point de vue est de calculer cette constante dans une nouvelle variable avant la boucle de répétition. La boucle est alors activée sur un nombre dont on sait qu’il est, conceptuellement, constant. C’est cette version :

Bilan possible : nous avons vu, sur cette activité, qu’une variable informatique peut être une constante ou une variable. Et qu’il faut être vigilant sur le statut implicite d’une variable dans un programme. Mais le bilan pour l’enseignant est que, finalement le répéter tant que est peut-être moins complexe qu’il n’y paraît, au sens où l’on sait que le test que l’on écrit dans le tant que est réévalué. Ici « l’erreur rencontrée » vient du fait que l’on a « cru » placer une constante dans la boucle répéter alors que c’était une variable, donc réévaluée à chaque entrée dans la boucle.

Figure décrite ici (sans utilisation des curseurs présents) : https://huit.re/spirale4b

Questionnement géométrique sur cette spirale (classe de 3° seulement)

Outre ces questions relevant de l’enseignement de l’algorithmique, pourquoi ne pas faire aussi un peu de mathématique pendant cette activité. Elle s’y prête particulièrement bien puisqu’elle va permettre d’aborder une réflexion sur la notion d’hypothèse et de conjecture. Il ne s’agit pas de faire des choses compliquées, juste de montrer qu’une figure issue d’un contexte algorithmique permet aussi des développements mathématiquement significatifs.

De cette figure, on a déjà dit que les côtés successifs à un tour d’intervalle sont nécessairement parallèles car orientés de la même façon après un tour complet de la tortue. Par ailleurs cette figure ressemble étrangement, en plus complexe à une figure archétypique du raisonnement mathématique sur les propriétés caractéristiques, l’application d’une propriété (deux fois) et sa réciproque (une fois) donne une nouvelle propriété, ici illustrée avec la propriété de Thalès :

Ayant comme hypothèse le parallélisme des côtés [BC] et [MN] d’un part, puis [CD] et [NP] d’autre part, deux « Thalès directs » et « Une réciproque » aboutissent à [BD] // [MP]. J’ai toujours été frappé, ayant enseigné de la 6° à la L3, que souvent, quand un concept nouveau est introduit, avec une caractérisation, il y a toujours une application immédiate utilisant ce schéma. Et régulièrement, pour rendre compte de la simplicité de la démonstration, même si le contexte paraît conceptuellement nouveau aux étudiants (théorème du pivot avec la cocyclicité, résultats sur les lignes de niveau, ou encore sur les structures en algèbre), je ressors cette figure pour montrer que, sous des habillages de toute sortes, finalement, on commence par faire toujours un peu la même chose, en début d’apprentissage.

Positionnement du problème

Dans le cas qui nous occupe, on place - aspect technique détaillé plus loin - des points aux sommets comme ceci :

On sait donc que (MN) // (QR) et (NP) // (RS), a-t-on (MP) // (QS) ?

Une exploration géométrique avec les tests du logiciel

DGPad n’a pas - pas encore - de test de parallélisme, seulement un test d’alignement. C’est donc l’occasion d’apprendre à tester le parallélisme avec un outil d’alignement.

Pour cela il suffit de construire le 4° point U du parallélogramme MPQU et tester si les points U, Q et S sont alignés. On construit U par le symétrique de P par rapport au milieu I de M et Q et le résultat est catégorique :

Déjà argumenter autour de cette construction peut être un débat intéressant. A priori, la réponse interne du logiciel peut ne pas être très convaincante devant l’évidence visuelle. Il faudrait peut-être du numérique. Alors calculons la pente des deux droites (là encore les aspects techniques sont exposés un peu plus loin).

Pente des deux droites

Manipuler la figure en ligne : https://huit.re/spirale4c

C’est peut-être plus clair, conceptuellement parlant, même si l’écart est faible, dans le cas n=6. Voici l’illustration dans le cas n=6 :

On peut en effet proposer une réflexion plus précise dans ce cas. En effet, si le triangle MNP était isocèle, par des arguments d’angles, la droite (MP) serait orthogonale au premier avancement de la tortue. La situation est ici très subtile car les élèves ont vite fait de confondre - en général par erreur, mais aussi parfois volontairement - réciproque et contraposée. En effet, c’est la modification additive (les triangles ne sont pas semblables) qui fait que l’on n’a pas le résultat attendu. Thalès (l’homothétie) n’est pas du registre additif, mais bien du registre multiplicatif. Ce serait une autre activité - et on ne peut pas tout faire - mais nous verrons qu’avec les jolygones - une démarche multiplicative, les triangles ne sont pas isocèles mais ils sont homothétiques, le parallélisme est conservé. L’idée est de faire émerger que, les triangles MNP et QRS n’étant pas isocèles, les droites (MP) et (QS) peuvent ne pas être horizontales à l’écran. On voit bien sur le dessin que le tracé n’est pas net ce qui signifie bien que les droites ne sont pas tout à fait horizontales. Il n’y a aucune raison qu’elles aient la même pente.

Ce passage délicat abordé ou pas, on peut aller plus vite vers un argument de non application du résultat (dit archétypique plus haut) de Thalès.

Pas d’application de Thalès

En effet, en traçant les droites concernées, on constate qu’elles ne sont pas concourantes alors que c’est une hypothèse de base de la figure en question. C’est nettement visible pour le cas n=5.

On peut donc argumenter - plus simplement qu’au paragraphe précédent - que les hypothèses de base du théorème ne s’appliquant pas, le résultat n’est pas garanti, et ces spirales à modification additive en sont une superbe illustration, d’où le développement de cette partie.

Dans le cas multiplicatif - Jolygone ci-après - il y a bien parallélisme

Avant d’aborder les aspects technique de cette construction - qui sont aussi une autre des raisons de cette partie, une illustration du cas multiplicatif (la construction est différente puisque l’on fait varier un angle continument)

Tester la figure (vite faite, pour cette illustration) : https://huit.re/JolygoneThales

Les aspects techniques de cette construction

Il y a deux points à soulever : placer des points aux sommets de la trace, et le calcul des expressions.

Même si la tortue « pond des oeufs » comme on l’a déjà signalé, elle ne crée pas de nouveaux points. Il faut donc créer des points et leur affecter, par Blockly, le positionnement en un point de la trace d’un point. On crée donc un point, on lui affecte un comportement Blockly, et dans ce comportement, on prend l’onglet de droite, Expression.

Dans cet onglet, on place une commande de ce type (dans les items d’Expression de Blockly)

On notera que le point disparaît pendant la manipulation, et réapparaît - à la bonne position - quand l’expression est bien agencée.

Pour aller plus vite, on peut copier « tous les blocs » et les coller dans un prochain point et juste modifier son indice.

D’une manière générale, ce n’est pas réaliste de faire faire cette manipulation aux élèves, il est préférable de leur fournir une figure avec les 6 points placés. Par contre la suite est plus utile car imprégnée de sens mathématique.

Pour la pente d’une droite, il y a une possibilité de la calculer directement dans le logiciel sans passer par Blockly (et heureusement). Mais comme les programmes spécifient que les élèves n’ont pas à écrire « une seule ligne de code », pour respecter ces consignes, on va le faire en Blockly, c’est-à-dire en programmation visuelle par déplacement de blocs.

Pour ma part, comme bien d’autres collègues j’imagine, je serais un peu digressif sur ce point, spécifiquement sur GéoTortue, en argumentant tout l’intérêt qu’il y a, malgré l’extraordinaire puissance de la tortue de DGPad comme exposé ici, à écrire, quand même, encore, de temps en temps, du code Géotortue. D’ailleurs GéoTortue est parmi les logiciels disponibles à l’oral du CAPES, pas encore DGPad pourtant disponible sur tablette, mais non disponible sur les ordinateurs hors ligne (autres que sous MacOS).

On crée donc une expression, que l’on peut initialiser à 1, et lui mettre un commentaire textuel. Puis on lui affecte un comportement Blockly et dans son onglet Expression on peut placer quelque chose de ce type (ici les variables intermédiaires sont là pour que la copie d’écran rentre dans l’espace de publication)

Là aussi, on peut copier-coller le code et modifier par les petits popup les noms des points.

Spirales arithmétiques | Spirale de Pythagore | Approximation du cercle

S2 - Spirales à modifications multiplicatives (suites géométriques au lycée)

Tout comme les précédentes spirales étaient des approximations des spirales d’Archimède - pour certaines valeurs de l’angle - celles-ci sont des approximations de spirales logarithmiques. Et comme dans la partie précédente, selon que l’on part d’une petite longueur initiale ou d’une grande longueur initiale, on obtient des figures très différentes sur lesquelles, nous allons, à nouveau, proposer quelques réflexions mathématiques. Voici une figure un peu générique :

Comme la longueur est multipliée par un coefficient plus petit que 1, la longueur diminue mais ne s’annule pas. La question de la borne du répéter ne se pose donc pas. Ici on a mis un curseur, mais on peut laisser une constante (entre 300 ou 500).

Les jolygones

Ces spirales, avec une longueur initiale plus grande, sont bien connues sous le nom de Jolygones (Tangente, Kangourou etc). Dix secondes de fouille dans les archives, pour illustrer que la question de l’algorithmique dans l’enseignement au collège n’est pas vraiment nouvelle. Les plus anciens des lecteurs peuvent avoir découvert - comme l’auteur de ces lignes - ces jolygones dans le Petit Archimède n°14, en ... 1975 ... dans lequel on nous proposait déjà de l’algorithmique, à l’époque, nécessairement débranchée !

Quand on faisait un peu de géométrie au lycée avec les nombres complexes, la recherche du point fixe vers lequel tend un jolygone qui converge était un thème assez classique (car limite d’une suite géométrique de nombres complexes) ... Mais je vous parle d’un temps ....

On reprend cette figure avec une longueur paramétrée et un curseur assez long pour l’angle pour que celui-ci puisse prendre toutes les valeurs demi-entières.

Figure en ligne : https://huit.re/jolygone

Changement de cadre original pour du calcul arithmétique

On ne reviendra pas ici sur ce qu’il est possible de faire sur la partie algorithmique pour s’intéresser davantage à l’utilisation mathématique des jolygones. On peut commencer par réactiver l’argumentaire autour de l’hexagone pour justifier que les côtés sont parallèles. On parlera d’un jolygone hexagonal. On peut alors inviter les élèves à regarder ce qu’il se passe autour de 60°, ici illustré à un demi degré prés :

L’idée sous-jacente est d’utiliser la dévolution de l’esthétique des figures pour la décortiquer mathématiquement, dans des cas simples. Par exemple, partant du parallélisme assez rapidement clair avec un angle de 40°, pour demander aux élèves pourquoi, avec un angle de 80°, le jolygone obtenu a encore ses côtés parallèles, mais dans une configuration moins élémentaire. C’est un travail sur les multiples et diviseurs qui peut être présenté comme un renforcement des compétences numériques à travers des illustrations géométriques.

Une autre piste est celle du cas où il n’y a pas de diminution de l’avancement de la tortue, c’est-à-dire le cas coef=1. On peut partir d’une situation simple, par exemple un jolygone pentagonal et passer au cas coef=1 (jolygones fermés) . Là encore, on voit l’intérêt didactique d’une réaction en temps réel de la trace de la tortue : les élèves peuvent voir que les différents segments viennent se coller sur un pentagone. On commence par demander ce qu’il se passe.

La phase principale de ce questionnement est dans l’étape suivante, en demandant de justifier que le jolygone des cas suivants sont fermés en précisant en combien d’étapes on revient sur le point de départ de la tortue. On peut partir de 80° pour réinvestir ce qui vient d’être fait dans la phase précédente, puis proposer d’autres exemples ou encore faire chercher d’autres exemples, et interroger sur le lien entre les jolygones à côtés parallèles et les jolygones fermés quand il n’y a pas de réduction des côtés.

Rendre la figure initiale un peu plus dynamique

La figure précédente favorisait une présentation archétypique avec un premier segment horizontal, ce qui peut aider certains élèves sur la vision du parallélisme. Mais il est intéressant aussi de casser les représentations graphiques impliquant trop l’horizontalité. On peut donc remplacer le curseur de longueur initiale (en pixels) par la distance entre deux points de la figure (en unités internes). La modification est très simple, il faut juste ajouter l’orientation vers le second point, et utiliser un bloc qui donne la distance entre deux points.

Manipuler la figure en ligne : https://huit.re/jolygone2pts

Deux remarques techniques :
• Quand on modifie une figure, les variables locales et les dépendances avec les objets de la figure ne sont pas toujours supprimées en mémoire. Par exemple ici, si on supprime le curseur de longueur, toute la figure disparaît. Mais il suffit de ré-ouvrir l’interface Blockly pour que toute la figure réapparaisse à nouveau.
• Au moment où cet article est écrit, quand on utilise le bloc Blockly de distance entre deux points, le mot d dans la figure est réservé : il y a dysfonctionnement entre Blockly et la figure si un paramètre s’appelle aussi d. A priori c’est juste un oubli temporaire. Par contre, à l’intérieur de blockly une variable, locale ou globale, peut s’appeler d même si on utilise le bloc de distance.

Bilan : dans cette partie, on a mis un peu de côté la démarche algorithmique - proche et plus simple que la partie précédente. On a choisi d’activer une réelle dévolution des figures manipulées, pour revenir sur un questionnement mathématique simple qui peut s’apparenter à du calcul mental (ou quasi mental) en contexte géométrique. La dévolution est renforcée si les figures sont faites (même partiellement) par les élèves (compléter un code juste commencé). Si les élèves n’ont pas l’habitude de l’interface de DGPad, il peut être plus efficace de proposer des figures avec les curseurs déjà construits pour se concentrer soit sur le codage de la tortue, soit sur les questions mathématiques.

Complément : on trouve bien entendu des jolygones en Scratch, ici avec deux curseurs (à un coup, il faut relancer le programme pour un nouveau choix), ou encore , aléatoires à la souris. Mais signaler ces deux programmes, c’est presque faire de la publicité déguisée pour la tortue dynamique ;-)

Spirales arithmétiques | Spirales géométriques | Approximation du cercle

S3 - Spirale sans modification - la spirale de Pythagore

Avec la spirale de Pythagore, nous abordons, contrairement aux apparences peut-être, une spirale totalement géométrique, que l’on se propose de réaliser sans aucun calcul, mais avec un apprentissage de quelques blocs spécifiques de la tortue de DGPad.

Sur le plan purement algorithmique, la seule difficulté qui sera rencontrée par les élèves devrait être la gestion des bornes des boucles : a priori une erreur n’est pas un problème, elle ne fera que des décalages à corriger. Il faut savoir construire un curseur et le régler à pas entier.

L’objectif est donc de produire une spirale comme celle-ci, a priori, sans utiliser le bloc de distance entre deux points :

Bien entendu les nombres sont les carrés des côtés. Le programme principal est proposé : on commence par les deux côtés d’un triangle rectangle isocèle de côté 1, puis une première procédure trace la spirale, et une seconde les hypoténuses.

On peut proposer cette illustration pour structurer la recherche. On peut aussi ne proposer que la première illustration, sans le programme principal. Cela donne bien entendu plus de liberté pour la construction. On peut tout faire en une seule procédure. Dans tous les cas, il faudra à un moment préciser plus clairement ce que l’on attend et, selon le contexte (projet hors temps scolaire, simple exercice) et la culture de la classe, fournir des précisions sur les blocs utilisables.

La spirale des côtés de longueur 1

La construction géométrique itérative, est bien connue. Elle se fait à l’équerre et au compas comme outil de report de longueur. Ici, avec la tortue, c’est faire une spirale avec des segments de longueur constante (l’unité). Comment tourner de l’angle qu’il convient pour prendre la perpendiculaire ? C’est le premier questionnement que l’on peut poser. L’outil fondamental ici est celui du positionnement de la tortue vers un point donné. L’enchainement de bloc qui convient est donc tout simplement celui-ci :

Pour commencer, on peut simplement placer ce bloc dans un simple répéter, par exemple répéter 10 fois. Ensuite la question se pose - pour l’étape suivante - de la borne du répéter, et donc de ce que l’on veut obtenir précisément. Le choix proposé ici est d’afficher comme dernière hypoténuse celle qui est affichée par b. Ainsi b part de 2, et pour 2 la spirale ne construit rien car le côté de l’angle droit associé à l’hypoténuse de longueur racine(2) a déjà été construit par la partie principale du programme. On commence à construire à partir de b=3. Pour b=3 on construit 1 segment, d’où l’expression de la borne du répéter : b-2.

La procédure des hypoténuses - Préambule sur les indices des traces

Nous avons choisi de séparer la construction de la spirale d’Archimède en deux étapes car la seconde est un peu plus technique. L’idée est de parcourir les sommets du début de la trace et de construire les hypoténuses à partir de ces points. Les élèves ne connaissant pas encore la structure des traces sera amené à tester, éventuellement ... comme proposé. Dans la fiche de travail on peut proposer un test du type de ce qui suit : ici c’est mis en œuvre pour montrer au lecteur, on peut tout simplement donner le résultat mais c’est intéressant d’entrer dans le détail technique des outils aussi, cela donne de l’autonomie aux élèves sur la pratique de la programmation, dans le Blockly de DGPad à court terme, et plus généralement de l’assurance pour tester des hypothèses en général.

Il faut créer un point, appelons le M. On affecte à M (manuellement) le k-ième point de la trace, pour k=1, 2 et 3 successivement, de la façon suivante.
1 - Ouvrir Blockly sur le point M, et choisir l’onglet Expression - celui de droite.
2 - glisser de la rubrique Expressions de Blockly Fixer l’expression au point M

3 - Y ajouter (toujours dans les Expressions), le bloc Point n° i de la trace de A

On voit donc, avec cette manipulation que le point A est le point d’indice 1 de la trace (on fait cette manipulation pour les lecteurs car dans les expressions JavaScript de DGPad, l’indice initial est 0). De même on voit que le point dont on doit tracer la première hypoténuse est le 3° point de la trace. On va donc faire une boucle répéter qui part de l’indice 3. On pourrait aussi chercher la fin de la boucle de la même façon, mais elle est aussi facile à anticiper arithmétiquement.

La procédure des hypoténuses

Dans la boucle, il suffit alors d’aller en A, et de A vers le Point n° i de la trace de A. Pour apprendre à utiliser cet item, on a ajouté un texte. La deuxième partie du texte est juste une suite de caractères blancs pour que le nombre affiché ne soit pas trop collé à l’extrémité du segment.

Remarque : le bloc « Rejoindre un point » contient aussi l’action de pivoter vers ce point, il n’est pas nécessaire de le rajouter. Si nécessaire, on connait donc la direction de la tortue.

Bien entendu on peut, si on le souhaite, combiner les deux procédures en une seule, il faut juste écrire les choses un peu autrement pour ne pas avoir un segment d’angle droit de trop.

Complément possible

On peut aussi reprendre la technique du point M parcourant la trace, et afficher, directement dans la figure, avec une expression, la distance entre A et le point courant de la trace pour vérifier quelques racines carrées connues.

Figure en ligne : https://huit.re/BalladeSurPytha

Spirales arithmétiques | Spirales géométriques | Spirale de Pythagore

S4 - Le cercle comme limite d’une spirale

Cette figure de Pythagore incite rapidement à en faire une autre, celle de l’approximation du cercle par un segment très court tangent au rayon. Cette construction est l’approximation géométrique d’un cercle par la méthode d’Euler. Finalement c’est la même figure que la précédente, l’orthogonalité se prenant toujours au début du segment. On peut donc la proposer aux élèves comme continuation de la figure précédente, vue comme spirale à pas constant avec un pas très petit.

Dans le cas d’une utilisation scolaire, on peut commencer de manière arithmétique, en ajustant à la main les deux paramètres : le nombre d’itérations et la longueur du segment :

Puis préférer y mettre des curseurs (toujours avec cette notion de paramètre)

Figure en ligne : https://huit.re/ApproxCercleTangente

Pourquoi est-ce différent du AV 1 TG 1 ?

Par construction, cette figure est une spirale de Pythagore, à chaque étape on s’éloigne du centre puisque l’hypoténuse est plus grande que le côté du triangle qui fait office de rayon précédent.

Dans la figure dite AV 1 TG 1, le 361° segment est parallèle au premier. Soit on a une spirale avec des côtés parallèles, soit la figure se referme. On a déjà vu - dans le cas de modification nulle dans les deux types de spirales - que la figure se referme car le rayon est lui aussi constant. On l’a même déjà calculé : $R=\frac{1}{2sin(a/2)}$ si $a$ est l’angle au centre interceptant le côté répété. Là encore, selon la classe et les objectifs de l’enseignant, c’est abordable en classe si on a vu la définition du sinus d’un angle, c’est même un bel exercice sur les angles : on cherche le rayon du cercle circonscrit aux 3 sommets de deux segments consécutifs. De proche en proche, le rayon est constant à chaque étape. Mais bien entendu cela peut aussi simplement être évoqué et conjecturé.


Spirales arithmétiques | Spirales géométriques | Spirale de Pythagore | Approximation du cercle

Haut de la barre de généralité (onglet suivant : hexagones, carrés et code en manipulation directe)

Hexagones - Carrés

Polygones réguliers usuels dans un environnement dynamique

Dans cet onglet, on se propose de proposer des activités très simples pour se familiariser avec la tortue de DGPad. L’interaction dynamique avec l’environnement de sortie permet de proposer des constructions qui n’auraient pas de sens dans une sortie statique de type Scratch. C’est en ce sens que l’on dit qu’une tortue dynamique comme celle de DGPad est conceptualisante dans la mesure où on peut poser des problèmes nouveaux qui mettent en jeu les connaissances mathématiques du collège. Par exemple, construire un hexagone ou un carré dont on donne deux points diamétralement opposés. Les constructions proposées sont dynamiques, elles peuvent nécessiter, pour certaines d’entre elles, un peu de calcul mathématique (essentiellement théorème de Pythagore).

Si on le souhaite, la conceptualisation peut être aussi algorithmique. En effet, une tortue dynamique permet de tester toute sortes de choses instantanément et donc de comparer les structures de programmes sur des activités que l’on pensait différentes alors que les programmes peuvent être souvent, à un détail prés ... identiques.

L’organisation des fiches de travail

Comme dans le reste de cet article, nous ne proposons pas ici de fiches d’activités prêtes à l’emploi. En effet chacun peut avoir envie d’organiser des activités selon tellement de critères : par exemple travailler sur les polygones quand ils sont définis par les côtés, par centre et point, par une diagonale quand c’est abordable : on peut avoir envie de travail sur un type de polygone particulier, ou pour un polygone, sur ses différentes approches possibles.

Chacun piochera les idées qui l’intéressent et les adaptera à son propre projet d’activités et à ses objectifs.

Préambule - Rappeler l’aspect dynamique de la tortue

Il est important de rappeler, d’une façon ou d’une autre, que la tortue prend la position de ce qui est affiché. Ainsi, pour voir ce que l’on fait, il est préférable de regarder ce que fait la tortue avant de l’insérer dans une boucle (à droite). Typiquement, si on répète 6 fois un angle de 60°, la tortue retrouve sa position initiale (à gauche).

Les hexagones réguliers

On commence par trois procédures simples à réaliser car elles ne nécessitent aucun calcul. Elles sont basées sur le fait que les élèves savent que l’on construit au compas un hexagone régulier en reportant 6 fois le rayon sur un cercle. La version tortue, si elle utilise ce résultat, le contextualise tellement autrement que cela peut paraître nouveau aux élèves.

Hexagone par un côté

C’est l’exercice le plus simple, même si il convient de faire expliciter aux élèves pourquoi c’est aussi simple : un tourner gauche 60° correspond au supplémentaire de l’angle de l’hexagone régulier qui est de 120°.

Hexagone par centre et point

Si cette activité suit la précédente, il faut s’attendre à ce que les élèves réinvestissent ce qui précède, puisque chacun imagine bien qu’il suffit de modifier quelques lignes. On pivote vers le centre O. Ensuite il est tentant d’inverser les deux lignes de la boucle répéter, ce qui n’aboutit pas.

En fait il ne faut pas oublier de commencer par tourner la tortue. Par exemple :

Et parmi les nombreuses explorations que les élèves ne manqueront pas de tester, celle d’inverser les deux instructions de la boucle fait passer la construction d’un hexagone par « centre et point » à celui « par côté » :

C’est donc une autre façon de construire l’hexagone par un côté avec une simple inversion de deux lignes par rapport à la construction par centre et point. S’apercevoir de ce résultat tout simplement, en manipulation directe, est à mettre au crédit du temps réel de la tortue de DGPad.

Hexagone par deux points diamétralement opposés

De même, l’algorithme de la construction d’un hexagone où les deux points A et B sont sur un diamètre n’est rien d’autre que celui de la construction de l’hexagone par centre et point, il n’y a que la longueur du côté qui diffère :

Là aussi, on voit qu’une tortue dynamique, si on le souhaite, peut aussi être méta-cognitive vis à vis de l’algorithmique, en particulier sur ces situations très simples. C’est important de prendre le temps de cette réflexion méta-cognitive (pourquoi est-ce le même programme ?), et de le valider directement en « fixant une variable » à 2*OA ou à AB/2. En donnant un sens géométrique - validé perceptivement aussitôt - à la notion de variable (dans ce cas comme paramètre) on fait vivre ce subtil échange entre l’appropriation des connaissances mathématiques et un savoir faire algorithmique qui participe à, et valide cette appropriation. Même si on n’anticipe pas nécessairement le résultat, on apprend à tester des choses, ce qui permet de rendre plus simple la suite, en particulier si on veut aborder la tortue dans l’espace.

Validé aussitôt perceptivement : la tortue se comporte un peu comme un robot auquel on donne des commandes. Ce qui frappe le plus les premières fois que l’on pratique ce genre de programmation en classe (Thymio, Sphero, Ollie, ou même les petits drones) c’est le basculement didactique de nos références d’enseignants. On a appris - et pour certains enseigné - que le passage d’une géométrie perceptive à une géométrie axiomatisée (et un enseignement hypothético-déductif des démonstrations en 4°) est un long processus qui passe par une phase importante dite de la géométrie instrumentée, au cycle 3 et même un peu avant, où l’usage des outils valide les propriétés géométriques : un angle est droit par vérification à l’équerre, deux cotés sont de même longueur par validation du report de longueur au compas etc ... La géométrie instrumentée extirpe la géométrie du perceptif vers la propriété des objets. Certes, c’est toujours la personne qui manipule l’instrument qui, au final, valide perceptivement, mais au moins cette validation est-elle objectivée. Avec les robots, avec la tortue, on fait l’inverse, on revient à une validation perceptive (« le robot a bien fait 3 carrés, un peu plus grand à chaque fois ») pour confirmer l’exactitude d’une démarche conceptuelle (l’algorithme). Ce n’est bien entendu pas un retour en arrière mais ce basculement des valeurs, pour un professeur de mathématique formé à la validation par démonstration reste pour le moins questionnant : valide-t-on vraiment une démarche conceptuelle ? un savoir faire opérationnel ? Quelle part de savoir, de compétence ? C’est pour que le questionnement mathématique reste présent au cœur des compétences algorithmiques que nous proposons dans cet article, avec la tortue dynamique, des activités mathématiquement conceptualisantes sous différentes formes. Le statut de la tortue est bien différent de ceux des robots qui roulent car la production de la tortue répond précisément aux critères géométriques. Avec un robot, les carrés produits sont assez éloignés de ceux de la tortue sur un écran.

Pour tester vous-même en ligne sur le code initial :

Hexagone par centre point : https://huit.re/HexaCentrePoint
Hexagone par deux points diamétralement opposés : https://huit.re/HexaDiametre

Activités autour du carré

Comme pour l’hexagone, on travaille sur des activités élémentaires qui peuvent être néanmoins riches d’enseignement par la réactivité de l’interface. Ce sont les seuls points que nous commenterons ici, le rapport à l’interface. Dans cette partie on détaille - pour des élèves - les constructions de fonctions.

Carré par un côté et itération d’un pas

Cette copie d’écran n’est informative que sur la gestion des couleurs ; pour remplir un polygone, il est préférable de mettre l’instruction à la fin, après la boucle, quand il y a quelque chose à remplir. La variable cote, magenta, est une variable locale. A priori on peut mettre des accents aux variables, mais par habitude ...

Pour une première activité d’itération sur les milieux des côtés - on suppose ici être dans une classe qui connait le rapport entre la diagonale d’un carré et son côté - on peut procéder modestement, en faisant l’activité à la main. Un première phase consiste à placer la tortue au milieu du segment sur laquelle elle se dirigeait à la sortie de la boucle, en la faisant tourner de 45°. Il y a deux instructions dans cette phase, encadrées par un lever et poser de la tortue. La encore il est très pratique, lors de la construction, d’avoir la position de la tortue : l’anticipation est différente, elle est locale et testée immédiatement.

Il faut ensuite calculer la longueur du nouveau côté. On considère ici que c’est du cours. Puis on duplique la boucle du carrée. Le carré est construit dès la duplication - ci dessous le code est juste décalé sur le précédent et le second carré construit - mais bien sûr, pas dans la bonne taille.

Il faut placer la variable NouvCote à la place de cote dans la boucle ... et placer la boucle en fin de programme ... quand même !

Même itération - Utilisation d’une procédure Carré

La méthode pour construire une fonction ou une procédure est la méthode générale de Blockly, très simple. On peut la résumer ainsi : il suffit de nommer les objets et de les glisser pour en faire des paramètres

Les élèves apprennent le principe des procédures très tôt - ou apprendront avec les nouveaux programmes - avec des logiciels sur tablette ou en ligne comme LightBot (ou d’autres), donc il semble légitime de les utiliser ici. Selon le contexte scolaire, on peut trouver que c’est un peu trop difficile avec des paramètres, nous verrons dans le prochain paragraphe que l’on peut s’en passer en déclarant toutes les variables structurantes de la figure comme globales.
Didactiquement, l’utilisation de procédure peut simplement servir à préparer des étapes différentes - pour une présentation collective d’une narration de recherche par exemple. Nous en verrons une utilisation significative au dernier onglet de cette barre.

La première itération s’écrit alors ainsi :

On a laissé l’appel au second carré non en ligne pour signaler que l’on peut mettre les paramètres en ligne par un clic droit (ou tap prolongé) sur la procédure :

Le passage à la répétition de l’itération - affectation itérée du côté du carré

Dans l’illustration précédente, on voit bien que la souris est « au début » du carré intérieur. Autrement dit, pour itérer le procédé, il suffit de le répéter, précisément depuis la ligne NouvCote. Un élève un peu rapide fait alors un répéter du tout. Il obtient la figure ci-dessous. Dans une fiche de travail, on peut alors proposer aux élèves d’étudier ce qu’a fait la tortue, éventuellement sans même donner le code associé, qui est déjà connu - sur les machines des élèves.

Ce qu’a fait la tortue : l’oralisation d’une expression de ce type offre plusieurs avantages. Elle entretient la dévolution naturelle que tout le monde a déjà expérimenté en classe avec le lutin de Scratch. Le passage à la tortue est un transfert intéressant car il permet de distancier le rapport à l’erreur : on peut discuter de ce qu’a fait la tortue et de ce qu’elle aurait dû faire, sans référence à qui pilote la tortue.

On attend une analyse précise, car elle est alors - enfin ... peut devenir chez certains élèves - plus conceptuelle que procédurale. L’idée est de faire émerger la nécessité de modifier non seulement la variable NouvCote mais bien la variable cote.

Et ceci à l’intérieur de la boucle. Cela reste assez difficile - déjà c’est une récurrence - d’autant plus que les deux variables interviennent dans la boucle. Par exemple une utilisation itérative d’une division par une puissance de 2 appliquée aux deux variables n’aboutit pas : il n’y a pas d’autres écritures simples de l’algorithme que l’utilisation de cette affectation.

En ajoutant deux lignes cosmétiques en fin de boucle, la couleur et le remplissage du dernier carré, on obtient quelque chose d’un peu plus esthétique.

On retiendra de cette présentation que si le passage d’un carré à une première itération est largement accessible, le passage à l’étape suivante est probablement à réserver en bonus aux élèves les plus rapides.

Carré par centre et point

Cette figure est importante à maitriser si on veut faire des activités sur les cubes dans l’espace. Elle ne pose pas de difficulté particulière. La faire en 2D puis, plus tard en 3D donne du sens à la perception - en acte bien entendu - du plongement d’un plan dans l’espace.

Carré par deux points diamétralement opposés

Bien entendu, comme pour l’hexagone, cette figure diffère de la précédente seulement par une instruction, la longueur du côté. Il est alors intéressant de proposer une activité qui contient les deux constructions car de fait, on passe d’une figure à l’autre en changeant une division par racine de 2, en une multiplication : il n’y a qu’un signe arithmétique qui change entre les deux programmes ! Et on peut le faire directement sans relancer le programme.

Manipuler les figures de ce paragraphe en ligne (pour tester et modifier le code) :

Carré et une itération : https://huit.re/CarreCote1Iter
Carré et une itération avec procédure : https://huit.re/CarreIterProc
Itération multiple et couleurs : https://huit.re/CarreIterCouleur
Carré par centre et point : https://huit.re/CarreCentrePoint
Carré par diamètre et itération : https://huit.re/CarreDiamIter

Complément : fonction sans paramètres avec des variables globales

Une façon de ne pas avoir à faire passer des paramètres dans certaines fonctions est d’utiliser des variables globales. Par exemple dans la dernière figure proposée, on a utilisé une variable globale côté (avec les accents) au lieu d’une variable locale. On peut alors utiliser cette variable, et la modifier, dans la procédure Itération (elle aussi avec accent dans le nom) sans avoir à la passer en paramètre.

Bien entendu le code serait un peu plus simple avec, en plus une procédure Carré avec paramètre, mais ce n’était pas l’objectif ici..


Haut de la barre de généralité (onglet suivant : rotations de polygones à la tortue)

Rotations de polygones

Rotations de polygones réguliers

On va aller un peu plus vite dans cet onglet. Bien entendu tout ce qui se fait au curseur ici peut se proposer de manière arithmétique, essentiellement pour l’hexagone d’abord, ensuite le pentagone et l’octogone par exemple.

Les élèves sont supposés avoir déjà travaillé sur les polygones, on aborde donc ici une version un peu plus algébrisée dans la mesure où on construit un polygone régulier à n côtés en tournant la tortue de 360/n degrés, ce qui reste, selon la classe bien entendu, tout à fait accessible.

L’idée est de faire une série de rotations du polygone créé, de l’angle de la rotation de la tortue. Autrement dit si le polygone a n côtés, nous allons répéter n fois le polygone construit.

Remarque : on utilise ici le terme rotation, qui n’est pas au programme, pour dire que l’on fait tourner la figure à la tortue. En effet, si la transformation rotation comme application isométrique du plan euclidien n’est pas au programme, cela n’empêche pas que les élèves, ayant des compétences sur les angles, puissent faire tourner des figures à la tortue. On est sur un savoir-faire opérationnel.

Première rotation d’un polygone régulier

Cela donne cette figure. Le code est dans le point bleu P1. C’est volontairement minimaliste.

Rentrer le code sur une figure pré-construite : https://huit.re/RotPoly1Intro
(en fait, lors des diverses présentations IREM ou formations, j’utilise souvent des figures pré-construites pour aller rapidement à l’essentiel. De même avec les élèves la figure pourrait être proposée au téléchargement avec seulement quelques affectations à compléter, comme les angles bien entendu, ce qui permet de commencer par mettre des valeurs numériques avant de passer à des expressions algébriques. Mais bien entendu, la structure même du programme peut aussi être un enjeu en soi, cela dépend des objectifs des séances.

Figure terminée : https://huit.re/RotPoly1

La configuration est assez différente selon que n est pair ou impair.

On peut déjà interroger cette question : pourquoi quand n est pair ? ... il est préférable de ne pas compléter la phrase pour ne pas orienter par avance la réflexion. Les réponses peuvent en effet être très diverses, des élèves pensant souvent que, pour n pair, les polygones se touchent et que ce n’est pas le cas pour n impair.

Pour aller contre cette représentation, on ajoute une coloration en fin de première boucle.

On peut alors formuler une question - une tâche - plus précise, pour que les élèves perçoivent mieux les polygones et leurs rotations dans le cas pair : justifier qu’il n’y a qu’une seule couleur pour n=4, deux couleurs différentes (deux parties, une avec une opacité de 20 et l’autre avec deux opacités de 20 - on ne dit pas une opacité de 40 puisque ce sont des pourcentages ...) - et trois couleurs différentes avec n=8. Par justifier, on attend simplement une argumentation.

Modification de l’exemple précédent

Lors d’une présentation, un collègue un peu curieux, se demanda ce qu’il se passerait si on prenait la moitié de l’angle 360/n, c’est-à-dire si on partageait un angle plat au lieu d’un tour complet par le curseur. Bien entendu, nous ne sommes pas en classe, chacun comprend immédiatement qu’il faut doubler le nombre d’itérations.

Cela fait une figure surprenante, à la complexité aussi certaine qu’esthétique.

La figure en ligne : https://huit.re/RotPoly2

On remarquera une régularité de la figure produite pour n impair alors que dans la figure précédente, c’était pour le cas pair.

Ajout d’un curseur de couleurs

Il n’y a que 70 couleurs pour la tortue, issues d’un bloc standard de couleurs de Blockly. On peut choisit une couleur de départ à partir d’un curseur et modifier les couleurs (bloc ajout d’un indice pour la couleur) en modifiant le curseur. Une technique qui peut s’appliquer à beaucoup de figures.

La figure en ligne : https://huit.re/RotPoly2Couleurs

Une (vraie) rotation des polygones

Dans ce paragraphe, nous utilisons la tortue pour appliquer une rotation aux figures précédentes, toujours en manipulation directe. Les ressources de la tortue dynamique sont tout à fait surprenantes. C’est l’occasion de revenir sur l’organisation structurée du programme de la tortue.
On reprend la première figure de cet onglet (RotPoly1). On y ajoute un curseur a de 0 à 180°. Le curseur est allongé pour passer sur un maximum de positions particulières, mais on pourrait forcer le pas à 0,1 degré par exemple.

La procédure ne contient que la double boucle. Il n’y a pas de paramètre car la longueur entre les segments est désormais une variable globale (la couleur est différente).
Le programme principal commence par quelques lignes d’initialisation puis un premier appel à la procédure, un changement de couleur et une rotation de la tortue de l’angle donné par le curseur et un second appel à la procédure. Le code est trivialement simple et limpide pour un résultat « à la tortue » assez surprenant.

Une utilisation sur les diviseurs de 360.

En prenant n = 5, 6, 9, 9, 10, 12, 15, 18 et 20 on peut tester l’angle minimal qui permet de recouvrir la figure : on est bien sûr dans un travail de calcul mental sur multiples et diviseurs, l’utilisation du curseur n’est qu’une vérification ;-)

Tester la figure en ligne : https://huit.re/RotRotPoly1

Remarque : pour une utilisation en classe, on peut partir de n=6 et fixer le pas de n à 2 pour n’avoir que des nombres pairs. Jusqu’à 20, il n’y a alors que 14 et 16 qui ne sont pas des diviseurs de 360.

Itération de la figure RotPoly1 - un exemple de pavage du plan

On quitte ici le domaine scolaire pour aller un peu plus loin dans l’exploration des possibilités de la tortue. Pour n=6, le contour de la figure étant un hexagone, elle pave le plan. Même si ce n’est pas le cas pour n=8, on se propose ici de compléter la figure par un début de pavage (n=6) et de faire une autre figure (n=8) depuis la figure initiale. C’est l’occasion d’aller un peu plus loin dans l’usage de la tortue. Le code aurait été beaucoup plus simple si on avait gardé seulement n=6 par exemple, qui finalement est le seul cas intéressant.

Le code

Le curseur n a été modifié, il ne peut prendre que les valeurs 6 ou 8.

A gauche, le programme principal et la procédure de rotation (déjà utilisée), à droite le traitement du pavage (n=6) ou d’un ’non pavage’ (n=8). Le programme principal contient une variable globale AB qui est la distance entre les deux points de base de la figure. On oriente la tortue vers le second point.
On applique ensuite la procédure de rotation pour faire la partie centrale et ensuite la procédure qui reproduit cette figure sur le contour de la première juste tracée.

Voyons cela en détail. Le principe est d’aller placer la tortue au centre des futures motifs. Pour cela on doit faire 2 fois un parcours de 2 termes si n=6 et de 3 termes si n=8. Comme c’est deux fois le même, il est plus simple de faire le parcours avec un déplacement de 2AB (belle application de l’homothétie ... mais c’est trop technique pour être utilisé en classe. La rotation dépend de n. Le premier si alors est inutile il suffisait de tourner de 360/n. Le second si, lui, est nécessaire, il rend compte qu’il y a un segment de plus à parcourir pour n=8.

Dans la boucle compter, le pas est fonction de n, car on a un pavage pour n=6 mais pas pour n=8, donc on ne trace que la moitié de ce qu’on pourrait faire. La boucle permet de placer la souris aux n centres autour du polygone de départ avant d’appeler la procédure générique.

La figure

La figure en ligne : https://huit.re/PavageRotPoly1

Petit délire pour finir l’onglet

Il ne suffit que d’une ligne pour faire une rotation du tout. Deux lignes si on l’applique aussi à la figure centrale. Il suffit d’appliquer la rotation juste avant de poser le stylo.

Ce qui donne ...

La figure en ligne : https://huit.re/RotationPavage

Quand on pense que ceci est produit à la tortue, on a l’impression, avec ces rotations, d’avoir fait un tour d’horizon significatif des capacités de la tortue. Il n’en est rien. L’onglet le plus surprenant de cet article, en terme de renouveau d’une pratique géométrique scolaire élémentaire est le prochain : nous allons transformer un quadrilatère à la tortue pour qu’il vérifie des contraintes données.


Haut de la barre de généralité (onglet suivant : tortue et propriétés géométriques)

Modifier un quadrilatère

Quand la géométrie se transforme en un jeu sérieux

Dans cette partie, on se donne un quadrilatère ABCD et on se propose de modifier à la tortue ce quadrilatère pour qu’il vérifie différentes contraintes. L’objectif, dans cet onglet, est de n’utiliser que les longueurs, avec le bloc Distance. On peut ainsi travailler sur les côtés, ou sur les diagonales. Dans une autre barre de menu, on ira plus loin dans ce domaine, ici c’est une utilisation uniquement scolaire que l’on propose.

Le rapport aux jeux sérieux vient du fait que dans ces exercices, la tortue déplace les points à la bonne place comme dans les jeux de type « bousier » - typiquement Sokoban, parfois utilisé comme un jeu de logique même dès l’école primaire - ou un personnage pousse une charge pour la placer où il faut à travers des règles précises - de labyrinthe pour le jeu, ici de propriétés géométriques.

Les traces de la tortue seront toujours très courtes. Il s’agit de mettre en oeuvre une propriété du quadrilatère cherché qui permet de réaliser la construction à la tortue. L’utilisation de la tortue est potentiellement algébrique puisque l’on utilisera, en général, la position de la tortue comme donnée.

Dans une fiche de travail, le premier exercice, le parallélogramme, peut être détaillé et présenté comme prototypique de la démarche. D’une manière générale, on se donne comme consigne de placer le code dans le point A, ce qui n’est pas un problème, sauf si on veut complexifier un peu les exercices.

Rendons à César-Eric ...
Un jour je demandais à Eric Hakenholz dans quel contexte on avait intérêt à utiliser la position de la tortue. Il a répondu par cette phrase : « Pour fixer un point à la position de la tortue », puis il a continué son mail en donnant l’exemple du parallélogramme, en précisant que c’était une piste à creuser ... C’est ce que nous commençons à faire ici.

Le parallélogramme

Consigne : Soit ABCD un quadrilatère. La tortue doit déplacer le point D pour que ABCD soit un parallélogramme.

Principe : ABCD est un parallélogramme si ses diagonales se coupent en leurs milieux : partant de A la tortue va au milieu de la diagonale [AC]. Elle vise B et elle recule de la distance qui la sépare de B. Le point D doit être positionné à cet endroit.

On le voit, l’utilisation de la souris est très simple, l’accent est mis sur les propriétés des objets.
Bien entendu la figure est dynamique, si on déplace A, B C le point D se réajuste en permanence.

Remarque importante : De par la conception interne du logiciel, le point D reste un point de base : l’action de la tortue ne modifie pas le statut d’un point. Le point D ne devient pas un point construit. Il prend la place du 4° point du parallélogramme ABCD, ceci même quand on déplace A, B ou C, mais lui même peut être déplacé. Il redevient 4° point du parallélogramme dès que l’on touche à un autre point.

On notera que cette figure est aussi celle de la construction de la droite passant par C et parallèle à (AB).

Structuration en étapes

Pour voir la construction par étapes, puisque la tortue est en temps réel, en rapport avec la compétence C4 du socle, en particulier « Communiquer son résultat », on peut demander aux élèves de finaliser leur construction en étapes distinctes. Les élèves font leur construction, et ensuite la découpent en étapes. Par exemple pour le parallélogramme, cela pourrait être ceci (pour la construction des étapes, il est plus facile, depuis la construction, de commencer par la fin) :

Pour exposer sa démarche l’élève prend les étapes dans Fonctions, et les glisse sous l’initialisation, ce qui donne :

Exploration en ligne : https://huit.re/QDvsParallelo

Rappel de l’utilisation :
1. Activer le mode standard (flèche en bas à gauche)
2. Clic droit sur A et choisir l’icône de Blockly
3. Choisir l’onglet Tortue en bas à gauche
4. Glisser les étapes comme indiqué ci-dessus

Le rectangle

On se donne donc toujours un quadrilatère ABCD. On fait ici deux figures en une seule, pour une présentation plus rapide. En classe, on séparera les deux activités, bien entendu.

Consigne : La tortue doit transformer le quadrilatère ABCD en un rectangle de deux façons différentes :
Figure A - un côté est [AB], l’autre côté a même longueur que le côté initial [BC].
Figure B - la diagonales est [AC].

Dans chaque cas, il est important de commencer par repérer ce qui reste fixe et ce qui doit être modifié. Dans les deux cas, deux points restent fixes et deux points sont à modifier. Dans le premier cas, A et B sont fixes, C et D sont à modifier. Dans le second cas, c’est A et C qui sont fixes et B et D à modifier.

Pour la contrainte A, il s’agit d’utiliser les côtés et les angles droits. Ce qui se fait, par exemple, très simplement de la façon suivante (à gauche, les étapes des deux figures ) :

Et l’application de chaque étape donne

Pour la contrainte B, il s’agir de mettre en œuvre la propriété des diagonales qui sont de même longueur et se coupent en leurs milieux. Exemple de structuration possible :

Et son application

Différence entre le parallélogramme et le rectangle

On peut remarquer que si la construction du parallélogramme a un degré élémentaire d’algébrisation, il n’en est rien pour le rectangle qui, de ce point de vue, reste arithmétique, c’est-à-dire qu’on avance avec des longueurs données, non liées à la position de la tortue. En ce sens, on peut penser que, conceptuellement, ces deux exercices sur le rectangle, sont plus simples que l’exemple prototypique du parallélogramme.

Exploration des deux exercices en ligne : https://huit.re/QDvsRectangle
(il faut peut-être un peu chercher l’initialisation -elle dépend des écrans. Penser à modifier les points A, B, C, D entre les deux exercices, après avoir supprimé les étapes de la première figure)

Le losange

Dans la présentation, nous irons un peu plus vite, tout est très classique. L’important dans ces exercices est d’être précis sur les consignes. On peut même préciser les points sur lesquels la tortue n’agit pas et les points qu’elle doit déplacer.

Consigne : ABCD est un quadrilatère. On souhaite que la tortue transforme ce quadrilatère en losange.
Exercice 1 : dont [AC] est une diagonale et dont le côté est la longueur AB. Déplacer B et D.
Exercice 2 : dont [AB] est un côté et dont l’autre côté issu de A est porté par la demi-droite [AD). Déplacer C et D.

Une solution de l’exercice 1
Cet exercice est non trivial, ce n’est pas, dans un milieu scolaire, un premier exercice sur le losange. Il est plutôt réservé soit à une pratique régulière de la tortue soit encore à une narration de recherche .
La solution est donnée ici en image, au lecteur d’imaginer le contenu de chaque étape.

Appropriation conceptuelle des illustrations : cette construction est-elle arithmétique (comme le rectangle ci-dessus) ou plus algébrique (comme le parallélogramme) ?

Voir le détail de l’étape 1 de l’exercice 1

L’exercice utilise nécessairement le théorème de Pythagore pour calculer l’autre demi diagonale du losange. On a utilisé des variables globales, elles sont utilisables dans toutes les étapes sans avoir à être transmises. Ce n’est donc pas un exercice de base.


Une solution de l’exercice 2

Au contraire du précédent, cet exercice n’a pas de difficulté particulière, pas de variables globales par exemple.

La figure en ligne avec les deux exercices : https://huit.re/QDvsLosange

Le carré - Évolution du type d’exercice

On peut reprendre les exercices précédents, avec comme objectif l’obtention d’un carré. On peut aussi faire évoluer le type d’exercice dans une voie légèrement différente où il ne s’agit plus de modifier la position des points mais de donner des contraintes en fonction des points ABCD.

En effet, la structure de la trace de la tortue ne permet pas des références circulaires : on ne peut pas avoir une trace qui, à un moment de sa construction utilise le point C - pointer vers C par exemple - et plus loin redéfini C, car la trace est aussitôt redéfinie : l’autoréférence s’applique alors de multiples fois, par exemple une première fois par glissement de l’étape vers le programme puis quand on lâche la souris (OnMouseUp) elle s’applique à nouveau.

Par exemple à partir d’un quadrilatère ABCD on se propose de chercher à construire un carré de sommet A et de sommet opposé, le milieu de [CD]. Dans ce cas, on pourrait redéfinir le point B mais pas C ou D.

Voir un exemple détaillé de ce qui se passe si on tente de redéfinir les points C et D

Il faut donc être prudent, et tester la faisabilité de ses idées avant, on peut facilement se donner des contraintes assez vite inextricables, d’où la nouvelle orientation proposée dans la suite.

fin de l’exemple et du bloc


On peut faire évoluer ce type d’exercice vers une situation où le quadrilatère terminal n’est pas un déplacement des 4 points A, B, C, D mais construit à partir d’eux. Dans l’exemple précédent, on peut proposer une consigne comme :

Consigne : Soit ABCD un quadrilatère. La nouvelle mission de la tortue est de réaliser un carré de sommet A et de sommet opposé à A le milieu de [CD]. Elle doit redéfinir B comme sommet du carré, et terminer le carré. La tortue laissera visible toutes ses traces préliminaires ou intermédiaires en bleu, le carré final sera en rouge, avec ses 4 côtés.

Sans autre précision, il y a une bonne variété de traces, même pour un exercice aussi simple. Une option serait de lancer un défi au minimum de lignes de code. On a tous joué à ça quand on était jeune (Les plus anciens des collègues, nous avons eu des calculatrices à 50 lignes de code).

Dans le contexte de la tortue, l’exercice est nécessairement algébrique. En soi c’est intéressant.
Voici une solution possible.

Explorer la figure en ligne : https://huit.re/QD_carre1

Ce type d’approche élargit considérablement les possibilités d’exercices simples. Nous reviendrons, dans une autre barre de menu sur des situations moins immédiates mais plus riches géométriquement, en particulier sur les questions d’orientation, non abordées ici.

Un exemple d’autres types activités sur les propriétés géométriques revisitées par la tortue

Pour rester dans un domaine toujours réaliste en collège, on revient au triangle. Nous avons vu, dans la présentation des outils, l’illustration par des traces de tortue de l’existence de l’isobarycentre de trois points (centre du gravité du triangle). Dans le même ordre d’idée, nous illustrons ici la propriété des bissectrices d’un triangle.

Les bissectrices peuvent être tracées comme médianes de triangles isocèles annexes. En voici une description dans une version collège, en trois étapes, une par bissectrice :

La figure en ligne pour tester les trois étapes : https://huit.re/BissTR3etapes

Hors programme du collège, on peut s’autoriser plus de concision, avec une procédure par passage de paramètres :

La figure en ligne : https://huit.re/BissTRparam


Haut de la barre de généralité (pour revenir sur les onglets précédents)


http://www.ghostinthesoft.com/category/ludwig-van-bousier

2. Utilisation dans l’espace.

La tortue 3D permet déjà, en soi, une approche nouvelle de l’espace et de la géométrie dans l’espace. Après un moment de flottement, une approche par coordonnées relatives libère l’utilisateur d’un certain carcan propre au repère absolu. La tortue 3D s’avère très pertinente, opérationnellement et didactiquement.

Elle peut, légitimement, être perçue comme déconcertante dans un premier temps, car si on essaie de reproduire les objets mathématiques classiques de la géométrie repérée usuelle, le premier réflexe est de se dire qu’il nous manque beaucoup de données. Mais si on se décale de nos habitudes culturelles, les choses deviennent bien plus simples. Par exemple (prochaine barre d’onglet) si on veut réaliser un dodécaèdre à la tortue, en référence à nos pratiques mathématiques usuelles, il y aurait pas mal de calculs à faire. Mais si, avec la tortue, on se propose juste de plier un patron jusqu’à l’angle dièdre du dodécaèdre (supposé connu quand même), il n’y a plus du tout cette difficulté initiale.

Nous allons voit qu’obtenir à la tortue même certains polyèdres archimédiens (les plus simples) ne pose aucune difficulté scolaire, de même, toujours dans un cadre scolaire, le pliage/dépliage d’un patron du cube est, de manière étonnante, tout à fait abordable. L’usage de la tortue 3D s’avère être, en définitive, un très bel outil d’exploration et d’investigation de l’espace.

Généralités

Détails sur les outils 3D

La tortue 3D est en fait une flèche, verte sur le dos de la carapace, noire sur le ventre. Il y a 4 outils de base seulement, mais qu’il convient de bien s’approprier. Cela reste - et devrait peut-être rester- intuitif. On se propose ici de poser un regard distancié sur ces outils et de les nommer de manière plus mathématique, à usage des enseignants uniquement.

La position initiale est dans le plan du sol, sur l’axe (Ox). Une réinitialisation des angles remet l’orientation de la tortue, là où elle est, dans un plan parallèle au plan du sol et dans direction (Ox).

Mathématiquement, l’outil pivoter est toujours défini de la même façon : une rotation de l’angle indiqué, selon un axe, dans l’orientation de la tortue, orientation donné par le sens de la flèche. Mais visuellement, il y a une différence entre pivoter « vers le haut/bas » et pivoter « vers la gauche/droite ». Comme on le voit dans les illustrations ci-dessus, pivoter vers la gauche (ou la droite) c’est tourner autour de l’axe porté par la tortue. Par contre, pivoter vers le haut (ou le bas) est une rotation autour d’un axe orthogonal à la direction portée la tortue (et dans le plan de la tortue).

Comme les élèves travaillent visuellement, en général par approximation locale, la différence est de taille. Nous allons voir un peu plus loin, quelques remarques et conseils d’utilisation plus précis à ce sujet. Mais avant cela, commençons par un exemple tout simple.

Un exemple élémentaire du « Pivoter vers le haut »

Dans cet exemple on reprend, en l’algébrisant un peu, l’exemple de la quatrième vidéo de Eric Hakenholz sur la tortue, celle où il présente la tortue 3D. Il s’agit de faire « un livre en 3D ». Nous y ajoutons deux curseurs, un pour le nombre de pages du livre, et un de « feuilletage », l’angle d’ouverture entre deux pages.

On commence par construire un carré à partir de deux points quelconques du sol (en particulier le centre du repère n’est pas le centre du carré) :

Figure préliminaire avec le carré pour faire la suite en ligne : https://huit.re/LivreIntro
(le code est dans le point A)

La tortue, orientée par la droite (AB) a donc sa direction perpendiculaire à l’arête précédente. Ainsi un « Pivoter haut » correspond bien à une rotation autour de cette arête. Il n’y a rien d’autre à faire. Si on dispose d’un angle et d’un nombre de pages, on peut simplement faire ceci :

La rotation de la feuille est donnée par le Pivoter haut de l’angle a. La variable i commence à 0 en dessinant le carré du sol, pour que le nombre n soit le nombre de fois que l’on applique l’angle a (si n = 9 et a=20, la dernière feuille est au sol comme la première).

Ensuite on peut ajouter un peu de couleur :

Figure finale : https://huit.re/Livre

Cette figure permet de réinvestir, non pas les rotations - elles ne sont pas au programme - mais bien les angles et les configurations. Par exemple sur l’illustration suivante, on peut demander si une des feuilles qui paraît verticale est bien, ou non, verticale.

Ou encore, on peut demander quels sont les angles (nombres entiers en degrés) qui font que l’une des feuilles au moins est effectivement verticale.

Choisir dans quelle direction pivoter - patron dépliable de pyramide à base carrée ... à la tortue

Ce que l’on peut faire ressortir de l’exemple précédent, c’est la simplicité de la situation pour « Pivoter vers le haut » car la tortue est déjà orthogonale à l’arête. Ce sera encore le cas pour le cube. Donc on devrait pouvoir faire des choses très simples avec le cube. Voyons ici - éventuellement pour une seconde lecture - ce que cela signifie si on veut faire pivoter une figure, bien entendu orthogonalement à l’arête, mais qui n’a pas d’angle droit, un triangle équilatéral par exemple, pour faire, à la tortue dynamique, le patron dépliable d’une pyramide à base carrée.

Cette partie n’est pas rédigée pour une activité scolaire, mais pourrait l’être au lycée.
L’étape 1 est un classique pour le collège, et nous y reviendrons.

L’origine de ce paragraphe est dans le fait qu’il y a deux façons d’aborder la rotation d’une pièce autour d’une autre, une version 1, en utilisant ce qui précède, pivoter vers le haut, et une version 2, pivoter par la gauche.

Étape 1 : le carré centré à l’origine du repère

La première étape est de faire un carré, comme pour le livre, mais cette fois en le centrant sur l’origine du repère pour être plus esthétique. C’est donc une carré « par centre et sommet ». Comme on est dans le plan du sol, c’est exactement la même figure, et le même programme, que dans le cas du plan. Nous avons déjà vu ce programme quand nous avons abordé les polygones.

On notera juste que la variable cote est globale, pour pouvoir être utilisée dans d’autres procédures sans avoir à être passée par paramètre. En classe, selon le contexte bien entendu, on peut simplement dire qu’une variable globale est disponible dans toute la figure.

Lancer cette figure en ligne (pour centrer l’activité sur la suite) : https://huit.re/PatronPyraIntro

Version 1 - Étape 2 : une face triangulaire (deux côtés d’un triangle équilatéral)

On se donne un curseur a, de 0 à 180° pour tester, on affinera les bornes à la fin. Il faut commencer par mettre la tortue perpendiculaire à l’arête avant de pivoter vers le haut de l’angle a.

C’est dans ce plan de la tortue qu’on trace les deux arêtes de la face Il faut donc tourner de 30°, puis tracer les deux côtés, classiquement comme un triangle équilatéral.

Ensuite, la tortue est - bien entendu - dans le plan qu’elle parcours (mais en classe il est bon de le rappeler) et donc à la fin, elle fait un angle de 60° avec l’arête. Il faut donc la tourner d’un angle de 30° pour qu’elle redevienne orthogonale à l’arête.

Mais le plus surprenant dans ce contexte de géométrie relative - d’autant que cela n’est pas une règle générale, cela dépend du contexte- est que, pour revenir dans le plan du sol, il faut à nouveau Pivoter vers le haut de a (et non pas vers le bas pour compenser comme on serait tenter de le penser a priori).

Version 1 - Étape 3 - Les 4 faces

La tortue se retrouve alors dans la même position qu’au départ mais sur l’arête suivante : il suffit de placer le tracé de cette étape dans une procédure et de l’exécuter 4 fois pour finir le patron dépliable.

Reste la question de l’angle maximal. Ce n’est pas simple à proposer en classe. Si on souhaite le faire, il faut construire une démarche en plusieurs étapes. On trouve 180°-acos(-1/3)/2.

La figure finale : https://huit.re/PatronPyraCarre

Inversion de tourner / Pivoter dans la face

On a insisté sur l’importance de se placer dans le plan de travail (Pivoter orthogonalement à l’arête) avant de tourner de 30°. Comme, en classe, des élèves feront spontanément l’inverse, voici ce que cela donne : dans cette illustration l’instruction tourner, qui doit être après pivoter, a été placée avant : sauf pour l’angle nul, l’extrémité de l’arête n’est pas dans le plan du sol.

Version 2 - Préliminaire

Pour être dans le plan correspondant au plan de pliage, on peut pivoter vers le haut de l’angle, perpendiculairement à l’arête (version 1) mais on peut aussi simplement pivoter à gauche de l’angle selon l’arête :

Version 2 - Étape 1 - La construction de la face

Nous sommes tout de suite dans le plan de la face. La construction de la face se fait simplement :

Version 2 - Étape 2 - Placer la tortue dans la position initiale

La tortue est, comme toujours, dans son plan. Dans celui-ci, elle est à 30°de l’orthogonalité à l’arête de rotation. Et quand on rétablit l’orthogonalité, pour retrouver la face du sol, il faut pivoter vers le haut. Ce sont donc les deux dernières lignes de la nouvelle version de la procédure.

Ayant retrouvé la même position, avant la face, sur l’arête suivante, on termine comme dans la version précédente, par répétition de la procédure.

Figure du patron avec le « Pivoter vers la Gauche » : https://huit.re/PatronPyraPG

Bilan

On voit donc qu’il y a deux approches possibles pour faire pivoter un polygone autour de l’arête commune avec un autre polygone. La différence en terme de programme n’est pas significative, la version 2 (Pivoter vers la gauche) utilise une ligne de code de moins que la version 1 (Pivoter vers le haut).

Même si tout ceci n’est pas au programme, ces démarches restent assez abordables - de par le temps réel de la tortue - et ce sont des activités d’appropriation de l’espace à la fois originales, ludiques, et d’une grande efficacité conceptuelles. Elles méritent d’être connues.

Ces deux méthodes permettent finalement de construire les polyèdres très simplement avec la tortue, simplement en réalisant l’un de leurs patrons. C’est ce que nous verrons, pour les situations plus complexes, dans la barre d’onglets suivante (Partie 3). Pour les cas les plus simples, nous les voyons dans cette partie.

Haut de la barre sur l’utilisation dans l’espace (onglet suivant : cube par 4 carrés et applications)

Cube par 4 carrés

Avant de parler du patron du cube - qui se fait facilement à la tortue - commençons par construire un cube. Nous allons le construire simplement en traçant les 4 carrés des faces latérales, ce qui construit les 12 arêtes du cube. Construisant 4 carrés, on construit 16 arêtes, soit 4 arêtes deux fois. Dans le cadre d’une fiche de travail, on peut alors demander quelles sont précisément les arêtes dessinées deux fois.

Construire un cube par 4 carrés

Pour rester dans un registre « pré-pythagoricien », on reprend la figure de base de l’exemple du livre : deux points A et B dans le plan du sol. Ce serait plus esthétique d’avoir une face du sol centré en l’origine du repère, cela oblige à utiliser des racines carrées, ce que l’on éviter ici.

Étape 1 - un premier carré vertical

Cette étape est élémentaire : il suffit de placer la tortue verticalement, dans la bonne direction - c’est-à-dire en ayant pointé vers B tout d’abord, et de faire un carré à la dimension voulue. On notera que l’on reste naturellement avec une variable standard (c’est-à-dire locale). Dans certaines classes, on pourrait même ne pas utiliser de variable locale et mettre Distance(A, B) à chaque fois.

Étape 2 - les 4 faces

Pour faire les 4 faces, il suffit de répéter cela 4 fois, en ayant pris soin, après le tracé du carré, de replacer la tortue dans le plan du sol, de l’avancer d’une arête et de la tourner à gauche.

Comme la construction se fait séquentiellement, à mesure que l’on pose les commandes dans la boucle, il est intéressant de voir ce que produit la tortue en temps réel juste avant d’avoir placé la dernière commande. En effet, ici le temps réel peut dérouter certains élèves qui ayant effectivement anticipé les bonnes commandes, n’anticipent pas (en général pas du tout) la réaction en temps réel de la tortue lors du dépôt une par une des commandes. Cela donne (avant la dernière instruction) :

Étape 3 - le cube

Il ne faut pas être déstabilisé par les constructions intermédiaires. Cela peut même être un jeu d’en rendre compte en classe et peu à peu d’apprendre à les anticiper, quand elles sont simples. En ajoutant le tourner gauche final, le cube apparaît tout de suite.

Autre approche pour l’étape 2

Dans une logique de pratique d’anticipation, une fois la suite d’instructions à ajouter après la boucle la plus intérieure verbalisée, une autre approche, pour éviter de rencontrer l’étape 2, consiste à placer ces instructions dans une procédure fictive, et soit ensuite

  • prendre tout le bloc une fois l’assemblage réalisé dans cette procédure intermédiaire et le glisser dans le programme principal,
  • soit nommer cette procédure et l’utiliser.

Mais dans tout les cas, on rencontre une variante de l’étape 2, c’est-à-dire la répétition des 4 carrés avant leur réorganisation algorithmiquement correcte. Là encore, si on le souhaite, c’est un jeu sur l’espace mathématiquement intéressant que de justifier la forme prise par la répétition des 4 carrés avant toute modification, comme ici :

La figure décrite ci-dessus : https://huit.re/Cube4Carres

La même figure mais avec le carré centré en O : https://huit.re/Cube4CarresCentre
(il n’y a plus le point B, cela peut être intéressant de faire passer d’un programme à l’autre pour les classes concernées)

Rappel : on a tracé 16 arêtes, donc 4 sont dessinées deux fois ... ce qui se voit, donc ce n’est peut-être pas la construction du cube académiquement idéale.

Ajouter un cuboctaèdre dans ce cube

Fort de cette construction, facile à la tortue, d’un cube dynamique (avec deux points de base en manipulation directe), on peut s’intéresser à la construction d’un cuboctaèdre. On suppose ici que le solide a déjà été présenté - ou l’est en préambule à cette activité, on ne s’intéresse ici qu’à la démarche algorithmique.

Le principe

Traditionnellement, on dit que le cuboctaèdre (troncature du cube par les sommets en partant du milieu des faces) est constitué de 6 carrés, un par face du cube - le carré des milieux de chaque face - et de 8 triangles équilatéraux, un par sommet du cube.

Cela pourrait paraître un peu compliqué mais s’il ne s’agit que de construire les arêtes - notre objectif ici - il n’y a que 6 carrés à tracer, car en les traçant, on trace en même temps les arêtes des triangles. Et ça, les carrés, maintenant, on connait. En plus en étant un peu observateur, si on construit les 4 carrés des faces latérales, en allant d’un carré à l’autre on construit en même temps le carré du sol. On construit donc d’un coup 5 carrés, il reste ensuite à faire le carré de la face du haut du cube. Finalement c’est un programme tout simple à réaliser.

Par contre, puisque l’on parle de carré des milieux dans le carré, cela ne s’adresse qu’à des élèves ayant déjà rencontré les racines carrées. Dans la suite, on a utilisé - à des fins de présentation à l’IREM - des procédures avec des paramètres, mais on peut très bien s’en passer.

Structure générale - programme principal

Une activité comme celle-ci, déjà plus conséquente, est l’occasion de mettre en oeuvre un minimum de structuration des programmes. Chaque partie peut être présentée comme une étape, c’est donc une structuration en étapes plutôt qu’en sous programmes, vu que chaque étape n’est appelée qu’une seule fois.

Le cube fait, on place la tortue au milieu d’une arête. Dans les étapes suivantes, on présente la construction de la procédure cuboctaèdre pas à pas, comme elle se construit de fait, séquentiellement.

Étape 1 - Un premier carré et un segment du 5° carré

On notera les Pivoter vers le haut. On a vu dans l’onglet d’introduction à la 3D qu’on aurait pu utiliser un Pivoter vers la gauche et ensuite des tourner à gauche.

Les deux dernières lignes préparent l’itération tout en construisant - itérativement - le carré du sol.

Étape 2 - Cinq carrés pour le prix de quatre

Cette étape est simplement la répétition de l’étape précédente, sans aucun ajout nécessaire entre les répétitions : le code est naturellement bien factorisé. Contrairement à la construction du cube, il n’y a aucune arête construite deux fois : en faisant 6 cubes on construit 24 arêtes. Comme le cuboctaèdre a 24 arêtes, elles sont toutes construites une fois.

Étape 3 - Le sixième carré

On place simplement la tortue au bon endroit pour ajouter le dernier carré.

La figure en ligne : https://huit.re/CuboctaDansCube

La même figure avec le carré du sol centré en O : https://huit.re/CuboctaFCarreCentre

Application de ces constructions quand le segment [AB] n’est pas dans le sol

La démarche de construction du cube est auto-référente. On peut l’appliquer sur n’importe quel segment. En fait quand la tortue va d’un point A à un point B, la tortue a sa direction changée, bien-sûr, mais avec une constante : la tortue ne pivote pas. Autrement dit, elle est dans le plan virtuellement constitué par sa direction et ses pointes de flèche.

Voici le programme du cube appliqué à deux points A et B dans deux plans orthogonaux

Sur l’illustration suivante, on voit qu’une arête est dans le plan du sol, ce qui vient du fait que même en changeant de direction, la tortue ne pivote pas sur elle-même, c’est une donnée importante dans certains cas.

Ajout du cuboctaèdre avec le même programme que dans le cas du sol. En pratique il faut bouger un peu la figure (celle en ligne) pour bien voir la figure

Figure du cube avec A et B dans deux plan verticaux : https://huit.re/CubeAB2plans

Ajour du cuboctaèdre : https://huit.re/CuboctaAB2plans

Haut de la barre sur l’utilisation dans l’espace (onglet suivant : patrons de cube)

Patrons de cube

Quelques patrons dynamiques de cube à la tortue

Dans cet onglet, nous allons explorer ce que la tortue dynamique peut apporter à la construction élémentaire de patrons de cubes pliables. Dans l’introduction à la 3D « avec la tortue » nous avons vu que le cas des faces carrées était particulièrement simple à traiter pour les rotations entre faces. Avec le cube, nous y sommes. Si on essaie de faire des patrons « à la main », c’est tout à fait réalisable pour un enseignant (les 11 patrons du cube sous DGPad), mais certainement pas par un élève de collège. Avec la tortue 3D, c’est un projet tout à fait réaliste, pour deux raisons :
• la référence relative simplifie grandement l’étude de la situation : elle est locale.
• la réactivité de la tortue permet de tester pas à pas ce qu’il faut effectivement faire quand on hésite sur un angle ou un « monter/descendre »). On est donc sur un travail par compétences : explorations, prises d’initiatives

Dans une première partie on aborde le cas d’un unique patron, standard réalisable en collège. Dans une seconde partie, une extension assez fun pour les enseignants ou des élèves de lycée.

Patron archétypique du cube

L’objectif est de produire ce patron du cube, dans la version arête [AB] pour éviter la nécessité d’une racine carrée, mais il n’y a que quelques lignes ’initialisation pour passer de cette version à une version où la face du sol est centrée à l’origine du repère :

Étape 1 : face du sol

A et B sont deux points du sol. On commence par une étape d’initialisation où l’on construit tout simplement le carré de côté AB dans le plan du sol. Il est toujours très important de visualiser où est la tortue et dans quelle orientation.

Étape 2 : la procédure générique d’une face et son application à 3 nouvelles faces

Le choix de la procédure pour la face est lié à deux questions : celle de l’orientation finale de la tortue par rapport à la face créée, celle du plan de la tortue à la sortie de la procédure.

Dans ce cas, voulant réaliser le patron standard du cube, on a choisi de faire pivoter la tortue vers le haut de l’angle de pliage et de ne pas revenir à la position antérieure : cela permet, par une répétition, de construire très simplement plusieurs faces à la suite.

C’est a priori un choix judicieux ici, mais ce n’est pas général. Parfois, il est préférable de rendre la tortue à la sortie de la procédure dans le même plan qu’elle avait avant d’y entrer.

Étape 3 : les deux dernières faces

On choisi de les placer de chaque côté de la dernière face créée. Le fait que la procédure fasse tourne la future face de l’angle de pliage permet de placer la face correctement. Il suffit que la tortue ait la bonne orientation. On peut le faire ainsi (en classe on peut prévoir deux étapes, une étape Face 5 et une étape Face 6).

Le Pivoter vers le bas après la procédure face permet de revenir du plan de la face verte dans le plan de la face orange, centrale.

Bilan de cette construction

Devant la simplicité assez déconcertante de cette construction de patron, on fini par oublier ce qu’il faut écrire pour la rotation des faces vertes dans le cas d’un repère cartésien absolu. A titre de comparaison, voici ce que nous avions fait il y a quelques années, dans l’article MathémaTICE sur le parcours optimum entre deux points sur une boite :

Comme déjà indiqué, la tortue DGPad est arrivée trop tard en fin d’année scolaire (mai 2015) pour que ce type de construction en 3D ait été testé en classe. Mais clairement, on voit bien que la tortue dynamique de DGPad permet de faire simplement des constructions inaccessibles jusque là. Cette construction est transformable en activité de collège pour que, en programmation visuelle, grâce à la tortue, les simulations de patrons ne soient plus des boites noires.

La figure en ligne avec le carré du sol de côté [AB] : https://huit.re/Cube1PatronAB

La figure en ligne avec le carré du sol de centre O de sommet A : https://huit.re/Cube1PatronOA

Complément fun pour les enseignants : 4 patrons en un

Avec une des deux faces vertes dans la même position, on a 4 patrons différents aux différentes positions de l’autre face verte en face. Or ceci est élémentaire à réaliser avec la tortue et notre procédure face. On se propose de réaliser ceci en quelques lignes :

Pour cela on sépare la procédure précédente DeuxDernieresFaces en deux. On garde l’essentiel de la procédure, sauf les trois dernières lignes, en changeant le nom de la procédure qui devient CinquiemeFace. Une procédure Derniere Face tient compte du curseur ch pour faire descendre ou monter la tortue le long des 4 arêtes : il est nécessaire, dans le répéter, de modifier le plan de la tortue Pivoter vers le haut, pour être dans le même plan que la future face.

Mais faisant cela, comme la procédure face commence par cela, on le fait une fois de trop. D’où le Pivoter vers le bas à la sortie de la boucle. Il suffit alors d’orienter correctement la tortue pour qu’on ajoute une face, tout simplement, la même pour toutes les valeurs de ch car, justement, la démarche est locale et non pas absolue comme en géométrie repérée.

La figure avec le carré de côté [AB] : https://huit.re/Cube4PatronsAB

La figure avec le carré du sol de centre O passant par A : https://huit.re/Cube4PatronsOA

Autres patrons du cube

On pourrait poursuivre sur cette même figure pour faire les 11 patrons du cube, nous ne l’avons pas encore fait, Mais voici une figure de travail préalable avec 4 autres patrons du cube.

Cette figure est différente de plusieurs points de vue, la procédure face par exemple renvoie la tortue dans son plan initial. C’est une autre approche. Par ailleurs la figure a été faite au fur et à mesure, sans réelle réflexion préalable d’où la présentation du programme principal. Mais elle donne 4 autres patrons du cube.

La figure en ligne : https://huit.re/Cube4autresPatronsOA

Extrait du code

Si on devait compléter une figure pour y placer 11 patrons, la première est plus réfléchie, il est facile de rajouter rapidement 4 autres patrons par exemple.

Haut de la barre sur l’utilisation dans l’espace (onglet suivant : analyse filaire d’un polyèdre semi-régulier)

Rhombicuboctaèdre

Un autre polyèdre semi-régulier de construction aisée à la tortue

Nous avons déjà vu la construction du cuboctaèdre. Voici un autre polyèdre semi-régulier facile à construire à la tortue, et qui peut être source de réflexion - voir de défi en classe - sur la pertinence des choix de programmation tant celle-ci peut ici être bien factorisée.

Quel regard relatif pour représenter un polyèdre ?

Dans la construction du cube ou du cuboctaèdre, nous avions à chaque fois représenté des faces, celles-ci permettant d’en représenter d’autres. En fait pour une représentation filaire en 3D nous nous sommes intéressés essentiellement aux arêtes : dessiner des faces construisait les arêtes d’autres faces sans nécessairement construire la face elle-même.

Nous avions fait aussi cela dans le patron de la pyramide à base carrée de l’onglet d’introduction à la 3D : en ne construisant que les deux arêtes manquantes par face triangulaire, nous avons construit un patron avec des faces triangulaires mais sans réellement construire les faces.

Ici, nous allons poursuivre, en allant plus loin dans cette déconstruction-restructuration de la représentation filaire d’un polyèdre : nous allons l’analyser non plus comme un ensemble de faces, mais comme un ensemble d’arêtes, de dégager une description en termes de parcours optimal pour la tortue. Il s’agit de passer d’un regard global - un polyèdre plongé dans l’espace euclidien avec ses propriétés intrinsèques - à un regard plus relatif, celui du parcours à la tortue. En cela, comme changement de cadre, une activité de ce type est intéressante à pratiquer en classe car elle permet de poser un regard différent sur les objets et d’en dégager d’autres propriétés.

En effet, plus synthétiquement, on passe d’une problématiques de la géométrie dans l’espace à une problématique de parcours de graphe. Avec un basculement assez relatif, puisqu’il faut conserver un regard géométrique si on veut que la description du parcours soit simple pour la tortue.

Analyse « tortue » du polyèdre

Le rhombicuboctaèdre (ou encore « petit rhombicuboctaèdre » car il y a un « grand ») est obtenu comme troncature par les faces et les arêtes du cube. C’est un polyèdre semi-régulier avec 18 faces carrées et 8 faces triangulaires.

Du point de vue de la tortue on voit surtout qu’il est composé de 6 octogones réguliers, 4 verticaux et deux horizontaux. Un octogone se construit simplement avec un « tourner de 45° ».

Plan de programmation de la construction du rhombicuboctaèdre

On se propose de faire deux procédures simples, une pour un octogone vertical (avec un « pivoter vers le haut »), un pour un octogone horizontal (avec un « tourner vers la gauche »). Après une phase d’initialisation des données et de la tortue, nous allons essayer de placer les 4 octogones verticaux dans une seule boucle, puis il faudra ajuster la position de la tortue pour les deux octogones horizontaux.

Étape 1 - les quatre octogones verticaux.

L’idée est de trouver une façon générique de construire les 4 octogones dans une même boucle. Ils sont deux à deux orthogonaux. Voici une solution probablement optimale.

Qui produit ceci :

On voit que la procédure Partie Verticale est particulièrement bien factorisée. Il n’y a que les 4 arêtes du carré du sol qui sont parcourues deux fois.

Bien entendu on n’attend pas nécessairement une telle optimisation de la part des élèves, mais savoir qu’il existe un parcours simple peut être motivant pour optimiser son propre code.

Par ailleurs certains collègues peuvent trouver intéressant de faire un parallèle cognitif entre l’écriture factorisée en algèbre et la mise en facteur par un répéter 4 fois, comme si on avait réussit à factoriser un terme, celui qui est dans la boucle.

Étape 2 - les deux octogones horizontaux.

À la fin de l’étape 1, la tortue est sur la face du sol. Il suffit de la remontrer d’une arête, de faire un octogone horizontal, puis de remontrer à nouveau d’une arête et de faire un second octogone horizontal. Cela se fait donc tout simplement comme ceci :

Ce code est probablement partiellement factorisable.

Exercice d’appropriation : certains auront déjà remarqué que la procédure OctogoneH est essentiellement là pour diminuer la surcharge cognitive scolaire, mais qu’on pourrait tout-à-fait s’en passer et orienter la tortue pour n’utiliser qu’une seule procédure d’octogone. C’est un bon exercice d’appropriation, à la fois de l’espace et des procédures.

Bilan de cette figure

Structurée en quelques étapes, cette construction est un exemple à la fois simple et efficace de relecture des polyèdres à la lumière de la géométrie de la tortue en 3D.

La figure à manipuler en ligne (côté AB) : https://huit.re/RhombiCuboAB

La figure avec un carré au sol de centre O passant par A : https://huit.re/RhombiCuboOA

(dans les deux cas, le code de la tortue est dans le point O).

Haut de la barre sur l’utilisation dans l’espace (onglet suivant : construction du cube tronqué)

Cube tronqué

Le Cube tronqué

Sur la base de la méthode utilisée pour le cube, on se propose de réaliser cet autre polyèdre semi-régulier. Le principe est de ne tracer que les parties sur les faces du cube, c’est-à-dire seulement les 6 octogones, sans avoir à tracer les triangles équilatéraux.

Pour une activité scolaire, le niveau mathématique est nettement plus engagé que dans l’activité sur le cube. De même pour la démarche algorithmique. Une telle activité peut être envisagée - sauf organisation de défis scolaires spécifiques - en prenant clairement en charge une partie de la difficulté, par exemple avec des morceaux de programmes à trou, comme le début du calcul du côté ci-dessous.

Étape 1 - Calcul du côté du cube tronqué issu d’un cube de côté AB.

La première phase est celle de la description des faces du polyèdre, bien visualiser l’octogone régulier et le triangle équilatéral de même côté. La seconde phase peut être la conséquence mathématique qui en résulte pour le côté de l’octogone. Puis le calcul du côté qui peut faire l’objet d’une activité spécifique.

Remarque : on peut aussi envisager une version plus simple avec deux points A et B et un cube tronqué dont le côté de l’arête d’un triangle soit AB.

Étape 2 : le premier octogone.

Cette étape comporte une nouvelle difficulté scolaire, celle de l’avancée, stylo levé de la tortue, qu’il faut à nouveau calculer. On peut laisser les élèves chercher car il est facile d’invalider visuellement le résultat en testant par exemple si le côté « du sol » est vraiment dans le sol ou pas.

Étape 3 : le passage à la face suivante et l’itération

Le passage à l’étape suivante est du même style que pour le cube, avec un recul de la tortue dont le calcul a déjà été fait, il peut donc être laissé à faire sans aide préliminaire.

Étape 4 : les deux faces du sol et du haut.

Techniquement c’est une étape sans difficulté particulière, car on reprend ce qui a déjà été fait. Le programme final est en définitive assez court, et, même s’il est techniquement d’un autre niveau que le cube, il peut être mise en œuvre, au moins partiellement, dans certains environnements propices.

La figure en ligne : https://huit.re/cubetronque

Haut de la barre sur l’utilisation dans l’espace (onglet suivant : deux patrons du tétraèdre)

Patrons du tétraèdre

Deux patrons du tétraèdre régulier

Pour terminer cet onglet, deux figures qui ne sont probablement pas à proposer en collège à cause des calculs nécessaires, en particulier l’angle maximal du pliage (arccos(-1/3)). Mais on peut aussi laisser une variation de 0 à 180°.

Dans ces deux figures, on reprend le principe de construire les faces autres que celle du sol avec seulement deux segments. On ne peut donc pas colorier les faces.

Patron 1 - les faces autour de la face du sol

Avec une seule face

Patron 2 - les faces « alignées »

Le programme associé contient - quasi artificiellement - deux procédures pour les faces, pour une éventuelle utilisation scolaire. En pratique, en particulier au lycée, on pourrait n’avoir qu’une seule face avec un paramètre s (comme signe : +1 ou -1), et utiliser un tourner gauche de 60*s° et un tourner droite de 120*s°.

Figure du patron 1 : https://huit.re/PatronTetra1

Figure du patron 2 : https://huit.re/PatronTetra2

(le programme de la tortue est en A)

Haut de la barre sur l’utilisation dans l’espace (retour aux onglets précédents)


Intro | Espace | Autres activités | Récursivité

3. Galerie 3D : Patrons de polyèdres (semi)-réguliers - Parcours hamiltoniens et eulériens

Cette barre d’onglets n’est clairement plus scolaire. Le premier objectif est d’illustrer quelques techniques intéressantes autour de la tortue. Le second est d’inciter des collègues motivés par ce thème, à aller plus loin et plus systématiquement dans ce domaine si riche.

La pratique de la géométrie à la tortue - on l’a vu - est bien différente de celle de la géométrie associée à un repère fixe. Et, tout comme la géométrie usuelle a développé des formes canoniques de décomposition par exemple - en particulier pour la commutativité - il serait intéressant de mettre en évidence et d’étudier s’il existe certaines formes canoniques autour de la géométrie de la tortue, ce qui permettrait de factoriser certaines procédures.

En effet, comme on va le voir, dans les deux premiers items de cette barre, on a souvent voulu aller au plus court dans les parcours, pour raccourcir les traces, mais aussi pour les explorer pour elles-mêmes, avec comme conséquence de prendre des chemins particuliers et de casser d’éventuelles factorisations. Il pourrait être intéressant de reprendre ce travail initial pour le systématiser, voire même le formaliser, et proposer des méthodes systématiques de parcours, de développement de patrons par exemple.

Dans l’onglet sur le ballon de foot, et donc sur un cas particulier, nous avons fait l’effort de ce travail là, du moins dans un cadre opérationnel. La démarche, axée sur l’optimisation des procédures pour un parcours simple à écrire, parce qu’on l’applique à plusieurs patrons, finit par dégager un regard assez large vers une approche générale. Les derniers patrons réalisés dans cette partie, celui du rhombicosidodécaèdre - 62 faces - et du snub-dodécaèdre - 92 faces - sont les plus aboutis. Nous encourageons les personnes intéressées à poursuivre dans cette voie car, même si elle a déjà de brillants précurseurs, la géométrie de la tortue 3D dynamique est encore largement à explorer voire à formaliser.

Patrons de l’octaèdre

Nous reprenons l’objectif des patrons du cube : faire sur une même figure, plusieurs patrons de l’octaèdre, en adaptant la démarche déjà abordée pour le tétraèdre : on a choisi ici d’optimiser le nombre d’arêtes, c’est-à-dire de n’en dessiner que deux par face, ce qui empêche, bien entendu de les colorier.

On a déjà signalé la simplicité du cas du cube car les faces sont à angle droit donc la tortue est généralement orthogonale à son axe de rotation, ce qui facilite l’utilisation du pivoter haut / bas..

Comme ce n’est pas le cas ici, pour changer de plan on a choisi d’utiliser systématiquement de pivoter selon une arête, c’est-à-dire, de pivoter à gauche ou à droite. On a remarqué, sur le tétraèdre régulier, que ce choix est un peu moins coûteux en blocs sans que ce soit réellement un critère en soi.

Présentation des procédures utilisées à travers la réalisation d’un premier patron.

L’important, comme toujours, est de bien vérifier où est la tortue, et dans quelle direction elle est orientée. Aussi les copies d’écran renvoient-elles l’état de la construction avec la tortue.

Phase d’initialisation dans le plan du sol

Lors de cette procédure, on crée complètement une face, afin que le suite permette de ne construire que 2 arêtes par procédure.

Ajout d’une face à gauche ou à droite

Comme pour le tétraèdre, on a choisi de construire deux procédures différentes, selon la position de la tortue sur l’arête. On aurait pu en écrire une seule mais avec un test, mais c’est un peu inutile. Bien entendu, les faces parcourues sont orientées pour toujours plier du même côté, donc il faut inverser pivoter gauche et pivoter droit selon la direction de la tortue.

La réalisation d’un patron avec 5 faces alignées permet un enchainement de ces procédures de manière répétée : une des rares factorisations que l’on verra ici.

Ajout d’une face décentrée

Il reste trois faces à ajouter. On se propose d’en ajouter une sur la gauche de la précédente et, pour continuer le patron, de remettre la tortue à la même position qu’elle est à la sortie de l’état précédent.
Les trois premières lignes ajoutent la face voulue, et les suivantes parcourent l’arête qu’il reste à traverser pour replacer la tortue dans la bonne position.

Voici en détail, pas à la pas, ce que fait exactement la procédure d’ajout d’une face. C’est ce type de procédure que l’on pourrait structurer plus généralement, en fonction de la situation à traiter. Par rapport à l’enseignement - que l’on faisait - des rotations dans l’espace, on illustre bien à quel point les rotations ne commutent pas et ne peuvent pas communiquer :

1. Placement de la nouvelle face (3 lignes)
2. On revient sur l’arête commune en restant dans le plan de la face créée
3. On pivote dans le plan de la face précédente
4. On bascule sur l’autre arête de la face précédente pour revenir à la position initiale avant le lancement de cette procédure. Ensuite (étape non illustrée), on parcourt une arête et on se repositionne.

Même si ceci n’est pas prévu pour une utilisation scolaire (éventuellement dans une formation initiale sur la géométrie en préparation au CAPES), ce passage rend compte de l’apport didactique de la visualisation de la souris en temps réel (tout en pouvant faire pivoter le repère en même temps : même aux enseignants, la tortue dynamique 3D peut apprendre à améliorer leur perception de l’espace, et rapidement les familiariser avec les procédures à engager pour faire les parcours dont ils peuvent avoir besoin dans les constructions.

Fin de ce premier patron

On ajoute une face gauche et une face droite. La position des faces amène à à la procédure suivante, que l’on ne détaille pas ici. On voit aussi que la procédure AvancerUneArete consiste juste à avancer en ayant levé le crayon.

La figure en ligne pour fermer le patron 1 : https://huit.re/OctaPatron1

Note technique : Le code précédent est dans le point A. On a ajouté (dans le point O) la possibilité de tracer ou non l’octaèdre dont on a le patron.

Exercice : il aurait peut-être été plus systématique de placer 5 faces à la suite, et d’ajouter ensuite la face de droite, puis celle de gauche.

Analyse de la construction de 6 patrons de l’octaèdre

Il y a 11 patrons de l’octaèdre. On se propose d’en construire 5 autres et d’analyser rapidement leurs réalisation.

Manipuler en ligne les 6 patrons : https://huit.re/Octaedre6Patrons

Sur l’illustration précédente, on voit une face descendre du haut vers le point A ... mais on le voit mieux en manipulant la figure.

Complexité des patrons

Tous les patrons commencent par la procédure d’initialisation, qui n’est pas comptabilisée ici.
On peut évaluer de plusieurs façons la complexité d’un patron, au moins dans les réalisations proposées ici : on peut compter le nombre de changements de plan en dehors des procédures UneFaceG et UneFaceD. En dehors du patron 1 qui a un seul changement dans la procédure AjouterUneFace, un autre patron n’a qu’un seul changement de plan, c’est-à-dire l’utilisation d’un pivoter gauche ou droit, c’est le patron 5 :

Dans notre figure, le patron le plus complexe est le patron 3. Cependant, vu la symétrie naturelle du patron, c’est probablement l’utilisation de la boucle initiale sur 4 faces qui complexifie ce patron. On remarque qu’il y a par exemple deux changements de plan d’une pièce à l’autre (on change de côté du patron).

On pourrait aussi comptabiliser à la fois les changement de plan et les avancées d’arête. Dans ce cas, le patron 1 devient de complexité 4 (3 AvancerUneArete et 1 pivoter) alors que le patron 5 devient le plus simple avec une complexité de 3 seulement. C’est le patron 6 (dans le bloc ci-dessous) qui devient alors le plus complexe avec une complexité 8.

On aura bien compris que ces notions restent locales, propres aux constructions proposées. Un travail intéressant à développer serait de construire une démarche et des notions plus intrinsèques, avec des définitions par des min et max ... D’autres définitions sont possibles, et éventuellement plus pertinentes.

Voir les codes des autres patrons

Le patron 2

En particulier, le patron 3, comme on l’a construit, commence comme le 2 jusqu’à l’avant dernière instruction, on pourrait structurer les deux autrement.

Le patron 4

Lui aussi présente une symétrie centrale et une structure assez compacte. Avec notre notation, il n’est que de complexité 4. Il devrait pouvoir être réécrit sans utiliser le bloc pivoter, et ainsi diminuer sa complexité (et définir une complexité intrinsèque)

Le patron 6

De complexité 8, ce patron devrait pouvoir être amélioré, mais le fait qu’il est construit de chaque côté de la face du sol, il y aura toujours une complexité non négligeable.


Perspectives

Cet onglet est une invitation à approfondir une réflexion sur les patrons à la tortue 3D, classer et optimiser les parcours nécessaires, et étudier leurs complexités.

Dans cet onglet on a privilégié les patrons filaires, on peut aussi se pencher - on le fera au prochain onglet, partiellement, et systématiquement à l’onglet sur le ballon de football, sur les patrons à faces pleines, pour colorisation.

Haut de la barre sur les polyèdres (pour onglet suivant - patrons de l’icosaèdre et du dodécaèdre)

Icosaèdre et dodécaèdre

Pour construire des polyèdres plus complexes à la tortue 3D, une façon rapide consiste à réaliser un patron particulièrement bien factorisé, et à le bloquer sur l’angle maximal de pliage qui réalise le polyèdre. Nous allons faire cela pour l’icosaèdre et le dodécaèdre.

Dans cet onglet, nous allons réaliser le patron standard - très factorisé - de l’icosaèdre et trois patrons du dodécaèdre, le premier est le patron standard, lui aussi assez factorisé, le second est le patron dit « peau d’orange » qui, s’il n’est pas aussi factorisé, reste, de par sa structure, d’une écriture compacte, et un troisième qui permet lui aussi une belle factorisation. On sait que ces deux polyèdres - duaux l’un de l’autre, ont chacun 43380 patrons non isométriques.

Pour l’icosaèdre, on reste sur une présentation filaire en réinvestissant ce qui vient d’être fait à l’onglet précédent. Pour le dodécaèdre, on prendra l’option de figures pleines coloriées.

L’icosaèdre : le polyèdre par son patron archétypique

L’icosaèdre a 20 faces. Un patron très simple consiste à construire 5 groupes de 4 triangles, comme ceci :

Détail de la construction

On commence par une première partie d’initialisation de 4 triangles dont le triangle originel dans le sol, le seul véritable triangle, construit avec 3 côtés.

Il faut reproduire ce premier bloc, avec les procédures UneFaceG et UneFaceD de la construction de l’onglet précédent, l’octaèdre, en replaçant la tortue au même endroit.

Ce qui permet alors de faire une itération.

Illustration du pliage - figures

La figure du patron pliable : https://huit.re/IcosaedrePatron1

L’icosaèdre par pliage maximal du patron : https://huit.re/icosaedre_parPatron

Pertinence de la démarche

Probablement que le patron effectué n’est pas tout à fait optimisé, mais c’est une méthode déjà efficace. Si on compare sa trace à celle produite par la figure de GéoTortue (à droite), il y a quasiment 3 fois moins de mouvements, en particulier parce que l’on ne construit pas les faces en entier.

Pour information : code et figure GéoTortue

Les auteurs de GéoTortue ont déjà « tout fait » en 3D - et même en 4D - avec une démarche différente de ce que l’on fait ici avec la tortue de DGPad. Au passage, on note combien le code de GéoTortue est compact.

Le code original

Il est intéressant de regarder la tortue au ralenti, les procédures sont standards, en particulier la tortue revient toujours au centre de chaque face puis au centre du polyèdre construit.

La version tortue Blockly de DGPad

Nettement plus longue en terme de rédaction, même si on fait la même chose

La figure DGPad de la version GéoTortue (pour le code) : https://huit.re/IcosaedreGT

Fin du bloc « GéoTortue »


Dodécaèdre - le patron standard - première optimisation

La version filaire avec des polyèdres n’ayant que des triangle a du sens - si on veut en chercher - car on économie une arête sur 3, soit 33%, mais pour le dodécaèdre, en ne traçant que 4 arêtes sur 5, on n’économise que 20% des tracés. On peut donc terminer les pentagones, ce qui permet de les colorier. Et puis, c’est tellement plus joli ...

On commence par ce patron standard :

La figure en ligne : https://huit.re/DodecaPatronFaces

Analyse du programme principal

Il est construit à partir de 4 procédures, la procédure d’initialisation Le_Penta_du_sol qui trace le pentagone du sol, celle qui construit UnPentagone et deux procédures de placement de la tortue : AvanceDansLePlan et Avance_k_aretes.

Structurellement, on distingue la construction des deux coupoles, celle de dessous et celle du dessus, chacune construite autour d’un ou deux pentagones et d’une boucle autour. Plus précisément, pour la coupole de dessous, on construit 5 pentagones autour du pentagone du sol. Cela signifie que, dans la première boucle, la procédure UnPentagone construit les pentagones dans un plan en rotation de l’angle du curseur autour de chaque arête du pentagone du sol parcourues par AvanceDansLePlan. Cela signifie que, dans UnPentagone, la tortue change de plan, fait la construction puis retourne dans le plan initial.

Ensuite on commence par tracer un pétale de la seconde coupole, puis le cœur de la coupole et ensuite les 3 pétales restants. Cela signifie que l’autre procédure de déplacement de la tortue, Avance_k_aretes, elle, change de plan. Nous allons voir cela en détail, mais il est intéressant de prendre conscience (pour le transposer en classe sur des situations plus élémentaires) qu’une première analyse du programme - en sachant ce qu’il produit - donne déjà autant d’informations sur l’organisation interne des procédures utilisées.

La procédure d’initialisation et de tracé du pentagone du sol

La tortue sort de la procédure en étant sur l’arête qui commence en A, dans le sens trigonométrique.

Application des deux procédures d’avance de la tortue sur un pentagone

Cette illustration montre trois fonctionnements clés des procédures utilisées.

En haut : UnPentagone trace un pentagone avec l’angle de pliage en cours par rapport au pentagone sur lequel est la tortue, et restitue la tortue exactement où elle était, dans son plan initial.

Au centre : AvancerDansLePlan : avance d’une arête dans la direction de la tortue et tourne sur l’arête suivante (la procédure est construite pour les pentagones).

En bas : Avance_k_aretes : commence par changer de plan (angle de pliage) puis, de son positionnement, tourne pour rejoindre l’arête antérieure à sa position et avance, dans le sens trigonométrique sur cette arête. A noter que la tortue reste dans ce plan, ce qui permet d’accueillir une procédure de construction de pentagone dans un nouveau plan de pliage.

Mise en œuvre de ces procédures sur le début du patron

Il y a bien des façons de concevoir ces procédures. Après plusieurs tests, celle retenue ici est assez pertinente, même si elle peut ne pas être complètement optimale (mais ne dois pas en être très éloigné). On voit bien qu’elles ont été optimisées pour ce patron-ci et qu’éventuellement on les adaptera pour d’autres patrons.

Le code des trois procédures autre que l’initialisation

Comme déjà indiqué, UnPentagone commence par pivoter sur l’arête pour changer de plan, trace le pentagone et pivote à l’envers pour revenir dans le plan initial. On y a ajouté un remplissage, pour ne pas à avoir traiter cette question dans le corps du programme, mais c’est clairement surabondant. On pourrait la supprimer ici, et y mettre plutôt une procédure de changement de couleur, ce qui pourrait avoir un effet plus sympathique.

AvancerDansLePlan travaille le stylo levé, en effet, en cours de remplissage, celui-ci étant dynamique bien entendu, tout déplacement stylo posé est pris en compte pour le remplissage, d’où la nécessité de cette procédure pour éviter d’alourdir le code. La tortue avance et se positionne sur l’arête suivante pour avancer d’une étape sur le polygone. C’est typiquement le type de procédure qu’il faudrait paramétrer pour une utilisation générique.

Avance_k_aretes fait la même chose mais dans le plan du pentagone précédemment construit : elle se positionne sur ce plan (pivoter), puis sur l’arête d’où elle vient (tourne) et enfin avance sur le polygone en utilisant la procédure précédente.

Avec ces trois procédures, la construction du dodécaèdre - en réglant le pliage à son maximum - est bien optimisée, en particulier on a peu de parcours d’arêtes à effectuer comme cela a été le cas dans certains patrons de l’octaèdre et, dans une moindre mesure, dans la partie 2 de l’icosaèdre.

Pourtant nous ne retiendrons pas cette figure pour réaliser le dodécaèdre, car on peut encore optimiser le parcours en changeant de patron.

Dodécaèdre - le patron en pelure d’orange - autre choix d’optimisation

Nous nous proposons d’étudier les variations d’écriture que l’on peut choisir de faire pour optimiser un parcours différent. Nous allons modifier - à la marge - les procédures précédentes pour réaliser ce patron :

Manipuler la figure en ligne : https://huit.re/DodecaPeauOrange

Le programme principal

Tout d’abord - en prévision de la figure de l’onglet suivant où il y aura deux angles dièdres - le pliage est désormais un coefficient entre 0 et 1, et donc l’angle de pliage (variable globale définie dans la procédure d’initialisation) est un pourcentage de l’angle dièdre.

Après le pentagone du sol, on y colle un pentagone, et ensuite, dans la boucle un troisième. On peut donc analyser, sans même ouvrir le code de la procédure Penta que, dans cette procédure, la tortue commence par pivoter autour de l’arête pour changer de plan et qu’à la fin, elle reste dans ce plan.

La raison de ce choix provient de ce patron si particulier où les pentagones ne sont adjacents qu’à leur précédent et à leur suivant (quand il y en a). Donc pour chaque face, on ajoute l’angle de pliage, il n’y a aucune face avec le même angle de pliage par rapport à la face initiale par exemple.

La seconde conséquence est que la procédure Avance_k_aretes ne change pas de plan - et donc il n’y a qu’une seule procédure d’avancée de l’arête qui reprend celle « dans le plan » du patron précédent.

Les boucles illustrent des régularités : au début on répète 4 fois car on construit le bas de la coupole du dodécaèdre, puis il faut changer le rythme, et on reprend deux régularités. Il peut y avoir plusieurs variantes, mais il n’est pas sûr qu’elle soient optimales par rapport à cette version.

Les procédures utilisées

Tout a été dit dans l’analyse générale, mais voici quand même les procédures :

La variable globale de pivot est le coefficient de l’angle Dièdre. On notera que comme la procédure d’avancée sur le pentagone ne change pas de plan, c’est la procédure Penta qui positionne la tortue à la sortie en tournant de 108° - ce que faisait la seconde procédure d’avancée de la tortue en première action dans le patron précédent.

Clairement, plusieurs options sont possibles dans l’organisation croisée des procédures. Il est même possible que les optimisations de chacune puisse contenir des informations sur notre propre perception de l’espace et de son organisation locale. Nous allons poursuivre, donc, avec ces représentations là.

Trois patrons du dodécaèdre

On se propose, dans le contexte des procédures du patron « Peau d’orange », plus générales, d’ajouter un second patron - et affiner le contexte d’utilisation par de nouveaux paramètres.

Le patron est particulièrement compact en terme d’écriture : on a 5 fois la même configuration et une variante sur la dernière. Finalement, comme il ne faut pas redescendre la 5° fois, on utilisera seulement une boucle de 4 branches, ce qui donne :

Le répéter 2 fois à l’intérieur de la boucle principale correspond à la redescente de la tortue sur l’arête du pentagone du sol. Cela aurait pu être une procédure. Cela sera un peu plus systématisé comme tel au prochain onglet.

On ajoute le patron standard. Il faut juste l’adapter aux nouvelles procédures, ce qui donne :

La figure avec les trois patrons du dodécaèdre : https://huit.re/Dodeca_3patrons

Exemple d’illustration avec un réglage épais des arêtes et une opacité nulle :

Bilan de l’onglet

On voit qu’avec un peu de méthode, des choix précis et adaptés, on peut écrire des programmes très compacts de divers patrons. Nous allons mettre cela à profit dans le prochain onglet pour un polyèdre semi-régulier plus complexe.

Haut de la barre sur Galerie 3D (pour onglet suivant : cinq patrons du ballon de foot)

Ballon de foot

Patron dépliable de l’icosaèdre tronqué

Lors de la coupe du monde de football de 2010, de triste mémoire, Pierre-Marc Mazat avait développé un script de CaRMetal avec son instruction InteractiveInput, qui permettait de faire des patrons de ballon de foot (dépliable bien entendu à la main ou au hasard). Au passage, si cela intéresse quelqu’un de chercher, le nombre de patrons de l’icosaèdre tronqué n’est toujours pas connu.

Pierre-Marc en avait sorti quelques très jolis patrons originaux du ballon de foot, et avait accepté d’en faire une synthèse très pédagogique dans un article de MathémaTICE : La panoplie du petit footballeur

Six ans plus tard, toujours en juillet, c’est encore d’actualité de s’intéresser aux patrons de ballons de foot. Comme je rédige sur la tortue de DGPad, celui-ci invite à utiliser celle-là .... On se propose donc de réaliser à la tortue quelques patrons mis en évidence en 2010, en commençant par celui que Pierre-Marc a appelé « Peau d’orange », c’est-à-dire celui-ci :

Manipuler la figure du patron de ballon de foot « peau d’orange » : https://huit.re/PatronBallonCouleur

L’icosaèdre tronqué a 32 faces, 12 pentagones et 20 hexagones. Il convient donc d’optimiser au mieux le parcours. On a vu dans le même patron pour le pentagone - phase d’entrainement - que ce patron est facile à mettre en place de manière compacte. Il faut un peu adapter à la situation nouvelle ce que l’on a fait pour le dodécaèdre .

La procédure d’initialisation

Il y a deux angles dièdres, un pour les faces hexagone/pentagone, adHP, un pour les faces hexagone/hexagone, adHH. Il n’y a pas deux pentagones consécutifs, donc pas de adPP ! Les angles ont été pris dans MathCurve, comme ils sont donnés. Possiblement l’expression mathématique n’est-elle pas simple. Le curseur est un coefficient entre 0 et 1, ce qui donne les angles de pliage des faces, selon que l’on est sur un hexagone ou un pentagone.

Les deux variables qui vont être utilisées sont caHP et caHH, le coefficient de pliage appliqué à chacun des deux angles dièdres (le supplémentaire, car la tortue tourne du supplémentaire).

Les procédures de base

On a déjà remarqué que ce patron, bien spécifique, incite à changer de plan à l’entrée de la procédure de construction des faces. C’est ce que l’on a choisi de faire ici. La procédure Penta est la même que celle du dodécaèdre, on a juste ajouté une donnée cosmétique. Le remplissage du pentagone à chaque appel est, là encore, redondant.

La nouveauté est dans la procédure de construction d’un hexagone et celle de l’avancée de la tortue sur une arête. Elles sont toutes les deux paramétrées. Pour Hexa, le paramètre a indique si la face provient d’un hexagone (1) ou d’un pentagone (2), pour adapter l’angle de pliage. Comme pour le pentagone, la procédure se termine par une rotation droite pour se positionner correctement sur l’arête suivante dans le sens trigonométrique.

AvancerkAretes a désormais deux paramètres : le nombre d’arêtes k à parcourir, et le type de face à parcourir (p=1 pour un hexagone et p=2 pour un pentagone, ce qui détermine l’angle rotloc de rotation pour la tortue.

Le détail du programme principal en 4 étapes

Les étapes sont un peu artificielles, ce sont surtout des points de repère d’illustration. A l’origine de cet onglet, ne pensant pas que cela allait être aussi simple à réaliser, je n’envisageais de ne faire qu’un seul patron. Ce premier patron est donc très détaillé, les autres le seront nettement moins.
C’est de toute façon toujours intéressant de faire la correspondance entre le code et la perception visuelle de ce qu’il produit.

La partie 1

Le polyèdre étant posé au sol sur un pentagone, l’enroulement comme une peau d’orange commence nécessairement par 5 hexagones. Mais le premier étant relié à un pentagone et les autres étant reliés à un hexagone, les 5 ne peuvent pas être placés dans une même boucle, car les angles dièdres ne sont pas les même pour le premier que pour les autres. D’où le début de procédure Hexa(2) et ensuite une boucle avec 4 fois Hexa(1).

Ensuite, il faut sauter une arête, ce qui se voit très bien sur le patron replié pour placer les deux faces suivantes.

Petit écart par rapport au patron - Une remarque à propos des angles dièdres

Dans les polyèdres réguliers, tout étant tellement régulier qu’on ne voit pas nécessairement la subtile omniprésence de cette régularité. Avec les polyèdres semi-réguliers, on peut montrer visuellement le fait qu’il y a, effectivement, une certaine « non régularité », et en particulier deux angles dièdres (même si mathématiquement c’est un peu évident aussi). Dans l’illustration suivante - c’est tout l’intérêt des simulations - on suppose qu’il y a un seul angle dièdre - d’abord l’un ensuite l’autre. Et on essaie de plier le début de patron précédent, voici ce que cela donne :

Comme la valeur exacte de caHP est plus petite que caHH, si on identifie caHP à caHH, le pliage se chevauche (à gauche), le pliage est trop grand pour les pentagones, alors que si on identifie caHH à caHP, le pliage ne se ferme pas, on ne plie pas assez les hexagones, cela se voit tout de suite autour du pentagone au sol.

C’est une façon rapide, même s’il y en a bien d’autres, pour illustrer visuellement la différence entre un polyèdre régulier et un polyèdre semi-régulier.

A noter qu’il existe d’autres polyèdres, non réguliers avec un seul angle dièdre. C’est le cas par exemple du rhombidodécaèdre (12 losanges) ou même tout simplement du cuboctaèdre.

La partie 2

Il y a une répétition de trois fois la même séquence constituée d’un pentagone avec un décalage de deux arêtes suivi d’un hexagone avec un décalage d’une seule arête. On a terminé la partie à la face suivante car c’est un point de repère : il y a 2 hexagones de suite, pour la première fois depuis le pourtour du pentagone initial.

La partie 3

Le code est toujours très compact (c’est pour cela que l’on a choisi ce patron), les 8 faces suivantes sont dans une boucle, c’est-à-dire avec les mêmes décalage pour les arêtes :

La partie 4

Il reste 7 faces : le pentagone final (symétrique du premier posé sur le sol par rapport au centre du pentagone), les 5 hexagones autour, et un pentagone de transition. Le code se factorise donc bien. Comme dans l’étape 1, il faut séparer le dernier hexagone des précédents car l’angle dièdre n’est pas le même.

Le ballon seul

Il suffit de supprimer le coefficient ou le mettre à 1 et le cacher.

On a ajouté un curseur d’opacité et un booléen pour avoir une figure monochrome. Le booléen monochrome est à ajouter dans les deux procédure de construction des faces comme ceci :

Rappel technique : quand on supprime un paramètre de la figure comme un curseur, même s’il n’intervient plus dans le code Blockly, de par la façon dont est gérée la trace de la tortue - pour qu’elle fasse efficacement tout ce qu’elle fait - les dépendances à cette variable ne sont pas complètement rompues. Quand on supprime le curseur (l’interface Blockly fermée) la figure disparaît. Mais il suffit de réouvrir Blockly pour que la question des dépendances soit réglée : la figure réapparaît bien.

La figure du ballon seul à la tortue (icosaèdre tronqué) : https://huit.re/BallonSeulTortue

Sur une figure comme celle-ci, le problème de la tortue est qu’il n’y a pas de pointillés, et la gestion dynamique des pointillés à la tortue serait (actuellement du moins) assez complexe : la construction du ballon de foot classique, en géométrie repérée, avec gestion des pointillés est plus claire.

Un deuxième patron : les deux cornes

Ce patron est à la fois original et vraiment joli, toujours trouvé par Pierre-Marc Mazat en 2010 lors de l’exploration avec CaRMetal :

La figure en ligne : https://huit.re/DeuxPatronsBallon

Complément sur le code

La nouveauté est la gestion du retour d’une branche vers le centre. Comme il y a une certaine régularité, c’est l’occasion de construire deux procédures spécifiques pour le changement de plan à chaque retour. On traite le cas Hexa-Penta et un cas Penta-Hexa. Comme il n’y a que deux Hexa-Hexa, on n’a pas fait de procédures. Dans la procédure générale RetourCentre, on aurait pu mettre une boucle pour simplifier un peu.

Un troisième patron

Finalement, les deux dernières procédures locales permettent de faire très rapidement un troisième patron, très symétrique aussi, donc dont l’écriture se factorise bien :

On voit qu’autour du pentagone du sol, on a 5 branches à 6 faces, ce qui fait 31 faces donc une branche a en fait une face de plus, le pentagone du dessus alors que les autres se terminent par l’hexagone autour du pentagone du dessus. D’où la structure du programme : une procédure de construction des branches, à part une procédure de retour pour qu’on puisse faire un aller simple pour la cinquième branche. D’où le code principal du patron en 5 lignes avec les deux procédures assez courtes. Donc finalement, c’est bien plus compact que la peau de d’orange !

La figure avec les 3 patrons du ballon de football : https://huit.re/Ballon_3patrons

Ajout d’un quatrième patron : double peau d’orange

Parmi les patrons originaux, cette double pelure d’orange (toujours originellement de Pierre-Marc) est intéressante aussi. On a choisi de l’ajouter pour montrer une autre façon de traiter cette situation : il y a deux branches. Au lieu de redescendre une branche pour revenir au centre - c’est un peu fastidieux, il faut être vigilant - on a choisi ici une version moins relative, avec un retour en A et un recentrage du tout (grâce au bloc réinitialiser les angles). C’est une grande simplification.

Pliage partiel des deux peaux d’orange

Pour la figure en ligne, voir plus loin, avec le dernier patron

Adaptation de la méthode à d’autres cas

On aurait pu utiliser le même procédé - de retour sur le point A - sur le patron précédent. Il aurait toutefois fallu remplacer le simple répéter par un compteur pour indicer le déplacement du nombre d’arêtes sur le pentagone du sol. Mais au final, cela aurait été plus simple.

Un cinquième patron, avec 4 fleurs

Toutes les procédures pour faire un peu tout ce que l’on veut sont en place - même si elles pourraient être encore plus paramétrées, donc un petit dernier pour ses symétries locales internes :

On y remarque une fleur principale avec un centre pentagonal et 5 pétales hexagonaux dont trois débouchent sur des fleurs à centre hexagonal avec des pétales alternativement pentagonaux ou hexagonaux.

La figure avec les 5 patrons : https://huit.re/Ballon_5patrons

La figure est très fluide pour une consultation et manipulation. Mais si on veut lire le code (en A), cela prend quelques secondes à ouvrir, et un peu de temps à retrouver ce que l’on cherche. Voici donc deux autres figures, organisées par thème, plutôt faites pour consulter le code

La figure avec les patrons (1, 2, 4) : patrons étendus (peaux d’orange et cornes) : https://huit.re/Ballon_patrons124

La figure avec les patrons 3 et 5 (plus compacts plus symétriques, les deux « fleurs ») : https://huit.re/Ballon_patrons35

Une conséquence surprenante de la trace en temps réel

Si on s’intéresse à la taille de la trace produite pour ces 5 patrons, on peut être surpris (j’ai été surpris) de nos (de mes) représentations mentales parfois encore en défaut sur le temps réel. Je pensais naïvement avoir la taille totale car quand on construit des booléens ils peuvent être à 0 mais ils existent, tout est là. Là aussi tout est là, dans le code, mais en pratique, bien entendu, la taille donnée par le bloc de taille est celle de la trace affichée, donc d’un seul patron car il n’y a bien qu’un seul patron affiché.

Les patrons 3 et 5 ont le même nombre d’objets. C’est la plus longue trace. Pour le patron 3 cela vient du fait que l’on revient vers le centre « beaucoup », mais si on prenait la version du patron 4 - retour en A, on pourrait diminuer la longueur de la trace. Le plus court est le patron 1, de peu, le 4 est très proche, la différence tient dans le retour au centre du patron pour changer de branche.

Animation du patron

Pendant la rédaction de cet article, une amélioration d’une fonctionnalité interne permet désormais de facilement faire une animation par défaut d’une figure en rotation, animation pendant laquelle vous pouvez agir sur les paramètres de la figure (pliage, couleur, orientation du repère, etc).

Dans la figure suivante, outre l’animation, le code des procédures Penta et Hexa a été modifié pour avoir trois paramètres de couleur : le patron peut désormais être bicolore, avec les deux types de polygones chacun dans une couleur, la première est définie par la couleur initiale et la seconde par le décalage de couleur.

La figure en ligne du patron animé : https://huit.re/Ballon_5Panim

Réglage de l’animation

Une nouvelle expression anim apparaît. Ce n’est qu’un nombre sur lequel on a mis une animation. Pour régler l’animation il est préférable de la stopper (bouton arrêt/pose qui apparaît en bas à gauche de l’écran). Puis ouvrir le panneau de configuration - icône de roue - sur cette expression anim.

À l’ouverture de la figure la vitesse est réglée sur 5 vous pouvez mettre, selon la vitesse de votre périphérique de lecture, 10, ou 2 ou 3.

Comment mettre une telle animation dans une figure

D’une manière générale une animation sur une expression ou un point sur objet se fait avec le comportement « ressort » de la palette des comportement (déjà détaillé dans l’article précédent sur Blockly dans DGPad à la barre de prise en main rapide du logiciel). Mais ici on va faire autrement.

Il n’y a que deux choses à faire.
1. Entrer une première expression anim, un nombre que vous initialisez à 0 ou à 1 par exemple, sur laquelle vous mettrez ensuite une animation.
2. Entrer une seconde expression par laquelle vous allez bloquer la restriction de Phi (angle du trièdre dans le plan xOy) justement à la valeur en degrés du nombre animation. C’est le principe de cette méthode : un nombre animé change de valeur en permanence et on restreint l’angle de rotation du repère à prendre, en temps réel, cette valeur : cela fait tourner le trièdre automatiquement pour pouvoir agir ensuite sur la figure.

La syntaxe de la seconde expression est celle-ci :

En fait ce qui compte est l’instruction qui est avant le point-virgule, et le fait qu’il y ait la même valeur dans les deux bornes de l’intervalle. Ensuite, après le point-virgule, vous pouvez juste mettre 0 par exemple au lieu du commentaire que j’ai placé (pour éviter d’avoir un 0 à l’écran dont on ne comprendrait pas la provenance).

Ensuite vous pouvez cacher cette seconde expression qui n’a pas besoin d’être visible. Le nombre animé aussi peut être caché.

Précision sur la syntaxe des expressions-programmes de DGPad

Une expression-programme est une expression JavaScript (avec quelques simplifications, celles du clavier maths de DGPad). S’il s’agit d’une expression un peu complexe (un programme) ou d’une instruction interne - comme c’est le cas ici - ce qui est affiché à l’écran, le « retour sur figure » est ce qui est après le dernier point-virgule. C’est pour cela que, dans ce cas, il faut un point-virgule et quelque chose après, un nombre ou un texte par exemple. La simple instruction restrictPhi n’aurait pas suffit.

Remarque : bien entendu il existe un restrictTheta pour faire tourner dans le plan xOz.

Bilan de cet onglet

En mettant en œuvre une réflexion sur les actions propres des procédures à utiliser, on commence à dégager - au moins sur un exemple - des éléments du champ d’investigation que l’on proposait au lecteur dans la partie consacrée à l’octaèdre. En optimisant les procédures que l’on va utiliser, la construction de patrons complexes reste - pour l’enseignant - non seulement abordable ... mais même quasiment un jeu d’enfant : on voit à quel point la tortue 3D dynamique ouvre un vrai champ d’appropriation de la géométrie dans l’espace.

Si on compare avec la même démarche en géométrie dans un repère absolu, on constate que l’on produit - en tout cas pour certains patrons, un code d’une grande compacité. Ce serait moins le cas avec un patron générique où les branches de faces partiraient dans tous les sens, alors qu’en géométrie usuelle, la complexité est assez indépendante de la forme du patron. Ainsi c’est dans ce domaine, plus généraliste, que l’investigation pourrait se poursuivre. C’est, par exemple, dans la généralisation la plus paramétrée possible des procédures comme caHP_252_12 en SupAngle_Rot_Avance_n_k que des solutions seraient envisageables. À un autre niveau de conceptualisation, pour une plus grande automatisation, même les procédures des faces pourraient être paramétrées en fonction du nombre de côtés. Le code serait peut-être moins lisible, mais cela pourrait permettre une certaine automatisation de la réalisation de patrons.

Haut de la barre sur Galerie 3D (onglet suivant : chiralité dynamique - patron des deux snub cubes)

Chiralité dynamique

Patron du snub cube et de son symétrique, ensemble

Le concept de chiralité vient de la chimie, quand une molécule n’a pas de plan de symétrie, elle peut exister dans un mode (lévogyre) ou un autre (dextrogyre). C’est par exemple le cas du sucre dans la nature ... et dans la vie quotidienne (l’auteur de l’article est gaucher, donc sensibilisé à la chiralité dès qu’il a fallu apprendre à écrire ... à la plume sergent major) il y a beaucoup d’objets chiraux qui n’ont pas de version lévogyre usuelle comme les ciseaux, les couteaux à dents - les dents sont de l’autre côté - etc ... Que les tournevis ou tire-bouchons soient chiraux est un vrai apprentissage de la petite enfance.

Mathématiquement, on dit d’un polyèdre qu’il est chiral quand il n’a pas de plan de symétrie. Parmi les polyèdres semi-réguliers, deux sont chiraux, le cube adouci et le dodécaèdre adouci (ou encore le snub cube et le snub dodécaèdre.

L’adoucissement des polyèdres

Le principe d’adoucissement d’un polyèdre est d’écarter ses faces, parallèlement à elles-mêmes, jusqu’à ce que l’on puisse mettre - avec une rotation des faces d’un même angle - un triangle équilatéral entre les faces. Et selon que la rotation est dans un sens ou dans l’autre, on a deux polyèdres. (sauf pour l’adoucissement du tétraèdre qui donne naturellement l’icosaèdre, mais en général l’icosaèdre est considéré comme un solide de Platon en soi, et pas un adoucissement du tétraèdre).

Voici les deux snub cubes, ici construits avec CaRMetal (dossier CaRMetal joint dans cet onglet). On a laissé les noms des points pour pouvoir commenter les polyèdres.

On repère les trois carrés « écartés » ABCD, EFGH et IJKL, et les triangles, communs aux deux polyèdres qui ont un sommet sur trois carrés différents, AIE, et MLF en haut, DVJ et NKW en bas. Bien entendu il y a en a 4 autres non visibles ici. Donc 8 triangles sont structurellement communs aux deux polyèdres : ils sont à la place des 8 sommets du « cube initial » si on avait écarté les carrés.

Ensuite, on voit la différence entre les deux polyèdres. Par exemple l’autre face triangulaire ayant pour arête [EI] a son côté en E, dans un cas sur le carré ABCD, dans l’autre cas sur le carré IJKL. De même pour le second triangle d’arête [AE], son autre côté issu de A est, lui aussi, dans un cas une arête commune avec la face carrée ABCD, dans l’autre cas avec la face carrée EFGH.

Exemple d’une construction logique

Sur la figure elle-même, les 24 points des deux snub cubes étant donnés, on peut engager une démarche de géométrie logique pour construire des arêtes logiques, c’est-à-dire des arêtes qui seront uniques pour les deux figures. Sans entrer dans le détail, voici le genre de démarche possible :

On voit très bien sur l’illustration la construction de l’unique arête [BouA EouH] ainsi que celle de l’unique arête [AouD JouI]. On voit par que [AouA IouJ] serait une diagonale de parallélogramme.

On comprend bien que l’on peut faire un snub cube filaire booléen unique qui contient à la fois un polyèdre et son symétrique. Pour les faces, c’est plus délicat, mais on y arrive assez facilement aussi, par exemple ci-dessous la face triangulaire sur l’arête [EH] est la face EHBouA.

Repère absolu versus repère relatif

Les illustrations précédentes sont surtout destinées à poser le problème général d’une figure incluant les deux polyèdres. Ici, nous allons le résoudre, avec la tortue DGPad, tout à fait autrement. D’une part le contexte est très différent : dans la version présentée ci-dessus les snub cubes sont inclus dans un cube donné, et on tourne (ici en les réduisant, avec une similitude) les 6 faces carrées. Et donc les carrés des deux polyèdres ne sont pas dans a même position alors que dans la version à la tortue, on se donne un carré de base - au sol - qui sera le même pour les deux snub cubes, donc c’est la figure qui va tourner autour d’un carré fixe. Au passage, se donnant le carré initial, il n’y a pas la difficulté de calculer les paramètres de la similitude qui sont solutions d’une équation du 3° degré.

D’autre part, abordant la question par les patrons, une autre différence essentielle est sur le placement des huit triangles équilatéraux communs aux deux polyèdres. Dans la version DGPad, la démarche est plus « constructive », physique au lieu d’être booléenne. Construisant un patron, les faces sont solidaires par une arête, et, on l’a vu dans la présentation précédente, nécessairement ces triangles équilatéraux ne pourront pas être à la même place dans les deux patrons, les carrés eux-mêmes étant nécessairement déplacés. On s’intéresse sinon à minimiser la différence - il faudrait prendre le temps de définir des critères de différence - en tout cas à être sensible à la question.

Par exemple dans la figure suivante, on voit bien qu’on a été attentif à ce que ces quatre triangles équilatéraux associés au carré du sol soient « à la même place » dans les deux cas, concept délicat justement à définir, car les triangles dont ils ont une arête commune sont nécessairement différents, mais disons qu’ils sont dans la toute première partie associée au carré du sol.

La tricolorisation du patron

L’intérêt de la tricoloration est que les triangles « sommets » soient d’une autre couleur que les autres. À priori, il y a deux procédures « triangle », une gauche et une droite. Dans un premier temps, pour le patron d’un seul snub cube, on peut s’arranger à ce que tous les triangles sommets soient issus de la même procédure TriangleD, ce qui est alors un critère simple de coloration. Avec les deux polyèdres, c’est peut-être possible mais moins immédiat, j’ai opté pour une autre version (qui sera utile pour faire - un jour - la même chose avec le dodécaèdre) c’est d’ajouter simplement un booléen pour dire si ce triangle est un triangle-sommet ou pas. Finalement la colorisation prend autant de place que la construction elle-même, mais c’est aussi l’intérêt de la figure.

Les feuilles gauches et droites

Reprenons les deux patrons pour analyser brièvement le code de chaque partie

Dans la partie gauche, le triangle sommet est le second construit, alors que dans la partie droite, c’est le troisième, mais, par rapport aux carrés, il est à la même place, puisque, fondamentalement, c’est le carré que l’on déplace. Au passage, on voit bien qu’il a fallu paramétrer TriangleD pour le sommet. On remarque aussi que cette procédure n’a pas le paramètre d’angle dièdre car, au final, ici - dans cette construction - un « triangle droit » n’est jamais attaché à un carré.

A la fin de la procédure, même si le triangle-sommet est dans les deux cas le dernier tracé, on voit bien par contre qu’il a été déplacé dans le patron, car il y a un décalage de plus d’une arête à la sortie du contour du carré.

On aurait pu faire une seule procédure avec un traitement interne des cas gauche et droit, mais c’est aussi intéressant d’en faire deux pour voir où sont les différences dans le patron. Le code général est donc tout à fait ordinaire :

Finalement, le snub cube ainsi produit n’est pas si fameux que cela car il n’y a pas de pointillés et - comme dans le cas de CaRMetal d’ailleurs, où ils ont été placés - ce serait le plus long à traiter.

La figure du patron du snub cube : https://huit.re/PatronSnubCubeBi

La même, animée : : https://huit.re/SnubCubeBi_anim

Le dossier CaRMetal reprend les figures précédentes. la figure finale est dans l’onglet Face4. Un autre onglet contient la version filaire intermédiaire.

Ce dossier contient aussi une figure qui traite des rotations du snub cube : il a les 24 rotation du cube mais aucune isométrie négative. Cette figure est facilement transférable en DGPad sur la base de cette première figure booléenne. Il faut juste un peu de temps ...

Voir les rotations du Snub Cube

Dans la première illustration, avec l’angle à 0, il y a superposition entre le snub cube mobile (rose) et le snub cube fixe (vert). La rotation d’ordre 4 est autour de (Ox), celle d’ordre 3 autour de (1, 1, 1) axe d’un triangle équilatéral « sommet », et celle d’ordre 2 sur l’axe passant par le milieu de 2 arêtes.


Le snub dodécaèdre

Voici une belle factorisation : 92 = 1+5x18+1, soit un pentagone au sol, un au sommet et 5 pétales de 18 polygones : 2 pentagones et 16 triangles dont 4 qui sont des triangles-sommets car le dodécaèdre a 20 sommets (les 20 faces de l’icosaèdre par dualité).

La figure en ligne téléchargeable : https://huit.re/Snub_Dodeca

Un mot sur le code

Contrairement à la figure précédente, le dernier pentagone ne se place pas à l’endroit où est la tortue en fin de parcours (cela aurait été possible, mais ce n’est pas la construction retenue). Une option est alors de paramétrer le pétale général pour y ajouter un appendice pour une valeur donnée du paramètre.

Sans entrer dans le détail du code, cette rustine paramétrable est une option pour mettre plusieurs variantes sur un code principal. Cela peut même devenir une approche généralisée pour des patrons plus complexes.

Je n’ai pas encore cherché à ajouter le patron du polyèdre symétrique ... alors ... à vos tortues ...

Haut de la barre sur Galerie 3D (onglet suivant : cycle eulériens sur polyèdres)

Cycles Eulériens

Parcours et cycles hamiltoniens et eulériens sur polyèdres semi réguliers

Dans cet onglet, on reste sur de la géométrie 3D, mais avec des problématiques d’illustration de mathématiques discrètes, sur les graphes. Pour l’utilisateur de la tortue de DGPad, c’est surtout l’occasion de voir un exemple d’organisation pour la réalisation d’une figure complexe en combinant une partie du travail (des données) dans la figure et une autre partie à la tortue. C’est aussi un bel exemple de l’utilisation du temps réel de la tortue dynamique.

Rappel de quelques définitions

Un graphe est dit hamiltonien si on peut parcourir tous ses sommets, sans passer deux fois par le même. Le chemin hamiltonien est dit un cycle hamiltonien si on revient à son point de départ.

Tous les polyèdre réguliers et semi-réguliers sont hamiltoniens. Pour le dodécaèdre, l’exemple initial d’Hamilton, il n’y a qu’un cycle hamiltonien, à isométrie près du dodécaèdre. Voici trois exemples sur l’icosaèdre, deux parcours et un cycle :

Manipuler cette figure en ligne : https://huit.re/TroisHsurIco
(Figure réalisée bien avant l’exploration des patrons, comme figure d’appropriation de l’environnement. En particulier l’icosaèdre a été construit sur la base de l’algorithme proposé par le site de GéoTortue)

Un graphe est dit eulérien si on peut parcourir toutes les arêtes sans repasser par une arête déjà parcourue. Comme le cas hamiltonien, si le parcours est fermé, on parle de cycle eulérien.

Le contenu de cet onglet

Le seul polyèdre régulier eulérien est l’octaèdre. Il y a quatre polyèdres semi-réguliers eulériens qui sont le cuboctaèdre, le (petit) rhombicuboctaèdre - les deux ont été construits à la barre d’onglets précédente - l’icosidodécaèdre et le rhombicosidodécaèdre.

Cet onglet est structuré en deux parties. Dans une première partie, nous allons détailler - d’un point de vue technique - sur l’exemple du (petit) rhombicuboctaèdre - une démarche de construction de parcours et cycles hamiltoniens et eulériens. Nous ne ferons pas le cuboctaèdre, laissé en exercice d’application pour les personnes intéressées.

Puis dans une seconde partie, nous donnerons seulement les figures des deux autres polyèdres archimédiens, d’abord leurs patrons, parce qu’il sont très beaux, et ensuite les parcours. Si on n’est pas concerné par ces constructions, on peut simplement manipuler les figures, en ligne ou en téléchargeant le fichier en fin d’article.

L’exemple du rhombicuboctaèdre

Manipuler la figure en ligne : https://huit.re/RhombiCubo_HE

On traite donc des parcours soit hamiltoniens soit eulériens sur la même figure. Il y a finalement trois traces de tortue sur cette figure.

Les étapes retenues pour la réalisation de cette figure

1. Le polyèdre est construit - dans le point O - à partir de deux points A et B du sol.
2. Faire une figure de transition pour repérer les indices des sommets du polyèdre dans la trace de la tortue.
3. Chercher quelques parcours hamiltoniens et les placer dans une expression de la figure, sous forme d’une liste de listes.
4. Avec un curseur, on choisit un des parcours ou cycles hamiltoniens, il est placé dans une autre liste.
5. Cette liste est lue par la tortue, dans un programme placé en A. Le parcours est construit en temps réel à partir d’un curseur
6. On fait de même avec les cycles eulériens, dans un programme placé dans le point B.

L’étape 1 a déjà été traitée. La seule chose un peu nouvelle est probablement l’étape 2.

Étape 2 - Récupérer les indices des sommets de la figure

Le principe est le suivant : un point M est le point courant qui va explorer la trace.
• on construit un curseur k, de borne maximale la longueur de la trace de la tortue (en O).
• on construit un point M (à l’écran donc a priori en 2D sans statut particulier, et on lui attribue la k-ième position de la trace.
• En parcourant la trace au curseur, on relève (manuellement) les premiers passages à chaque sommet.

Voici le déroulement concret de cette étape :

2.a. L’expression taille (de la trace)

On crée un expression taille que l’on initialise à 1 par exemple.

Puis on lui attribue un comportement Blockly qui n’est autre que la taille de la trace de la tortue en O.
On voit sur l’illustration que tant que le bloc de Retour n’est pas associé à la taille, l’expression n’a pas de valeur, et qu’elle en prend une dès que l’on retourne la talle.

2.b. Affecter un point dynamiquement à une liste

Cette méthode est très pratique pour faire parcourir à un point une trace de la tortue dans l’ordre de création. Le principe est illustré ici (les « Phases » sont en vert) :
.

Phase 1 : on crée un curseur, d’amplitude taille. Ne pas omettre de lui mettre un incrément de 1 dans l’inspecteur d’objet sinon on perd le point que l’on va créer ensuite - on le récupère dès que l’incrément devient entier.
Phase 2 : créer un point M
Phase 3 : lui associer un comportement (qui sera dans son onglet Expression)
Phase 4 : on lui affecte cette instruction.

Remarque importante sur cette phase 4 : dès que l’on place un Retourner seul sur la page de travail le point M disparaît de l’écran. C’est tout à fait normal, il réapparaît quand le retour est valide.

Manipuler la figure en ligne (agir sur le curseur k) : https://huit.re/ReleveIndicesSommets

Étapes 3 et 4 - Recherche manuelle et transcription de parcours dans la figure

Bien entendu, ici l’objectif n’est qu’un objectif d’illustration, à des fins didactiques, sur les parcours hamiltoniens et eulériens : on ne fait pas un programme de recherche de parcours, ce serait un autre objectif, nettement plus ambitieux. Donc la recherche est visuelle, la figure n’illustrera que les parcours qu’on a bien voulu lui donner à parcourir. L’objectif de l’onglet est juste de montrer une façon de l’organiser.

Voici quelques parcours :

Trois Parcours Hamiltonien (non cycle)

[2, 3, 20, 11, 12,26,9,17,30,4,21,35,34,22,23,6,5,31,16,8,7,14,13,25]

[2, 3, 20, 11, 12,26,9,17,30,4,21,35,34,22,23,6,5,31,16,7,14,13,25,8]

[2, 3, 20, 11, 12,26,9,17,30,4,21,35,34,13,25,8,16,31,5,22,23,6,7,14]

4 cycles hamiltoniens (non isomorphes)

[2,3,20,35,21,4,30,17,9,8,16,31,5,22,34,23,6,7,14,13,25,26,12,11]

[2,17,16,31,30,3,4,5,22,21,20,35,34,13,12,11,26,25,14,23,6,7,8,9]

[2,17,16,7,6,31,30,3,4,5,22,21,20,35,34,23,14,13,12,11,26,25,8,9]

[2,17,16,7,14,13,34,23,6,31,30,3,4,5,23,21,20,35,12,11,26,25,8,9]

On construit ensuite une liste de ces 7 parcours hamiltoniens. C’est cette dernière liste que l’on place dans une expression de la figure, nommée ChHam. Puis une seconde expression, TeC, extrait le parcours choisi par le curseur ChH :

On notera le décalage d’indice car, travaillant directement dans les expressions de DGPad, nous sommes implicitement en JavaScript, et donc les indices des listes commencent à 0, contrairement à Blockly où ils commencent à 1.

Étape 5 - Création de la trace de la tortue à partir des données

Dans la figure le curseur kH indique le nombre de sommets tracés. On part du point A. Le tracé ne commence qu’à partir de deux points. C’est un parcours classique de liste, mais pour ce traitement, interne à Blockly, il faut transférer la liste de DGPad en variable de Blockly, ce qui est fait à la première ligne. On notera que, puisque la tortue peut aller directement à un point, il n’est pas nécessaire de pivoter vers puis d’avancer, le bloc Rejoindre fait les deux en même temps.

Comme certains parcours sont des cycles, un traitement spécial est fait à la fin pour eux, pour rejoindre le premier point. On rejoint le point 2 de la trace, car c’est la trace de O et donc le point 1 est le point O.

Étape 6 : le cas des cycles eulériens

Le principe est le même. Comme tous les chemins sont des cycles, pour éviter les trois dernières lignes du programme précédent, dans la liste on a ajouté le point de départ à la fin.

Comme on parcourt toutes les arêtes, on voit bien le parcours en manipulation directe, mais ensuite on n’a pas de trace de la temporalité du chemin. On peut alors être tenté d’ajouter l’indice du parcours sur l’arête. C’est plus informatif mais moins esthétique, c’est pour cela que ce n’est disponible que dans une figure à part (mais on aurait pu mettre un curseur booléen). Cela ne sera pas proposé pour les autres figures, car avec bien plus d’arêtes (50 et 120) cela devient illisible.

Manipuler cette figure particulière : https://huit.re/RhombiEulerNum

Le cas de l’icosidodécaèdre

Le patron

Techniquement, le patron utilisé est très proche du patron standard du dodécaèdre. Les pétales des fleurs sont juste un peu plus complexes, mais on reprend le principe des deux coupoles.

Manipuler la figure en ligne, avec de nombreuses options : https://huit.re/Icosidodeca_patron

Les cycles hamiltoniens et eulériens

Le polyèdre est construit simplement en fixant, dans la figure précédente, le coefficient de pliage à 1.

Nous reprenons la même technique. La figure propose 4 cycles hamiltoniens et 3 cycles eulériens. Voici le début (sur 16 arêtes) de ces trois cycles.

La figure en ligne : https://huit.re/Icosidodeca4H3E

Exercice technique intéressant  : on pourrait mettre à la fois le patron et les parcours dans une seule figure. Il suffit de faire apparaître les curseurs des parcours seulement si le patron est replié. Ce n’est qu’un exercice de technique de DGPad qu’il peut être intéressant d’effectuer.

Le Rhombicosidodécaèdre

Même s’il est - géométriquement - équivalent au précédent, les constructions du patron - qui passe de 32 à 62 faces - et des cycles hamiltoniens et eulériens - qui passent de 30 à 60 sommets et de 60 à 120 arêtes- sont nettement plus longues. Le patron est bien plus joli aussi.

Le patron

Il est construit sur la base d’une belle décomposition de 62 en 1+5x12+1, soit le pentagone du sol, celui de la voute supérieure, et 5 branches de 12 pétales.

La figure en ligne : https://huit.re/Rhombicosidodeca_Patron

La figure animée : https://huit.re/Rhombicosi_Anime

(le principe de l’animation a été développé à la fin de l’onglet sur le ballon de foot)

Quelques cycles hamiltoniens

Comme les sommets sont deux fois plus nombreux, l’idée est venue de partager un cycle hamiltonien en deux partitions de 30 sommets et de chercher des variantes de ces parcours pour chacune des deux partitions. La figure finale permet de visualiser les sommets depuis une partie quelconque du cycle, On peut ainsi regarder les 30 premiers sur un des hémisphères, ou les 30 derniers, sur l’autre hémisphère. Il y a 17 options de parcours pour la première partition et Z1 pour la seconde. Ces options ne sont pas exhaustives, loin de là, en particulier pour la seconde partition on entrevoit, par observation directe, d’autres solutions. De même, avec un peu d’observation de ces figures, il est rapidement clair que si on ne s’était pas arrêté sur un carré, il y aurait eu sans doute plus de partitions « immédiates à trouver » des deux côtés.

Présentation de la figure et de ses différents curseurs

Les 30 premiers sommets

Les 30 derniers sommets

La figure finale (de 357 cycles hamiltoniens) : https://huit.re/Rhombicosi_357H

Exemple de 6 des 17 partitions de 1 à 30 proposées

Commentaires techniques et précisions sur le code

Le principe est le même qu’avec le rombicuboctaèdre, les curseurs déterminent les partitions retenues. Ces partitions sont concaténées dans la variable UnCycleComplet.

On commence par aller sur le premier sommet déterminé par kHdeb. Plusieurs lignes de code pour déterminer les couleurs, le reste se fait comme précédemment.

Le codage des partitions

Il se fait comme précédemment. Voici quelques éléments qui peuvent intéresser les lecteurs qui voudraient aller plus loin.

{{Hamilton 1 original}}

[1,2,13,8,9,22,290,27,26,31,21,20,41,36,52,53,54,323,59,58,124,191,259,254,264,269,253,291,242,237,221,222,201,196,186,200,169,174,146,141,153,154,107,106,118,134,129,119,63,68,87,86,74,79,3,4,5,209,214,315,1]

{{Partie 1 - Modif sur la première moitié de l'original :}}

L'original

[1,2,13,8,9,22,290,27,26,31,21,20,41,36,52,53,54,323,59,58,124,191,259,254,264,269,253,291,242,237]

Les trois premières partitions ne portent que sur les 20 premiers sommets en fait

H1a sur les 20 premiers

[1,2,13,41,36,52,53,54,31,21,20,8,9,22,290,27,26,323,59,58,124,191,259,254,264,269,253,291,242,237]

H1b sur les 20 premiers

[1,2,13,8,9,22,290,27,26,323,59,54,31,21,20,41,36,52,53,58,124,191,259,254,264,269,253,291,242,237]

H1c sur les 20 premiers

[1,2,13,41,20,8,9,22,290,27,26,21,31,36,52,53,54,323,59,58,124,191,259,254,264,269,253,291,242,237]

{{Les 17 partitions}}


[[1,2,13,8,9,22,290,27,26,31,21,20,41,36,52,53,54,323,59,58,124,191,259,254,264,269,253,291,242,237],[1,2,13,41,36,52,53,54,31,21,20,8,9,22,290,27,26,323,59,58,124,191,259,254,264,269,253,291,242,237],[1,2,13,8,9,22,290,27,26,323,59,54,31,21,20,41,36,52,53,58,124,191,259,254,264,269,253,291,242,237],[1,2,13,41,20,8,9,22,290,27,26,21,31,36,52,53,54,323,59,58,124,191,259,254,264,269,253,291,242,237],[1,2,13,8,9,22,290,27,26,31,21,20,41,36,52,53,58,124,191,259,59,54,323,264,254,253,269,291,242,237],[1,2,13,8,9,22,290,27,269,264,323,26,31,21,20,41,36,52,53,54,59,58,124,191,259,254,253,291,242,237],[1,2,13,8,9,22,21,20,41,36,52,53,58,124,191,259,59,54,31,26,323,264,254,253,269,27,290,291,242,237],[1,2,13,41,36,52,53,58,124,191,259,59,54,31,21,20,8,9,22,290,27,26,323,264,254,253,269,291,242,237],[1,2,13,41,20,8,9,22,21,26,31,36,52,53,58,124,191,259,59,54,323,264,254,253,269,27,290,291,242,237],[1,2,13,41,20,8,9,22,290,27,26,21,31,36,52,53,58,124,191,259,59,54,323,264,254,253,269,291,242,237],[1,2,13,41,20,8,9,22,290,27,269,264,323,26,21,31,36,52,53,54,59,58,124,191,259,254,253,291,242,237],[1,2,13,41,20,8,9,22,21,26,323,59,54,31,36,52,53,58,124,191,259,264,254,253,269,27,290,291,242,237],[1,2,13,41,36,52,53,54,31,21,20,8,9,22,290,27,26,323,59,58,124,191,259,254,264,269,253,291,242,237],[1,2,13,41,36,52,53,54,31,26,21,20,8,9,22,290,27,269,264,323,59,58,124,191,259,254,253,291,242,237],[1,2,13,41,36,52,53,58,124,191,259,59,54,323,264,254,253,269,27,26,31,21,20,8,9,22,290,291,242,237],[1,2,13,41,36,52,53,58,124,191,259,264,254,253,269,27,26,323,59,54,31,21,20,8,9,22,290,291,242,237],[1,2,13,41,36,52,53,54,323,59,58,124,191,259,264,254,253,269,27,26,31,21,20,8,9,22,290,291,242,237]]


{{Partie 2 - Modification sur les 30 sommets finaux}}

On part sur la base des sommets 29 et 30 : 242 -237

Exemple de quelques modifications

Les deux modifications sur 1, 3 et 4 (le 141-146 avec le 4 ou le 5)

Fin H2 d - modif A du 1 (original)

[221,222,201,196,186,200,169,174,153,154,107,106,118,134,129,119,63,68,87,86,74,3,79,141,4,146,209,5,214,315,1]

Fin H2 e Modif B du 1 (original)

[221,222,201,196,186,200,169,174,153,154,107,106,118,134,129,119,63,68,87,86,74,3,79,141,146,4,5,209,214,315,1]

Puis les modifications 86-106-107 et variantes (non détaillé)

{{Les 21 parcours finaux :}}

[[221,222,201,196,186,200,169,174,146,141,153,154,107,106,118,134,129,119,63,68,87,86,74,79,3,4,5,209,214,315,1],[201,196,186,200,169,174,222,221,209,146,141,153,154,107,106,118,134,129,119,63,68,87,86,74,79,3,4,5,214,315,1],[221,222,174,146,141,153,169,200,201,196,186,129,134,154,107,106,118,119,63,68,87,86,74,79,3,4,5,209,214,315,1],[221,222,174,146,141,153,154,107,106,118,134,169,200,201,196,186,129,119,63,68,87,86,74,79,3,4,5,209,214,315,1],[221,222,201,196,186,200,169,174,153,154,107,106,118,134,129,119,63,68,87,86,74,3,79,141,4,146,209,5,214,315,1],[221,222,201,196,186,200,169,174,153,154,107,106,118,134,129,119,63,68,87,86,74,3,79,141,146,4,5,209,214,315,1],[221,222,174,153,169,200,201,196,186,129,134,154,107,106,118,119,63,68,87,86,74,3,79,141,4,146,209,5,214,315,1],[221,222,174,153,169,200,201,196,186,129,134,154,107,106,118,119,63,68,87,86,74,3,79,141,146,4,5,209,214,315,1],[221,222,174,153,154,107,106,118,134,169,200,201,196,186,129,119,63,68,87,86,74,3,79,141,4,146,209,5,214,315,1],[221,222,174,153,154,107,106,118,134,169,200,201,196,186,129,119,63,68,87,86,74,3,79,141,146,4,5,209,214,315,1],[201,196,186,200,169,153,154,107,106,118,134,129,119,63,68,87,86,74,79,3,4,141,146,174,222,221,209,5,214,315,1],[201,196,186,200,169,134,129,119,63,68,87,86,74,3,79,107,106,118,154,153,174,222,221,209,146,141,4,5,214,315,1],[221,222,201,196,186,200,169,174,146,141,153,154,118,134,129,119,63,68,87,86,106,107,79,74,3,4,5,209,214,315,1],[201,196,186,200,169,174,222,221,209,146,141,153,154,118,134,129,119,63,68,87,86,106,107,79,74,3,4,5,214,315,1],[221,222,174,146,141,153,169,200,201,196,186,129,134,154,118,119,63,68,87,86,106,107,79,74,3,4,5,209,214,315,1],[221,222,174,146,141,153,154,118,134,169,200,201,196,186,129,119,63,68,87,86,106,107,79,74,3,4,5,209,214,315,1],[201,196,186,200,169,153,154,118,134,129,119,63,68,87,86,106,107,79,74,3,4,141,146,174,222,221,209,5,214,315,1],[221,222,201,196,186,200,169,174,153,154,118,134,129,119,63,68,87,86,106,107,79,74,3,4,141,146,209,5,214,315,1],[221,222,174,153,169,200,201,196,186,129,134,154,118,119,63,68,87,86,106,107,79,74,3,4,141,146,209,5,214,315,1],[221,222,174,153,154,118,134,169,200,201,196,186,129,119,63,68,87,86,106,107,79,74,3,4,141,146,209,5,214,315,1],[201,196,186,200,169,134,129,119,63,68,87,86,107,106,118,154,153,174,222,221,209,146,141,79,74,3,4,5,214,315,1]]

Cycles eulériens

Partie en cours de réalisation - la partie sur le Rhombicosidodécaèdre n’était pas prévue initialement - qui devrait être disponible pour fin août.

Bilan de cet onglet

La figure proposée à l’analyse détaillée est assez technique Ce fut l’occasion d’illustrer les possibilités d’interaction entre la figure et la programmation de la tortue, et surtout, une nouvelle fois, avec la construction des traces au curseur, les possibilités qu’offre le temps réel à la tortue, contrairement au temps différé de l’exécution d’un programme.
On notera aussi que la figure contient trois traces différentes de tortue, dont une toujours à l’écran, la trace de O, et la construction du polyèdre.
Bien entendu, si on l’avait souhaité, toutes les données sur les parcours auraient pu être dans Blockly. Le choix de mélanger les deux ici n’est pas indispensable, il est essentiellement pédagogique.

La fin de l’onglet permet de télécharger deux nouveaux patrons de polyèdres archimédiens. Les 357 parcours hamiltoniens sur le rhomicosidodécaèdre permet d’aller encore plus loin dans la gestion des partitions avec la partie des données du côté « classique » de DGPad et la partie plus dynamique de construction effectif des parcours du côté de sa tortue.

Haut de la barre sur les polyèdres (onglet suivant : hommage à GéoTortue)

Hommage à GeoTortue

Hommage à GéoTortue

S’approprier des outils aussi nouveaux que la tortue 3D, qui plus est dans le cadre de longs beta tests, n’est pas simple au départ : si on pratique très facilement la géométrie à repère mobile en 2D, le passage à la 3D demande une certaine appropriation - d’où ces onglets très détaillés pour permettre à chacun d’aller plus vite. On n’a pas de repère, il n’y a pas grand chose dans la littérature sur la façon de construire par exemple les polyèdres réguliers ou semi-réguliers directement à la tortue. On a l’impression de ne rien savoir sur ces polyèdres tant les données que l’on a sont essentiellement celles de la géométrie dans un repère absolu.

Même si on va - finalement - faire des choses bien différentes - c’est tout naturellement qu’on se penche vers ses grands ainés : un grand père, XLogo, qui a déjà parcouru bien des choses en 3D, et un grand frère, GéoTortue, que je pratique régulièrement pour le plaisir (bien avant l’arrivée de la tortue de DGPad) et comme formateur TICE pour la préparation au CAPES (il est toujours au programme après une grosse purge récente). GéoTortue a un code si compact que c’est toujours fabuleux, y compris pour les élèves, et même si on dit désormais que les élèves « ne doivent pas écrire de code », faire un peu de GéoTortue en 6° et 5° avant de faire - ou reprendre du primaire - du Scratch me semble toujours formateur.

Alors, en hommage à GéoTortue, je voulais présenter une figure emblématique du site en DGPad. J’avais bien entendu pensé à Vasarely, mais Patrice Debrabant m’a devancé sur ce thème, il a préparé une fiche de travail sur le site CaRMetal.org. Une autre figure emblématique est ce que j’appellerais le Tore de GéoTortue.

Donc j’ai bien entendu commencé la géométrie 3D à la tortue en refaisant les polyèdres « façon GéoTortue » (voir l’onglet suivant pour une illustration pratique d’un outil sur ce thème), puis la tortue a fini par voler de ses propres ailes, mais toujours avec un œil sur le grand frère qui a déjà balisé bien des choses.

Le tore est une figure 2D, mais elle est significativement évocatrice, en tout cas dans la colorisation de GéoTortue.

Le Tore de GéoTortue façon DGPad

Il est piloté par des curseurs et deux points A et B qui déterminent la taille de la figure (AB est la longueur du côté du losange de référence).

Construction d’une ligne de losanges

La construction est assez simple : une famille de losanges part du centre (polygone régulier à n côtés, de longueur AB) et progresse en augmentant son angle régulièrement du pas défini par le nombre n de côtés du polygone. Ainsi quand n est un diviseur de 90, un des losanges est un carré. On ne construit pas de losange d’angles nuls ni plats.

Rotation de la ligne autour du polygone régulier initial

Cette ligne étant faite, on la fait partir de chaque côté du polygone régulier à n côtés. Là encore, comme ailleurs, la géométrie dans un repère mobile simplifie grandement l’activité.

Replacer la tortue dans la construction d’un losange

Ce qui est le plus long dans la procédure losange, c’est le travail hors construction : Il s’agit de laisser la tortue au bon endroit ...

La figure « Tore de GéoTortue » en ligne : https://huit.re/Tore2D_GT

Haut de la barre sur les polyèdres (onglet suivant : liens entre l’unité tortue et l’unité du repère)

Lien pixels / unités

Utilisation des pixels dans les expressions de DGPad

La mise en place d’une nouvelle unité - le pixel - pour la tortue a amené à introduire cette nouvelle unité dans les figures de DGPad, hors contexte Blockly, pour que les deux environnements puissent agir sur les mêmes objets.

Ainsi, comme c’était d’ailleurs déjà le cas dans CaRMetal, l’unité pixel() est apparue dans le sillage de la naissance de la tortue.

Pour tester cette unité sur des outils que ne produit pas la tortue, on a pris un polyèdre construit « façon GéoTortue », c’est-à-dire, calculé et construit à partir du rayon de la sphère circonscrite. On a choisi l’icosaèdre.

Or en perspective axonométrique - c’est une des raisons de ce choix pour les logiciels de 3D en géométrie - le contour apparent d’une sphère est un cercle. Donc le cercle 2D de rayon la taille, en pixels, de la construction de GéoTortue devrait être le contour apparent de la sphère circonscrite.

Sans autres constructions annexes, cela risque d’être assez peu concluant. D’où l’idée de construire plusieurs cercles circonscrits, soit à des faces soit même à des pentagones de sommets : ces cercles circonscrits devraient être tangents au contour apparent de la sphère circonscrite, c’est-à-dire au cercle, dans le plan de l’écran, de rayon 200 pixels.

Illustration du contour apparent

On a donc placé 4 cercles circonscrits devant être des cercles de points de la sphère circonscrite. Deux en traits pleins deux en pointillés. Et on illustre bien que le cercle construit en pixels (de 160 pour les copies d’écran pour que cela rentre dans la page de MathémaTICE) est bien le contour apparent de la sphère de l’icosaèdre.

Ainsi, grâce à sa tortue, DGPad sait désormais construire aussi en pixels, ce qui, dans certains cas, même hors tortue, peut être pratique.

La figure de l’icosaèdre et de ses cercles : https://huit.re/Ico_ContourApparentPixels

Petite naïveté ... pour calculer un peu

Voici deux figures - des toutes premières réalisées pour découvrir la tortue de DGPad (même si ce n’était sans doute la meilleure façon) - reprenant les codes, bien plus compacts bien-sûr, de GéoTortue.

J’ai été très surpris du rapport - trouvé empiriquement - de 4/5 entre les rayons des sphères circonscrites des polyèdres duaux que sont l’icosaèdre et le dodécaèdre :

Hum ! hum ! Qu’en est-il exactement ? Et sinon quelle est l’erreur commise ?

La figure Icosaèdre et dual (pour corriger le paramètre du second) : https://huit.re/Ico_dual_GT

La figure duale (idem) : https://huit.re/Dodeca_dual_GT

Conclusion de cette petite exploration

Assurément la réponse en temps réel favorise l’exploration empirique ... ici on teste des paramètres et l’on s’arrête - à cause de ce vieux bout d’ADN pythagoricien finalement plus « codant » qu’on voudrait le croire - sur des rapports fractionnaires « plaisants et délectables » pour reprendre un titre bien connu. on peut se bercer d’illusions par cette facilité.

Cette illustration pour rappeler que la démarche scientifique - ici simplement le calcul des valeurs exactes - se veut un dépassement de l’empirisme ...

Éléments de réponse

Il suffit d’aller sur la page icosaèdre de MathCurve par exemple, pour voir que le rapport des rayons de la sphère inscrite et de la sphère circonscrite est

$\frac{\phi^2}{\sqrt{3 \phi \sqrt{5}}}$,

soit approximativement 0,7946 que l’on a remplacé par 0,8. Ce qui fait pour une sphère de 200 pixels, une erreur de 200x0,0054 soit environ 1 pixel.


Haut de la barre sur les polyèdres (pour onglet suivant)


Intro | Espace | Polyedres | Récursivité

4. Autres activités

Cette partie contient quelques compléments destinés plus principalement aux enseignants (premier onglet) mais aussi, à nouveau, des activités orientées pour le collège, comme les frises, les exercices et les aspects algébriques, un domaine encore à travailler. Un onglet un peu OVNI, sur les Kirigamis, est lié à un stand de l’IREM de la Réunion à la fête de la science.

Retour en géométrie

Quelques éléments de géométrie usuelle du triangle revisités par la tortue dynamique

Cette partie a son origine dans un questionnement de Eric Hakenholz : que peut-on faire d’ autre à la tortue, que les outils de la tortue et les distances entre les points (bloc Expression) d’un point de vue géométrique ? Refaire quelques outils de géométrie, comme nous reconstruisions, au tout début de la géométrie dynamique, les items de construction de Cabri à partir d’un nombre minimum d’actions.

Donc la règle du jeu dans cet onglet est de n’utiliser comme information sur la figure, que la distance entre les points, ou les points et la position de la tortue. Eric Hakenholz a un logiciel à écrire, il n’a pas trop de temps pour jouer à tout cela. Pour ma part, j’ai un logiciel à tester et à explorer, position idéale pour approfondir cette problématique ;-) D’où la naissance de cet onglet.

Nous allons voir que, moyennant le fait de donner quelques outils aux élèves - sous forme de fonctions qui pourraient être considérées comme des blocs tortue du logiciel - certains thèmes pourraient être avantageusement abordés en classe, par exemple quand on utilise Pythagore pour finaliser une construction. Nous avons donc rédigé certains thèmes de cet onglet en une version utilisable en collège et une version plus finalisée pour les enseignants.

Le pied de la hauteur sur une droite - Narration de recherche

La principale interrogation quand il s’agit de reproduire les outils de base du collège est celle de la symétrie axiale. Peut-on reproduire la symétrie axiale à la tortue, dans un environnement dynamique ? Eric a posé cette question sous la forme de la construction du pied de la perpendiculaire. Il en avait proposé une solution un peu longue que nous allons optimiser.

Cette question du pied de la hauteur est intéressante car elle est porteuse d’une nouvelle problématique pour la tortue, celle d’une « tortue logique » qui va devoir choisir son chemin selon la configuration du terrain. Dynamiquement bien entendu.

Le principe

Il faut trouver la direction orthogonale à (BC) depuis M, ce qui va être facile à réaliser. Ensuite il faut avancer la tortue de MH, distance qui se calcule facilement avec la formule de Héron : avec les trois distances on a l’aire du triangle, et avec l’aire, la distance MH. La seule question qui se pose est de savoir si le point traité est le point M ou le point M’ pour savoir s’il faut avancer ou reculer de la longueur MH.

Comment, étant donnés trois points M, B et C, déterminer intrinsèquement - et avec nos choix de rester avec des distances uniquement - à quel demi plan délimité par (BC) apparient le point M ? C’est cette question qui fait l’intérêt de l’exercice, et sa solution qui pourrait motiver à en faire une activité scolaire, partiellement au moins.

La direction orthogonale - Le problème

La direction orthogonale est tout simplement la perpendiculaire à la parallèle à (BC) en M. Or cette parallèle est la construction du parallélogramme de sommets M, B et C que nous avons déjà réalisée à l’onglet « Modifier un quadrilatère ». La tortue parcourt la moitié de la distance de M à C, vers C, puis, dans la direction de B, recule de la distance de sa position à B. La tortue rejoint M (ce qui trace un segment parallèle à [BC] passant par M) et prend une direction perpendiculaire. On a la direction, la longueur MH ... mais pas le sens.

Tourner à gauche de 90° depuis le point M et avancer de MH n’est correct que d’un côté de (BC). Il faudrait, soit tourner à gauche ou à droite selon la position relative des points, selon que MBC est un triangle direct ou non, soit encore reculer de 2 MH si on peut vérifier que la position de la tortue ne convient pas.
Que le triangle soit direct ou non se traite par un déterminant, donc avec les coordonnées des points, pas avec les longueurs. Même si c’est intéressant (on y reviendra) cela ne rentre pas dans le cahier des charges de cet onglet. Reste la seconde alternative.

« Si la position de la tortue ne convient pas » - version 1 par l’inégalité triangulaire

Or, dire que ce point H ne convient pas, c’est dire qu’il n’est pas sur le segment [BC], c’est-à-dire qu’il n’est pas aligné avec B et C. Soit que H ne convient pas si BCH est un vrai triangle. C’est donc l’inégalité triangulaire qui apporte une solution : H convient si BH+CH = BC (soit BH+CH-BC=0) et donc H ne convient pas si BH+CH > BC (soit BH+CH-BC > 0). En informatique on ne teste pas si un nombre réel est nul, exactement, le test est instable sur les réels. On teste sur un voisinage de 0 (on a choisi 0,001).

Si H n’est pas à la bonne position, le triangle existe donc il aurait fallu reculer de MH au lieu d’avancer, d’où la fin de la trace qui revient sur ses pas de 2MH.

Tester cette version intermédiaire : https://huit.re/PiedHauteur_v1a

Si vous testez cette solution - mais ce n’est peut-être pas nécessaire non plus - vous vous apercevez très vite qu’elle n’est pas complète. En effet, et beaucoup de collègues se sont probablement posé des questions sur les affirmations précédentes concernant le test, comme il est présenté, il ne fonctionne bien entendu que si H est entre B et C. La figure intermédiaire ci-dessus aboutit donc à ceci :

Il faut tester sur le plus grand côté effectif, dynamiquement. On peut faire cela simplement même si c’est un peu technique à écrire. Pour simplifier on choisi ici d’utiliser des variables globales, ce qui permet d’éviter le passage par paramètre.

On a créé une procédure Classer les segments - même si, fondamentalement c’est un rangement ;-) et on l’applique juste avant le test, tout simplement :

La figure finale pour le pied de la hauteur : https://huit.re/PiedHauteur_v1b

« Si la position de la tortue ne convient pas » - version 2 par Pythagore

Cette utilisation de l’inégalité triangulaire, si elle est une belle idée, est fastidieuse puisque qu’elle ne donne pas une caractérisation de l’alignement mais bien qu’un point est entre deux autres. D’où cette nécessité de "classer les segments". Ce serait plus pertinent de trouver une caractérisation métrique de la bonne position de H. Or le point H (position de la tortue) est bien sur la droite (BC) si et seulement si le triangle MHC est rectangle en H et donc si et seulement si
$MC^2=MH^2+HC^2$. On fait la différence et on la compare à 0. En fait il est facile de voir que la différence est nulle si H est bien le pied de la perpendiculaire et négative sinon.

L’intérêt de cette seconde méthode est qu’elle est une caractérisation de la bonne position de H, il n’y a donc rien de plus à tester. La programmation se modifie alors ainsi :

Explorer la figure en ligne : https://huit.re/PiedHauteur_v2Pytha

Retour à la symétrie orthogonale

Comme on vient de poser le pied de la hauteur, la tortue est orientée vers le symétrique de M par rapport à (BC), donc il suffit d’ajouter une ligne pour passer du pied de la hauteur au symétrique orthogonal à la tortue :

La figure finale du symétrique d’un point à la tortue : https://huit.re/SymOrthoTortue

Pied de la hauteur - avec le signe de l’aire

On a dit que ce n’est pas le cahier des charges, mais on peut regarder un instant comment, avec la tortue, calculer directement l’avancée de la tortue, orientée. Pour cela il faut donner un signe à la variable MH (qui n’est plus alors une longueur). On peut aussi donner un signe aux 90° de la rotation gauche. L’orientation étant faite au départ, la fin de la programmation est plus simple, il suffit d’avancer de MH. Et en conséquence, il n’y a aucun cas à traiter comme dans la version 1, tout est fait déjà dans l’orientation.

La démarche est, dans tous les cas, hors contexte scolaire car on calcule le déterminant des vecteurs $\overrightarrow{BC}$ et $\overrightarrow{BM}$ (c’est une façon de calculer le sinus - aux normes près).

La figure Pied de la hauteur par le signe de l’aire : https://huit.re/PiedHauteur_v1signe

Bilan de ce premier paragraphe

On a choisi de traiter cette problématique du pied de la hauteur en détail car, outre que c’est la question de la symétrie axiale, la construction retenue pose un questionnement nouveau, celui de « tortue logique » et qu’il peut être abordé avec des outils plus ou moins pertinents : si l’inégalité triangulaire permet de tester l’alignement, elle ne rend pas compte de l’alignement sur toute la droite, il faut l’aménager. Par contre, même si elle n’était pas attendue ici, la caractérisation de cet alignement de H sur (BC) par la propriété de Pythagore est très efficace. La figure avec le signe, si elle est un peu anecdotique ici, illustre néanmoins que la géométrie des configurations orientées - bien entendu - est d’une plus grande efficacité que la géométrie non orientée du collège.

Cette première approche réalise le pied de la hauteur en 4 ou 5 étapes de la tortue. La première version qui a circulé nécessitait 7 ou 8 étapes, mais elle avait surtout l’intérêt de poser la problématique de la « tortue logique » (et puis l’auteur de ces lignes, lui, n’écrit pas un logiciel génial de géométrie dynamique ;-)

Au paragraphe suivant, nous restons sur ce même thème. Comme indiqué dans son titre, ce premier paragraphe est finalement une narration de recherche de l’auteur, avant de décontextualiser tout cela. En analysant ce qui précède, on peut faire beaucoup - beaucoup - plus simple, et, moyennant de donner la fonction Aire, comme si c’était un bloc de la tortue, en faire une activité scolaire pertinente. Partant à nouveau de M, nous allons construire le pied de la hauteur, toujours entièrement de manière métrique, mais en deux étapes seulement ! On pourrait même ne faire qu’une étape si on s’autorisait de partir d’un autre point.

Le pied de la hauteur sur une droite - Quand Pythagore devient lui aussi l’ami de la tortue

Décontextualisez, décontextualisez, et décontextualisez encore ! Ah cette compétence d’extraire une figure simple d’une figure complexe ... Changer de point de vue, pas si simple parfois !

Pour construire le pied de la perpendiculaire d’un point M sur une droite (BC), on s’est donc dit, qu’il faut calculer la distance MH entre le point et la droite, et qu’il faut ensuite arriver à déplacer la tortue de MH, d’abord dans la bonne direction, en ensuite dans le bon sens.
• Dans la bonne direction : avec le parallélogramme - 3 étapes
• Dans le bon sens : avec Heron et Pythagore (ou pas) - 1 ou 2 étapes

Mais ceci n’est qu’un point de vue, peut-être celui de l’obsession de la verticalité issue notre représentation de la symétrie orthogonale : il faut aller de M à H pour créer cet angle droit avec (BC) et reporter MH deux fois pour le symétrique. Finalement, matérialiser le sinus ! Et pourtant, il y a le cosinus ! Avec lui la direction est déjà donnée, c’est la droite (BC), on pourrait peut-être économiser les 3 étapes de cette orthogonalité.

Le principe

Ayant calculé MH, on a bien entendu BH par le théorème de Pythagore. Reste à connaitre le sens : depuis B, vers C ou dans le sens opposé ? Là encore Pythagore nous donne la solution. En effet, on peut calculer l’égalité de Pythagore sous la forme : $MC^2-MB^2-BC^2$ : si cette expression est négative (angle en B obtus), la projection de M sur (BC) n’est pas sur la demi-droite [BC), ce qui donne au final une construction très simple :

Si on part toujours de M (pour comparer les longueurs des traces), la souris va en B, elle pointe vers C. Un calcul de Pythagore indique si elle doit se retourner au pas, elle avance de BH.

La figure du pied de la hauteur par BH : https://huit.re/PiedHauteur_Pytha2

Le symétrique d’un point par rapport à une droite

La tortue étant en H, il est facile de terminer la construction du symétrique de M : on pointe vers M, on fait demi tour et on avance de la distance de la tortue à M :

La figure du symétrique par BH : https://huit.re/SymOrthoPythaTortue

Option algébrique pour ne pas utiliser l’aire - proposition de Eric H. après relecture de cet onglet.

Travailler avec l’aire permet de se passer de la mesure algébrique, mais le produit scalaire donne aussi tout simplement la solution. Donc selon la classe dans laquelle on souhaite faire évoluer la tortue, on peut directement utiliser la relation :$2\overline{BH}.\overline{BC}=BC^2+MB^2-MC^2$ qui se démontre simplement en appliquant deux fois le théorème de Pythagore dans le triangle BCM où H est le pied de la hauteur issue de M.

Rappel de la preuve de la relation

On applique le théorème de Pythagore dans les triangles BHM et CHM tous les deux rectangles en H :
on a $MB^2 = BH^2+HM^2$ et $MC^2=MH^2+HC^2$ soit par différence :
$MC^2 - MB^2 = HC^2 - HB^2 = (\overline{HC}+\overline{HB})(\overline{HC}-\overline{HB})$
On a $\overline{HC}-\overline{HB}=\overline{BC}$ et on peut écrire $\overline{HC}+\overline{HB}=2\overline{HB} + \overline{BC}$, soit, en développant, la relation cherchée.

Finalement, on peut écrire, avec la bonne orientation - c’est-à-dire la tortue passant par B, et allant vers C pour respecter les mesures algébriques : $\overline{BH}=\frac{BC^2+MB^2-MC^2}{2BC}$. C’est en ce sens - on utilise seulement des distances en respectant les bonnes directions - que l’on peut dire que cette construction ultime rentre dans le cahier des charges de l’onglet.

Avec sa version de la symétrie centrale associée

La figure Pied de la hauteur algébrique : https://huit.re/PiedHauteurAlg

La figure Symétrique orthogonale algébrique : https://huit.re/SymOthoAlg

Bilan de ces deux premiers paragraphes

En regardant autrement la question du symétrique, de manière horizontale plutôt que verticale, on arrive à une solution toute élémentaire, purement métrique avec l’aire, ou métrique avec respect de l’orientation de la trace, sans l’aire. Dans les deux cas on construit le pied de la hauteur en deux étapes seulement. La démarche est probablement re-contextualisable pour un travail de recherche en classe.

On peut choisir une version avec les aires, ou sans les aires, selon ce que l’on souhaite détailler comme justification. S’il n’y a rien à justifier - pour ses constructions personnelles sur les projections orthogonales, on transformera la dernière figure en procédure.

Cette problématique du pied de la hauteur a été longuement détaillée car elle est à la frontière des questions d’orientation et de la façon d’aborder ces questions - ou non - au collège ou au lycée. La question est sensible - y compris en préparation au CAPES - d’où la multiplicité des approches pour permettre à chacun de piocher dans le point de vue qui lui parle le plus. Les plus anciens des enseignants ont connu l’évacuation un peu brutale des mesures algébriques au collège et une nouvelle complexité de la transposition didactique de Thalès avec les distances dans la réciproque.

La pratique de la tortue dynamique offre un regard un peu différent sur ce questionnement de l’orientation. Cela peut être un outil pour aborder les choses autrement.

Le centre du cercle circonscrit (par approximation successive)

Dans cette partie, on se propose d’explorer l’approximation successive à la tortue, sur un cas simple. On se limite ici à une présentation du principe, et à sa mise en œuvre dans le cas particulier où le triangle n’a pas d’angle obtus : le centre du cercle circonscrit est à l’intérieur du triangle. On a vu dans le paragraphe précédent qu’il est facile, avec Pythagore, de tester si un angle est aigu ou obtus, ce qui permet de généraliser la situation à tous les cas de figure. C’est aussi l’occasion de parler du tant que dynamique du Blockly de DGPad et du rafraichissement des expressions depuis la tortue.

Le principe

On dispose de trois points A, B, et C, et d’un point O qui va être fixé sur le centre du cercle circonscrit. On trace les médiatrices par « perpendiculaire en le milieu ». On le fait vers l’intérieur du triangle, c’est donc un cas particulier.

Les trois médiatrices tracées, on se place sur la médiatrice issue de A et on va déplacer la tortue sur cette médiatrice selon la différence entre distance de la tortue au point A et de la tortue au point C. Et on ajuste selon le signe de cette différence.

Un programme possible

L’utilisation du tant que est délicate. La tortue étant en temps réel, il faut qu’il n’y ait jamais de bouclage infini. D’une manière générale, je conseille de placer le code dans une boucle répète - avec un test correspondant au tant que, puis placer le corps du test dans le tant que, et ensuite, seulement le critère booléen entièrement construit à la fin.

D’une manière générale, en classe, je me permets de conseiller d’éviter le tant que. Ici il est nécessaire, mais un répète 20 fait la même chose et est plus sûr.

Une fois sorti de la boucle, on fixe le point O à la position de la tortue.

Une illustration

Ajout d’une vérification de la distance obtenue

On crée trois expressions que l’on initialise à 1 par exemple. En effet, si on place la distance d(O,A) par exemple dans une expression, celle-ci ne sera pas mise à jour (au moment où cet article est écrit du moins) si on déplace B et C alors que O est déplacé.

La mise à jour en temps réel se traite directement dans le code de la tortue. On nomme préalablement les expressions (non utile ici, sert à une meilleure lisibilité) et on les met à jour directement depuis Blockly :

La figure en ligne : https://huit.re/CCCApproxTortue

Bilan et conseils

Cette figure, avec un tant que, est dynamique dans les limites de sa construction : éviter de tester les situations non traitées, cela bloque le navigateur. Éviter aussi les mouvements brusques de la souris sur les sommets du triangle. D’une manière générale, le tant que dans une situation non totalement maîtrisée comme c’est le cas ici, n’est pas complétement stable. Dans d’autres situations - plutôt arithmétiques par exemple - il n’y a aucun problème. En analyse, d’une manière générale, si on peut évaluer une majoration de l’erreur, on mettra une boucle de type compteur, quitte à ajouter un curseur, plutôt qu’une boucle « tant que ».

On voit avec cette figure que l’on peut travailler des approches diverses par approximations successives. Beaucoup de choses seraient faisables en analyse à la tortue. C’est un domaine à explorer, si du moins il fait sens didactiquement.

Le centre du cercle circonscrit (construction exacte)

Nous n’avons pas insisté sur l’amélioration de la figure précédente car, pour ce qui est de la construction du centre du cercle circonscrit, on connait sa valeur à partir des longueurs des trois côtés : $R=\frac{abc}{4S}$. On peut donc très facilement faire une construction à la tortue.

Les calculs préliminaires

La médiatrice de [AB] et le placement algébrique du centre

On applique la méthode déjà dégagée pour le pied de la hauteur par l’inégalité de Pythagore. Ici on a choisi d’algébriser l’angle de rotation avec la variable rot.

Le point O est fixé par programmation à la tortue.

Les deux autres médiatrices

On peut utiliser le point O. Il n’y a donc pas de calculs à faire avec le rayon du cercle circonscrit. On peut en effet simplement rejoindre le point O.

La figure du cercle circonscrit à la tortue : https://huit.re/CCC_exactTortue

L’orthocentre pr la formule d’Euler - la droite d’Euler

On reprend la figure précédente, en gardant seulement la médiatrice qui fixe le point O. On y a ajouté un point H et un point G qui attendent d’être affectés par la tortue.

L’outil de la situation : la formule d’Euler

On considère le point M qui vérifie la relation vectorielle $\overrightarrow{OM} =\overrightarrow{OA}+\overrightarrow{OB}+\overrightarrow{OC}$.
On peut écrire que $\overrightarrow{CM} =\overrightarrow{OA}+\overrightarrow{OB}$. Mais O étant le centre du cercle circonscrit à ABC, OA=OB, donc OAB est isocèle en O, soit encore $\overrightarrow{OA}+\overrightarrow{OB}$ est porté par la médiatrice de [AB]. Donc $\overrightarrow{CM}$ est colinéaire à cette somme, ou plus simplement (CM) est parallèle à la médiatrice de [AB], donc (CM) est la hauteur issue de C.
On peut faire de même pour les autres sommets. Ainsi M est sur les trois hauteurs, c’est l’orthocentre. On a donc la relation d’Euler : $\overrightarrow{OH} =\overrightarrow{OA}+\overrightarrow{OB}+\overrightarrow{OC}$.

Par ailleurs, $\overrightarrow{OA}+\overrightarrow{OB}= 2\overrightarrow{OI}$ (avec I milieu de A et C). Et donc $\overrightarrow{CH} = 2\overrightarrow{OI}$. C’est cette relation qui permet de construire facilement H à la tortue dynamique.

Figure de présentation

En effet, les relations vectorielles précédentes permettent de construire, sur la figure ci-dessous, IOCU un parallélogramme de centre R milieu de C et I. Puis on construit H tel que U soit milieu de H et C : c’est l’orthocentre.

Le code algébrique de l’orthocentre et la trace de la tortue associée

Dans le programme suivant on utilise beaucoup le milieu des diagonales d’un parallélogramme. D’où cette dimension algébrique. Le paramètre k ne sert qu’à fixer H dans le premier appel. Voici le trajet de la tortue :

Les trois traces et l’apparition de l’intersection des médianes

Avec les trois traces, on met en évidence l’intersection des médianes puisqu’une partie de la trace de la tortue parcourt une partie de chaque médiane.

La droite d’Euler

On fixe alors, à la tortue, le point G au tiers de [OH], on illustre - constate - que G se place sur l’intersection des médianes, soit $\overrightarrow{OH}= 3\overrightarrow{OG}$

La figure de la droite d’Euler à la tortue : https://huit.re/DroiteEulerTortue

Isobarycentre d’un tétraèdre quelconque

Pour finir cet onglet, une figure fun, qui reprend les choses simples déjà faites dans le plan, juste parce que la trace de la tortue donne à montrer des trajets implicites que l’on ne voit jamais dans la géométrie plongée dans un repère cartésien.

La figure : https://huit.re/IsobarTetraTortue

Haut de la barre sur les autres activités (onglet suivant : Frises et pavages)

Frises et pavages

Frises et pavages élémentaires

Cet onglet contient la partie la plus statique de cet article. Pour faire des frises dynamiques, il manque juste un bloc à la tortue, qui n’est pas intégré au moment où cet article est écrit, mais s’il est réalisé un jour, un article d’un tout autre genre, nettement plus géométrique, pourrait être écrit.

Sur le thème des frises et des pavages statiques, on peut néanmoins faire beaucoup. L’apport de la géométrie dynamique va être de jouer sur les aspects. Moins anecdotique, le temps réel permet d’être confronté à des constructions non prévues, simplement parce que, posant des blocs sur la page de travail, ils s’appliquent avant même que leurs paramètres ne soient fixés.

L’objectif de cet onglet est juste d’explorer quelques pistes élémentaires, et à l’occasion, de montrer combien des fausses manipulations ou même simplement la construction en temps réel peuvent donner des idées pour d’autres pistes auxquelles on n’aurait pas pensé sans cette réactivité de la trace de la tortue.

Pavage avec des hexagones

L’idée est de proposer des activités où il n’y a pas de calcul de longueur, où, pour les translations, tout est en multiple entier de la longueur de référence. Certes on ne va pas faire des choses originales, mais c’est une première entrée en matière.

Dans ces figures, on se donne un curseur de longueur et un curseur d’épaisseur. On pourrait y ajouter un curseur de couleur ou d’opacité.

La figure (finale) de l’activité : https://huit.re/FriseHexa1

Étape 1 : un bloc de 3 hexagones - colorisation

Pour poursuivre, on créé une fonction Téléporter (clin d’œil à Sofus d’Alain Busser qui utilise ce vocabulaire pour sa tortue) pour rendre le code plus lisible. On lui a donné un paramètre, mais on pourrait se passer du paramètre selon la classe dans laquelle on travaille les frises, et créer une procédure Téléporter3fois et Téléporter15fois.

Étape 2 - la frise : itération sur une ligne

Un fois cette itération réalisée et bien comprise, on peut mettre le code produit dans une procédure, ce qui correspond d’une certaine façon aux macro-constructions de la géométrie dynamique, c’est-à-dire empaqueter notre intelligence et notre compétence dans un outil facilement réutilisable.

On remarque que la tortue, comme dans la première itération, est avancée de trois longueurs, prête à dessiner un nouveau motif. Il faut en tenir compte pour le retour.

Étape 3 : préparation pour le pavage par itération de plusieurs lignes

Le seul point important est dans cette étape : il est tentant de recentrer vers le point d’origine. C’est simple, cela évite de calculer, mais ce n’est pas ce qu’il faut faire - en tout cas ici - car c’est rajouter une référence absolue dans un registre où tout est relatif. Dans les cas complexes ce serait faisable, mais cela oblige à remplacer un bloc de répétition par un compteur et un indice à utiliser.

Ici, on reste dans un registre relatif, donc on revient au point de départ par ses propres moyens et on se prépare à lancer une seconde ligne, en écrivant cela :

L’intérêt du temps réel : l’exploration instantanée

On voit dans l’illustration précédente, que la souris n’a pas repris sa position initiale, donc il manque une instruction. Mais l’élève qui a déjà placé la tortue ici a toutes les chances de ne pas le voir. Il est naturel de tester l’ajout d’une ligne d’hexagone.

Tout de suite, on voit ce qu’il se passe, il n’y a pas à lancer un programme : on pose, on voit et on enlève.

... et on corrige ... mais comme tout est en temps réel, on est fortement accompagné pour corriger ! En effet, glissons un Tourner entre le Téléporter et le UneFrise4fois. Par défaut il est à 90°. Donc il faut le modifier, et on voit en temps réel l’effet de la rotation, par exemple :

L’élève est lui aussi praticien réflexif

On peut critiquer ce rapport à l’activité qui peut être perçu comme ambigu avec « la solution », car la recherche n’est pas intellectuelle, conceptuelle, on n’anticipe pas la valeur exacte de l’angle, on la trouve. Pas une connaissance, même pas une compétence, juste une rencontre entre la recherche d’une solution et la perception du résultat, aidée par la manipulation directe des paramètres.

Les nouveaux logiciels, avec leur engagement direct et leur interactivité amènent clairement d’autres pratiques scolaires, et véhiculent d’autres valeurs. Des valeurs mises en avant depuis bien longtemps par les spécialistes de la formation professionnelle, les valeurs du « Praticien Réflexif » (Donald Schön - 1984), celui qui réfléchit sur l’action pendant l’action. Depuis, Philippe Perrenoud a largement participé à la prise en compte de ce concept dans la formation des enseignants.

Sur un exemple aussi simple que celui-ci, on voit que c’est l’occasion de faire de l’élève lui aussi un praticien réflexif qui est spontanément invité à réfléchir à ce qu’il fait au moment où il le fait. Rien de bien révolutionnaire, mais une mise en pratique de ce que Vergnaud signalait déjà depuis longtemps dans ses conférences : le chercheur dégage un raisonnement séquentiel, mais l’élève dans l’action, agit et réfléchit simultanément à son action ... Les outils contemporains permettent de rencontrer cela au coeur même de l’activité mathématique et / ou informatique.

Le passage de l’exemple exploratoire à une boucle d’itération

On se propose de faire un début de pavage avec 3 frises verticales. Le fait de placer deux fois le bloc une Frise4fois favorise de fait la version de gauche ci-dessous, car après avoir fait une frise, on itère la suite. Il est plus rare, et conceptuellement plus subtil - car il faut dépersonnaliser son propre cheminement - que les élèves trouvent seuls la version de droite qui économise une ligne de code.

Une façon de faire prendre conscience des deux possibilités pourrait être de proposer aux élèves d’analyser les deux procédures et de demander laquelle des deux produit l’illustration. La seule différence entre les deux est la position de la tortue à la fin.

Avec les losanges associés aux mêmes hexagones

Nous allons nettement aller plus vite dans cette seconde partie, car elle est construite autour de la première. Partant du premier bloc de trois hexagones, placés ici seulement comme point de repère, on se propose de faire un bloc de trois fois trois losanges, chaque hexagone étant rempli de trois losanges.
Puis d’en faire une frise d’une ligne, puis un pavage.

Voir la figure en ligne : https://huit.re/FriseHexa2

Analyse de la démarche

Une activité comme celle-ci peut commencer par l’analyse des copies d’écran suivantes :

On y repère les points suivants :
• La tortue part du centre de la figure, horizontalement
• Donc, pour commencer les losanges, il faut se placer d’abord du centre de l’hexagone.
• On doit pouvoir faire un losange tout en plaçant la tortue pour qu’un simple répéter trace les trois losanges.
• Il faut qu’à la fin de la procédure LesLosanges la tortue ait une position comme celle à l’écran, qui permet de remplir les trois hexagones par un simple répéter.
• L’application de trois fois LesLosanges place la tortue dans la position horizontale : on a vu dans l’activité précédente qu’il suffit d’avancer de trois longueurs.
• Ceci étant fait, la procédure des trois hexagones ne sert plus, on peut la supprimer, elle était juste là comme cadre de réflexion.

Analyse rapide de la procédure LesLosanges

On remarque que l’on n’a pas fait la procédure TéléporteTortue comme dans l’activité précédente, cela alourdit un peu le code. Les 4 premières lignes placent la tortue au centre de l’hexagone du haut. On fait trois losanges, chaque losange étant construit par une répétition de deux moitiés de losanges. C’est à la fin d’un losange qu’on le remplit et qu’on le change de couleur.
La fin de la procédure permet de placer la tortue pour qu’une répétition remplisse les trois hexagones.

Une ligne horizontale

On aurait pu mettre une boucle et une Téléportation ... comme le ferait un élève de fin de collège.

Figure finale

La procédure est quasiment équivalente à celle de l’activité précédente, puisque c’est le même déplacement de la tortue.

Mais le résultat est plus esthétique (ici en format réduit)

Pavage octogonal simple

On se propose de réaliser une figure de ce type :

Qui dit octogone dit angle à 45° et donc une racine carrée de 2 ... donc ce n’est réalisable qu’à partir de la classe de 4°. Ce pavage est finalement très simple, c’est un octogone que l’on répète horizontalement et verticalement avec des translations bien choisies. C’est clairement déjà un objectif en soi que d’arriver à cette conclusion, car on sait combien l’extraction d’un motif élémentaire d’une figure complexe est toujours une tâche difficile, d’autant qu’il s’agit ensuite de restituer une automatisation de ce motif.

Ceci acquis, le cœur de l’activité tourne autour du calcul de ces translations (uniquement diagonale de carré ou sinus de 45°) et de leur utilisation dans un programme de construction.

La figure, pour manipulation et modification du code : https://huit.re/FriseOcto1

L’itération horizontale d’une ligne (frise)

Le code correspondant

A priori si la translation est trouvée, le reste n’est qu’une simple application du principe de frise.

Naissance du motif dès la seconde ligne

Code du pavage

Ici le choix d’un retour absolu au point de départ n’est pas du tout judicieux : le calcul de la longueur du retour relatif est simple. Le faire permet une construction relative, et donc mettre un simple répéter au lieu d’un compteur et d’une translation indicée : un code à réécrire et améliorer.

Bonus - Frise et pavage à base hexagonale plus complexe

On n’est plus dans une activité scolaire réalisable en temps limité en classe, mais ce type de figure peut être utilisé dans des contextes particuliers (toute forme de challenge, ou en formation par exemple). On se propose de réaliser une frise comme celle-ci (et son itération verticale) :

Les décalages entre les deux étapes font que le calcul de la distance de retour est délicat, d’où le choix de faire un retour absolu, vers le point d’origine, ce qui implique une itération indicée pour la partie verticale : beaucoup de raisons pour ne pas proposer cette activité en milieu scolaire, en tout cas au collège.

Les étapes 1 et 2

On voit bien la logique du positionnement de la tortue : d’abord une rotation de 30°, puis à la fin de 60° pour se retrouver dans la même position pour entrer dans la boucle.
La procédure Changement remet la tortue où on la voit sur la copie d’écran.

La procédure Changement est la même que celle ci-dessus, elle n’est pas appliquée deux fois. Pour le détail des procédures, voir dans la figure elle-même.

Manipuler la figure finale : https://huit.re/FriseHexa3

L’itération verticale

Comme indiqué ci-dessus, ayant fait un retour absolu, il faut adapter les procédures, et par exemple indicer la procédure Changement en fonction de la ligne, ce qui donne ici :

Que l’on retrouve dans la procédure finale :

L’influence de l’épaisseur du trait

On obtient des pavages de même structure bien entendu, mais finalement au rendu assez différent avec un hexagone central éventuellement plein selon la taille du contour et l’épaisseur du trait.

Haut de la barre sur les autres activités (pour onglet suivant : pavages circulaires)

Pavages circulaires

Les pavages sont un domaine fabuleux. Là encore, il faudra attendre un bloc particulier pour manipuler des pavages dynamiques. Dans cet onglet, nous allons faire quelque chose d’un peu à côté, en tout cas quelque chose de moins pratiqué car plus centré, justement sur la géométrie relative, alors que les pavages usuels du plan, construits sur les groupes d’isométries, sont une problématique de géométrie placée dans un repère absolu (pour faire rapide).

Cet onglet s’inspire de figures publiées dans le numéro 12 de la revue bilingue « Topologie Structurale » éditée (au moins un temps) par l’université du Québec, le numéro 12 datant de 1982. De nombreuses autres parties de la revue seraient aussi à explorer avec une tortue dynamique ... ce sera pour une autre fois ou par quelqu’un d’autre (les polygones Polytaxiques et des variantes superbes produites par le programme Alhambra).

Nous ne proposerons que deux pavages, juste pour donner envie de fouiller dans la littérature, hors des sentiers battus ... pour croiser quelques pépites. Si cet onglet n’est pas rédigé pour une utilisation scolaire, les premières explorations sont largement utilisables en classe.

Pavage étoilé par le motif « bateau »

Le motif n’utilise de des grandeurs entières, des multiples de la longueur donnés par un curseur. On voit tout de suite que le motif pave le plan, par des translations. Cela pourrait être une activité, mais on se propose de faire autre chose : le bateau est construit sur la base d’un angle de 45°. On peut donc en placer 8 autour du point de construction.

Pour une itération, on ajoute classiquement maintenant une opacité et un changement de couleur.

Manipuler la figure (ajout d’un curseur) : https://huit.re/MotifBateau1

Rotation du motif

L’objectif de cette présentation est de proposer plusieurs explorations - utilisables en classe - pour arriver à une rotation d’une frise qui pave le plan, par exemple dans la forme d’une étoile à 8 branches, mais aussi autrement, selon la forme des frises partielles.

Une ligne vers le haut

Cette séquence montre que le motif pave le plan.
On place désormais les lignes du lever au poser de stylo dans une procédure DécaleHaut

Un autre type de pavage - Utilisation de DecaleHaut pour revenir

Itération de la frise montante

La procédure DécaleBas n’est pas décrite, c’est une variante de DécaleHaut.
On aurait même pu ne pas l’utiliser.

Frise descendante

Pour le pavage circulaire, on ajoute un curseur n pour le nombre de motifs par ligne. Finalement on n’utilisera pas le DecaleBas, seulement la procédure DecaleHaut.

Il y a a priori deux approches, celle - plus simple - d’un pavage en étoile, et celle, plus technique, d’un pavage en octogone.

Branche de l’étoile octogonale

On ne fait que mettre ce qui précède dans une boucle. La seule chose un peu difficile à faire passer en classe est la nécessité de replacer la tortue - et dans la bonne direction - au bon endroit, au début de la prochaine ligne montante du motif.

Pavage en étoile

Cette fois, il faut faire revenir la tortue au point A, en suivant les motifs. Il suffit que la tortue soit cette fois dans une autre direction, pour qu’un simple répète permette de finaliser le pavage étoilé. Le retour se fait avec DecaleHaut.

On est prêt à répéter le motif de la branche d’étoile.

Le code finalement très compact, même s’il n’est pas complètement fait par des élèves (on peut donner la partie Branche et demander à chercher le retour en A par exemple) peut servir à des calculs algébriques : l’idée est d’utiliser la dévolution de la figure pour faire un travail algébrique : évaluer la taille de la trace de la tortue (qui compte tous les mouvements) et voir qu’on a une fonction du second degré en n. C’est l’occasion de montrer en acte une fonction du second degré. Bien entendu, on n’est pas dans une démarche d’évaluation de complexité d’algorithme, mais dans une sensibilité à ce type de question. On peut vérifier en affichant la longueur de la trace (ne pas oublier le paramétrage des couleurs).

La figure « Pavage en étoile » : https://huit.re/BateauPavageEtoile

Variantes sur les paramètres

Avant de lancer un paramètre de curseur, on peut imaginer un travail numérique. Or quand on change les paramètres (sauf le premier, qui concerne la rotation), on les change un par un et donc on passe par des situations non voulues parfois surprenantes :

Version avec des paramètres arithmétiques modifiables : https://huit.re/MotifBateauVariante

Pavage en octogone

Nous continuons sur ce motif, mais a priori hors d’un contexte scolaire. L’idée est de ne pas avoir une branche d’étoile mais un côté d’octogone. Il faut remplacer le répéter par un compteur et indicer la longueur de la frise pour chaque ligne. Le code reste très simple, mais assez éloigné des programmes actuels (qui peuvent évoluer).

Le code final est le même que ci-dessus, le même retour vers le point A et la répétition de la branche de l’octogone.

La figure « Pavage en octogone » : https://huit.re/BateauPavageOcto

Pavage Pentagonaux

On ne va pas reprendre ici ces fameux pavages pentagonaux apériodiques qui ont défrayé les chroniques mathématiques ces derniers mois - ce serait un beau projet - mais un simple motif probablement connu depuis longtemps. L’intérêt est de produire un pavage, là encore, en rotation, et plus précisément par couches successives.

Le motif de base - Niveau 0

Il a tous ses côtés de même longueur, et avec un angle de 36°, il remplit un décagone régulier.

On fait le choix que la tortue ne revienne pas dans la même position de départ, pour avoir une rotation de 36° déjà enclenchée, avec l’idée d’économiser un pas de programme. Il n’est pas certain que ce soit bien judicieux, même si on arrive toujours à produire un code final assez compact.

La couronne suivante - Niveau 1

On commence par aller sur le contour du décagone, le long d’un côté, au début. Puis on place trois motifs et on replace la tortue à la même position sur le côté suivant pour une itération.

La figure en ligne pour l’explorer : https://huit.re/PavagePenta_ex1

Il suffit d’itérer 10 fois cette partie pour remplir une première couronne du décagone. Pour mieux voir le code et préparer la suite, on transforme les différentes étapes en fonction (nom évident dans la suite) ce qui donne un code plus clair :

On notera l’ajout d’un tourner 36 pour préparer l’étape suivante.

Manipuler la figure en ligne : https://huit.re/PavagePentaNiv2

Le niveau 2

Il faut d’abord aller sur la couronne extérieure, comme on arrive au milieu de deux arêtes alignées la procédure est un peu différente :

Au niveau 2, le décagone extérieur a une arête de deux pas de longueur, donc on va devoir adapter la procédure, mais cela donne une idée pour le cas général : au niveau n, on va devoir placer 2n+1 motifs. On peut placer 2 motifs, puis reculer et ensuite les 3 motifs comme au niveau 1 :

La tortue est bien placée pour faire le tour de la couronne :

La figure en ligne : https://huit.re/PavagePentaNiv3

Préparation pour le passage au niveau général n

On voit bien le procédé : on a d’abord mis 3 motifs sur un côté extérieur, puis 5=2+3, le prochain sera 7=2+2+3. Mais justement, ce passage à 2+2 n’est pas si simple. Et puis comment emboiter les procédures, qui sont itératives ? C’est comme souvent en mathématiques, une inversion des signes « somme ». Cela paraît clair après coup, mais je n’ai pas eu l’idée, elle m’a été soufflée par Patrice Debrabant (fondateur du site Carmetal.org, auteur de plusieurs articles dans MathémaTICE, en général avec Alain Busser, dont leur dernier, encore sur des tortues - décidément - ou encore ce sublime Fleurs de tractoires), sollicité pour l’occasion. Patrice m’explique que je construis les polygones au fur et à mesure par des rotations d’arêtes au niveau k, et qu’il vaut mieux construire les couronnes au niveau k, et les sommer pour faire les différents décagones intérieurs : inverser les signes « somme », c’est inverse les « répéter ».

Du coup, le code est un peu à reprendre, il vaut mieux transformer le 2+3 en 2+2+1 pour itérer sur le 2. En travaillant sur le niveau 3, on s’aperçoit assez rapidement qu’on peut le compacter simplement en changeant la procédure du passage au ContourSuivant, en particulier lui ajouter un segment pour compenser l’appel itératif de Recule1Arete. Il devient alors :

Et surtout il semble prêt pour l’itération :

Tester le niveau 3 avec ce nouveau programme : https://huit.re/PavagePentaNiv3compact

Réalisation effective de l’itération

Donc on inverse l’itération des polygones et leur construction par rotation de la dernière couche, en la construction de la couronne au niveau k et leurs itérations sur k. Avant de réaliser la figure générale, c’est amusant de visualiser un niveau ... et même d’y mettre un curseur :

La figure des couronnes : https://huit.re/PavagePentaCouronne

Le rôle de n ci-dessus est celui de l’itération. La figure finale est donc la suivante, avec un code extraordinairement compact par rapport aux versions d’exploration :

La figure générale finale : https://huit.re/PavagePentaGene

Bilan de cet onglet

Comme celui sur les aspects géométriques en début de cette même barre, cet onglet a été rédigé comme une narration de recherche. Selon les intérêts de chacun, on peut tirer de ces deux figures des activités, aussi bien pour le collège que des activités de formation des enseignants. On y a vu que l’inversion du regard sur une des figures permet une simplification surprenante du code.

Je me permets de mentionner à nouveau la source initiale de ces figures, la revue Topologie Structurale (n°12), et toutes les autres propositions de cette revue qui ne seront pas abordées ici.

Haut de la barre sur les autres activités (Les kirigamis)

Kirigamis

Simulations des Kirigamis de l’atelier IREM de La Réunion

Lors de la fête de la science - depuis 20011 - et la semaine des mathématiques, l’IREM de La Réunion propose un atelier Kirigami qui a beaucoup de succès. Depuis longtemps on me demande de proposer des simulations en géométrie dynamique de certaines fiches de Kirigami. L’arrivée de la tortue 3D de DGPad et la simplicité de sa mise en ouvre comme on l’a vu sur les patrons du cube m’a motivé à commencer quelques premières simulations.

C’est l’occasion de partager des figures et cette autre activité IREM (avec celle de Curvica nouvel atelier depuis 2014 - avec des pièces en bois depuis cet article) et, sans entrer dans le détail des constructions, de commenter les points techniques intéressants à préciser que l’on rencontre pendant ces constructions.

Cet onglet invite les collègues qui ne la connaissent pas, à découvrir la pratique simple des kirigamis, et à poursuivre et améliorer des simulations de ce type.

L’introduction par un escalier à 6 marches

Sur le stand de l’IREM, les élèves commencent toujours par un escalier très simple pour évaluer la capacité de pliage en particulier, avant de proposer d’autres fiches. Cet escalier (fiche 5) est proposé y compris au cycle 3 de l’école primaire - les élèves en général ne savent pas utiliser un cutter vu que ce n’est pas un outil autorisé à l’école.

Pour des élèves plus grands, l’escalier est vite fait. En général sur les 3 jours, il se fait plus de 80 exemplaires de cet escalier. En fait les élèves sont contents de faire quelque chose sur le stand qu’ils peuvent emporter chez eux, cela peut expliquer le succès.

La version Tortue

On choisit de ne rien construire si l’angle est nul, d’où le test après l’initialisation. Bien entendu la version simulée autorise toute une paramétrisation, tout en restant structurellement fixée.

L’important pour cette première construction est de comprendre qu’il faut conserver un seul polygone pour pouvoir le colorier.

Commentaire sur le code

Ces figures ont été écrites assez tôt après la sortie de la tortue de DGPad, et un peu vite, sans trop chercher à optimiser le code. Plusieurs termes pourraient être simplifiés. Par exemple il y a 5 tests de ce type.

On pourrait définir un coefficient k qui vaut 1 si n est pair et - 1 si n est impair et supprimer ces 5 tests :

Code complet

Le code est placé dans le point bleu


La figure Kirigami 5 : https://huit.re/kirigami5

La fiche 1 des kirigamis de l’IREM

Ce kirigami est moins simple à plier car les bandes sont grandes, il faut donc être plus précis, à la fois dans la découpe et surtout dans le pliage pour que cela reste régulier.

Une variante réalisée lors de la fête de la Science. On voit que la découpe n’est pas simple.

La version Tortue DGPad

Par rapport à la version papier, on s’est autorisé un écart entre les bandes, afin de rendre la construction plus visible dans certains points de vue. On a ajouté une opacité pour la même raison.
Le nombre de languettes est 2n+1. Il y a une petite incohérence, car la taille de la feuille ne suit pas le nombre de languettes, ni leurs tailles. Ce serait modifiable dans la partie initialisation qui traite du pli de la feuille de papier.

Pour des raisons d’opacité - d’où ce nouveau paramètre - la vue simulée et celle en papier ne sont pas identiques ! On remarquera l’ajout d’un pli, que l’on n’a pas mis dans la construction précédente - qui était la première réalisée, pour mieux voir la construction.

Le code de la première partie

En fait, les deux parties sont quasiment identiques, on aurait pu n’en faire qu’une en la paramétrant.


La figure en ligne : https://huit.re/kirigami1

La fiche 4 des kirigamis de l’IREM

Le kirigami 4 est déjà plus difficile techniquement, car il faut de la précision dans la découpe et dans les pliages. Il n’est pas souvent choisi par les élèves qui le trouvent un peu dissymétrique.

Réalisation des kirigamis 4 et 6 (le préféré des lycéens) au lycée Sarda Garriga de Saint André (semaine des maths 2015)

La version Tortue DGPad

Clairement, la tortue ne gérant pas l’opacité de la trace individuellement- sur une avancée par exemple - les résultats sont assez mitigés, compte tenu du code à produire. Malgré sa grande facilité d’utilisation pour l’espace, la tortue n’est peut-être pas l’outil idéal pour cela.

Le code

Une première partie (dite phase 1 dans le détail du code) produit la partie montante horizontale : trait vertical, languette horizontale, trait vertical etc ...

La procédure principale (dite Fiche4) fait la partie descendante depuis le haut. Des procédures annexes font les traits de plis sans lesquels ont ne voit rien.

C’est techniquement plus long que les deux fiches précédentes.

Détail du code

Comme dans les autres kirigamis, une initialisation trace le contexte : la feuille de papier, son pli etc ..

Le premier extrait concerne les parties annexes utiles à ce kirigami

La partie suivante aurait gagnée à être algébrisée elle aussi :

La procédure principale :


La figure du kirigami 4 : https://huit.re/kirigami4

Le quadruple escalier

C’est le kirigami préféré des lycéens, qui souvent le réalisent très bien, en parfois seulement 15 min (illustration précédente). Vu de près, il ressemble à ceci :

Il a été plusieurs fois réalisé aussi par des collégiens, y compris de classes de 5°, par des élèves bien entendu particulièrement habiles de leurs mains et ayant une bonne vison de l’espace.

C’est un beau challenge pour la tortue ... que je nai pas encore pris le temps de relever ... d’autres le feront probablement avant moi ...

Perspectives

1. Utilisation pédagogique des kirigamis papier

Sur le stand, les enseignants prennent parfois des fiches pour les travailler ensuite en classe, car c’est une approche ludique de la vision 3D qui parle aux élèves (il y en a d’autres, les polydrons ... etc.). Au départ il n’est pas nécessaire de se donner comme objectif de faire préparer de nouveaux modèles, c’est trop long, les élèves ont des idées de réalisation bien trop complexes : déjà proposer aux élèves d’anticiper ce que va faire une fiche de travail (simple) avant que l’on entame la découpe ou le pliage est une activité intéressante. Par exemple, repérer les grands pointillés pour voir les plis principaux qui structurent la forme, est un objectif assez réaliste d’anticipation au collège. Surtout si c’est perçu comme une activité ludique.

2. Sources utilisées : Les kirigamis présentés ici sont de Ramin Razani (il s’agit des plus simples bien entendu, ci dessous d’autres productions de l’auteur).

En téléchargement, en fin d’article, quelques fiches PDF de l’IREM. On repèrera vite les plis « montagne » et les plis « vallée ».

Autre source : le site de Paul Jackson, mais aussi de nombreux ouvrages.

Masahiro Chatani (nombreux ouvrages, elle aussi)

Et avec la tortue ?

C’est clair que les kirigamis, c’est fait pour être fait avec du papier !

Mais on peut jouer à en simuler quelques uns. Le lecteur aura compris que les réalisations de cet onglet sont une première approche, pour motiver quelques collègues dans cette voie. On peut aller bien plus loin, en particulier en structurant un peu plus la démarche.

Merci de partager vos productions DGPad par MathémaTICE ou en écrivant au compte twitter @Curvica974 qui, malgré son nom, a beaucoup débordé sur la tortue de DGPad depuis le mois de mai 2016 ;-)

Vous cherchez une idée ? Par exemple simuler ce twisting pop up. Fiche de réalisation dans le zip des kirigamis à télécharger. Selon les années, quelques élèves l’ont fait sur le stand de l’IREM, il faut prévoir des impressions sur du papier un peu fort, genre 110 (débutant) à 160 g (plus solide mais plus difficile à plier, utiliser alors une pointe non coupante comme une pointe de stylo sans encre).

Haut de la barre sur les autres activités (onglet suivant : courbes de poursuite)

Courbe de poursuite

Cet onglet est surtout rédigé pour traiter de l’utilisation des noeuds (sommets, points) de la trace de la tortue au cours de sa construction. Il s’agit d’une gestion de l’auto-référence de la trace. Dans une première partie on regarde des courbes de poursuites non classiques avant de traiter dans une seconde partie les courbes de poursuites géométriques classiques.

Courbes de poursuites pilotées par les sommets initiaux de la figure

Dans cette première option, les points ne sont pas attirés par les points de l’étape précédente, mais ils sont toujours attirés par les points originels, les sommets du polygone, comme des phares ...

Les courbes obtenues sont bien différentes de ce que l’on a l’habitude de voir. Le code est trivial à écrire. Voici un exemple sur un carré construit par un côté [AB] :

La figure (poursuite carrée par les sommets) : https://huit.re/PoursuiteCarreSommet

Version pentagonale

Dans cette figure, le pentagone est construit aussi par la tortue : les points C, D et E sont placés par la tortue au sommet du pentagone. Pour cela, la tortue ne créant pas de points, les points sont placés au hasard sur la page, et ils sont affectés par la tortue. Par principe du logiciel, même défini par la tortue, ce positionnement reste dynamique - puisque c’est le cas de la tortue : si on déplace A ou B, la figure se met à jour. Comme on l’a déjà signalé dans le dernier onglet de la première barre sur les quadrilatères, les points ainsi placés restent des points de base, ce ne sont pas des points construits.

La figure (poursuite pentagonale par les sommets) : https://huit.re/PoursuitePentaSommet

Courbe de poursuite classique

Désormais chaque point P(n) suit son point antérieur P(n-1), pour chaque sommet P d’un polygone régulier. Il faut donc une initialisation pour qu’il y ait un point antérieur. L’initialisation est le parcours des sommets du polygone bien entendu (dans le cas du pentagone, on place comme dans l’étape 1, les points sur le pentagone de côté [AB]).

En géométrie repérée, on travaille sur les coordonnées des points, démarche trés classique. Dans une géométrie avec repère relatif, on pointe simplement sur le point antérieur, et l’avance de la tortue est multipliée par le coefficient : il n’y a pas de géométrie analytique.

L’initialisation pour le carré

La procédure d’itération

La procédure qui suit est mathématiquement banale. Il faut néanmoins voir qu’informatiquement la trace se construit au fur et mesure, sur les items précédents, et ceci dynamiquement, en fonction des points que l’on déplace et du curseur n. Ce n’est pas banal, en particulier pour construire la trace à l’ouverture d’un tel fichier.

Illustration dans le cas du carré

Illustration dans le cas du pentagone

La figure « Courbe de poursuite à la tortue » pour le carré : https://huit.re/PoursuiteCarreStandard
La figure pour le pentagone : https://huit.re/PoursuitePentaStandard

Haut de la barre sur les autres activités (onglet suivant : exercices pré-construits)

Les exercices

Simulation d’un mode exercice

Il n’y a pas - pas encore ? - de mode exercice dans DGPad, mais on peut proposer facilement aux élèves des exercices de construction à la tortue, où ce qui est à réaliser est déjà à l’écran, éventuellement même dynamique, et qu’il s’agit de reproduire sur la figure elle-même.

Bien entendu, il ne faut pas que le code de la figure puisse être accessible. Voici comment on peut opérer.

Étape 1 : Faire l’exercice depuis un autre point

Il suffit de cacher le premier trait de la trace de la tortue. Voici un exemple : le code est dans le point P1, la figure utilise les points A et B :

Étape 2 : rendre le point P1 totalement inaccessible

C’est le seul point important de cette démarche : pour qu’on ne puisse pas voir le code, il faut que le point P1 ne puisse pas être repéré comme existant : le cacher ne suffit pas. Il y a deux façons de faire :

Version 1 : placer le point toujours hors de l’écran

Pour cela, en cliquant dans le comportement « expression-calculatrice », on peut rentrer une coordonnée toujours hors écran comme par exemple :[windowcx()+windoww()*5 , 0], c’est-à-dire, depuis le centre de l’écran on met 5 fois la demi taille de l’écran horizontalement. Imparable !
Voici ce que cela donne, directement dans le navigateur :

Pour le rendre visible, il faudra modifier ses coordonnées dans le fichier, comme dans la version 2 suivante :

Version 2 : le rendre « totalement caché »

En effet, il existe dans DGPad un mode totalement caché, qu’il est impossible, depuis le logiciel, de modifier. Pour que ce soit impossible à modifier, il n’y a aucune commande disponible pour cela, ni pour rendre un point totalement caché. Cela se fait en dur, sur le code du fichier.

Pour cela, enregistrer le fichier, en mode texte .txt (au lieu de .dgp). C’est la même chose, les fichiers de DGPad sont des fichiers texte, mais ils sont plus faciles à modifier.

Avec un lecteur de fichier texte élémentaire (notePad par exemple, un logiciel qui ne modifie pas à notre place les fins de ligne en particulier) - modifier le style du point P1, dans sa ligne STLyle.

Pour un point caché, le paramètre h (pour hide) est présent, et a pour valeur 1. le paramètre h est à 2 pour un point complètement caché. On ne peut mettre cette valeur qu’à la main.

Ci dessous, à gauche, le fichier original (pas de paramètre h, car le point n’est pas caché)l, à droite le fichier modifié, en ligne 16.

Ensuite enregistrer le fichier et modifier ensuite l’extension .dgp.

L’exemple 1 en mode exercice : https://huit.re/ModeExercice_Ex1

On peut ainsi, très rapidement, transformer tout fichier de cet article - les plus simples et qui s’y prêtent - en exercice. Pour un exercice plus statique, ne pas oublier de réinitialiser les angles, sinon l’angle entre P1 et le point A interviendrait.

Voici un autre exemple :

L’exemple 2 en mode exercice, pour tester : https://huit.re/ModeExercice_Ex2

Haut de la barre sur les autres activités (Aspect algébrique)

Aspect algébrique

Illustration d’utilisations algébriques de la tortue

On avait déjà souligné dans l’article précédent sur le Blockly de DGPad qu’il y avait, de par les outils d’écriture mathématique, un champ d’investigation algébrique important à explorer avec la programmation visuelle et qu’en particulier, l’interface de Blockly, pour cela plus claire, semblait être préférable à celle de Scratch ou Snap par exemple.

Je n’ai pas pris le temps d’explorer ce domaine, mais le groupe « maths et numérique » de l’IREM de Toulouse, a accepté que je présente quelques unes des figures qu’ils réalisent autour d’une utilisation de l’algèbre par les élèves.

Une autre raison de l’intérêt de présenter ces figures est qu’elles développent une tortue qui pond de gros œufs carrés, que c’est très joli, et donc - c’est justement fait pour cela - rajoute à la dévolution de ces exercices.

Le principe des figures

La figure dispose d’un curseur qui permet de faire varier une situation algébrique. Une expression est pré-écrite en Blockly, éventuellement avec quelques instructions.

La consigne est que les élèves s’emparent de cette expression et remplissent - algébriquement, donc en fonction de la variable n qui correspond au curseur - l’expression associée à la situation.

Il n’y a pas de mode exercice, donc il n’y a pas de test de validation de l’expression. A priori, pour le moment, c’est l’élève qui auto-valide son résultat. Et ce n’est peut-être pas plus mal.

Toutefois pour une intégration dans des exerciseurs par exemple, il serait intéressant à développer. On devrait pouvoir réaliser un test de validation en créant un tableau de valeurs attendues (sur l’étendue du curseur) et un autre avec les valeurs produites par l’élève et comparer les deux tableaux.

Le contour d’un carré

C’est l’exemple très classique, présent dans tous les manuels de 5° ou 4°, étudié didactiquement depuis fort longtemps, dans le cadre de l’évolution du concept de preuve par Nicolas Balacheff. L’intérêt de cette figure est dans son retour algébrique sous forme de programmation visuelle.

Quand il ouvre le comportement Blockly de l’expression avec des points d’interrogation, l’élève tombe sur un exemple de calcul intermédiaire et un retour à compléter.

Tester la figure en ligne

du site de l’IREM de Toulouse

D’autres exemples du même type

Cette fois il n’y a pas de lien ni de détails : uniquement une image pour les suggérer. Car elles seront présentées entre autres (par ce même groupe de Toulouse) lors des journées APMEP de Lyon. Un article MathemaTICE à ce sujet viendra ultérieurement.

Les participants seront invités à construire ce type de figures qui illustrent la somme des premiers entiers consécutifs, la somme des nombres impairs consécutifs etc.

Le réglage de la forme des points

C’est un attribut (et c’est un des rares) qui se règle par le panneau de configuration : on ouvre le panneau de configuration, on sélectionne la trace (donc ici les points, a priori ce sont des cercles à l’origine), puis on leur donne la forme carrée.

Bilan de cet onglet

Il s’agissait de sensibiliser à l’idée que l’on peut aussi utiliser Blockly pour des réponses à des questionnement algébriques, plus particulièrement quand ils peuvent être illustrés géométriquement.

C’est aussi l’occasion de montrer cette technique particulière de faire pondre des oeufs carrés à la tortue de DGPad.

Haut de la barre pour revenir sur les activités précédentes

Intro | Espace | Polyedres | Autres activités

5. Récursivité avec la tortue

La récursivité est un domaine bien réinvesti par la géométrie dynamique en général. Plus particulièrement quand elle est « très dynamique ». On a déjà vu, dans l’article sur l’utilisation du Blockly de DGPad qu’elle permettait beaucoup de nouveautés pour DGPad comme l’auto-référence des points, la référence croisée sur les points, des méthodes utiles non pas pour leur technicité, mais pour l’ouverture du micro-monde qu’elles produisent : on peut ainsi utiliser l’histoire de la manipulation de la figure par un élève, et mettre du temps là où a priori il n’y en a pas - et c’est donc du temps didactique. Cela a été utilisé pour extraire le local - position d’un extremum - dans une variation globale - sur un intervalle - par exemple.

Avec la tortue, nous n’allons pas reprendre ces thèmes, juste voir que la récursivité fonctionne très bien, et « très loin » avec les traces de la tortue. Les figures abordées sont des classiques aussi bien de l’informatique que de la tortue numérique, depuis bien longtemps. Les figures ont d’abord été faites pour tester la résistance - assez extraordinaire - de la tortue de DGPad. On suppose a priori les thèmes abordés connus, il n’y a pas de description particulière.

La fractale de Pythagore est un peu plus détaillée, de par l’intérêt scolaire qu’elle peut avoir, mais aussi car on y utilise la position de la tortue pour créer des variables locales dans la procédure récursive.

Césaro

Courbe de Césaro et utilisations

La géométrie à repère relatif n’a pas attendu la géométrie dynamique pour mettre en œuvre ce type de courbe ... qui se faisait déjà « sur plotter » aux temps préhistorique de la GD. Plus récemment, on trouve de très belles pages comme celle de Julien Pavageau sur le site de son collège avec GéoTortue. Voir cette autre fiche GéoTortue sur la page des activités (flash requis, mais ce serait dommage de ne pas aller voir) du collège de l’un des participants au projet de GéoTortue. Ci dessous un extrait de la page faite sur ce thème par Julien Pavageau.

La version de base

Nous reprenons donc le code - qui est nécessairement le même - dans un cadre un peu plus dynamique : on peut modifier l’angle et la profondeur en temps réel.

La figure en ligne : https://huit.re/CesaroTortue

Version avec affichage séquentiel de la trajectoire

La tortue DGPad ne construit pas sa trace séquentiellement, comme le fait GéoTortue ou Sofus. Mais justement, la construction étant en temps réel, on peut modifier la procédure pour que la trace n’existe que jusqu’à la valeur d’un curseur donné.

On utilise la même procédure, simplement on ajoute un compteur et on affiche une étape si la longueur de la trace - le compteur - est plus petite que le curseur.

Le curseur du compteur est grand pour arriver à avoir une avance pas à pas, mais ce n’est possible que jusqu’à 512 pas. Au-delà, on avance souvent 3 par 3 car on n’arrive pas à augmenter le curseur de 1 unité seulement.

La figure : https://huit.re/CesaroCompteur

Aire Min dans un carré

En regroupant 4 courbes de Césaro - de même angle - on obtient une partie du carré dont l’aire va de l’aire du carré à ... l’aire du carré, en passant par un minimum.

Question pour la formation initiale : pour quelle valeur de l’angle, ce minimum (l’angle réalisant le minimum) dépend-il de n ?

La figure : https://huit.re/CesaroTortueCarre

Version triangulaire : https://huit.re/CesaroTRequi

Même question que le carré avec un pentagone :

Version pentagonale : https://huit.re/CesaroPenta

Jouer avec Cesaro

On peut explorer de nouvelles variantes comme celle-ci :

La figure : https://huit.re/JouerAvecCesaro

Haut de la barre sur la récursivité (onglet suivant : Hilbert 2D)

Hilbert 2D

Courbe de Hilbert 2D

Il y a deux approches possibles pour ce type de courbes : celle qui a pour objectif de tracer un dessin, pour une illustration de la courbe finale et celle où on veut voir la courbe se tracer pas à pas, comme celle de Césaro ci-dessus.

Or, contrairement à la courbe de Césaro dont la programmation récursive suit la description séquentielle, les courbes de Hilbert et Peano n’ont pas cette simplicité : pour certaines courbes, on peut utiliser une définition récursive unique mais qui construit, de fait, la figure finale par ilots non connexes. C’est le cas par exemple quand il y a des rotations et des changements d’orientation dans la description même de la démarche. Rendre alors la construction séquentielle sur la trace de la construction est nettement moins élémentaire. Le défi est d’arriver à le faire en une seule procédure.

Le code utilisé, ici, pour cette courbe de Hilbert 2D, ne relève pas de ce défi : il contient 4 procédures auto-imbriquées, prises dans les (superbes) archives de XLogo.

On doit pouvoir au moins diviser par 2 le nombre de procédures. En effet, cela a été fait pour la version 3D (prochain onglet).

Un peu paradoxalement, c’est avec cette figure que l’on a produit la plus grande trace de la tortue DGPad, plus de 260 000 objets comme on l’a déjà signalé dans l’introduction (faire n=9 ci-dessous ; cela met un peu de temps quand même à se construire).

La figure en ligne : https://huit.re/Hibert2D_tortue

Haut de la barre sur la récursivité (onglet suivant : courbe Hilbert 3D)

Hilbert 3D

La courbe 3D de Hilbert

La question de la construction séquentielle de la figure s’est d’abord posée ici : un premier algorithme simple (fait il y a quelques années pour tester les scripts de CaRMetal) construisait des ilots séparés de la solution qui se reliaient peu à peu. Il s’agit cette fois-ci de faire mieux, d’autant que l’on veut parcourir la trace de la tortue.

C’est Patrice Debrabant qui a relevé ce défi. Il avait déjà fait une première figure directement avec les expressions - ie sans programmation visuelle- dont le code est disponible ci-dessous. Il y a de nombreux tests, justement pour afficher la construction séquentiellement jusqu’à la valeur du curseur. Déjà cette première version, pour la courbe 3D de Hilbert n’utilise que 2 procédures, pour les deux principales orientations.

Code initial d’une version Expression de DGPad

cpt est le compteur de la longueur de la trace en cours de construction.
m est le curseur : on voit que l’on n’ajoute un élément à la liste que si cpt est inférieur à m.

  1. var pH=[];
  2. var cpt=0;
  3. var fHilbert=function(n,Cx,Cy,Cz,ux,uy,uz,vx,vy,vz,wx,wy,wz){
  4.         ux/=2;uy/=2;uz/=2;
  5.         vx/=2;vy/=2;vz/=2;
  6.         wx/=2;wy/=2;wz/=2;
  7.         if (n>0) {
  8.                 fHilbert2(n-1,Cx-ux-vx-wx,Cy-uy-vy-wy,Cz-uz-vz-wz,-vx,-vy,-vz,ux,uy,uz,wx,wy,wz);
  9.                 fHilbert(n-1,Cx-ux+vx-wx,Cy-uy+vy-wy,Cz-uz+vz-wz,wx,wy,wz,ux,uy,uz,vx,vy,vz);
  10.                 fHilbert(n-1,Cx-ux+vx+wx,Cy-uy+vy+wy,Cz-uz+vz+wz,wx,wy,wz,ux,uy,uz,vx,vy,vz);
  11.                 fHilbert2(n-1,Cx-ux-vx+wx,Cy-uy-vy+wy,Cz-uz-vz+wz,-ux,-uy,-uz,-wx,-wy,-wz,-vx,-vy,-vz);
  12.                 fHilbert2(n-1,Cx+ux-vx+wx,Cy+uy-vy+wy,Cz+uz-vz+wz,-ux,-uy,-uz,-wx,-wy,-wz,-vx,-vy,-vz);
  13.                 fHilbert(n-1,Cx+ux+vx+wx,Cy+uy+vy+wy,Cz+uz+vz+wz,-wx,-wy,-wz,-ux,-uy,-uz,vx,vy,vz);
  14.                 fHilbert(n-1,Cx+ux+vx-wx,Cy+uy+vy-wy,Cz+uz+vz-wz,-wx,-wy,-wz,-ux,-uy,-uz,vx,vy,vz);
  15.                 fHilbert2(n-1,Cx+ux-vx-wx,Cy+uy-vy-wy,Cz+uz-vz-wz,vx,vy,vz,-ux,-uy,-uz,wx,wy,wz);
  16.         }
  17.         else {
  18.                 if (cpt<m) {
  19.                         pH.push([Cx-ux-vx-wx,Cy-uy-vy-wy,Cz-uz-vz-wz]);cpt++;
  20.                 }
  21.                 if (cpt<m) {
  22.                         pH.push([Cx-ux+vx-wx,Cy-uy+vy-wy,Cz-uz+vz-wz]);cpt++;
  23.                 }
  24.                 if (cpt<m) {
  25.                         pH.push([Cx-ux+vx+wx,Cy-uy+vy+wy,Cz-uz+vz+wz]);cpt++;
  26.                 }
  27.                 if (cpt<m) {
  28.                         pH.push([Cx-ux-vx+wx,Cy-uy-vy+wy,Cz-uz-vz+wz]);cpt++;
  29.                 }
  30.                 if (cpt<m) {
  31.                         pH.push([Cx+ux-vx+wx,Cy+uy-vy+wy,Cz+uz-vz+wz]);cpt++;
  32.                 }
  33.                 if (cpt<m) {
  34.                         pH.push([Cx+ux+vx+wx,Cy+uy+vy+wy,Cz+uz+vz+wz]);cpt++;
  35.                 }
  36.                 if (cpt<m) {
  37.                         pH.push([Cx+ux+vx-wx,Cy+uy+vy-wy,Cz+uz+vz-wz]);cpt++;
  38.                 }
  39.                 if (cpt<m) {
  40.                         pH.push([Cx+ux-vx-wx,Cy+uy-vy-wy,Cz+uz-vz-wz]);cpt++;
  41.                 }
  42.         }
  43. };
  44. var fHilbert2=function(n,Cx,Cy,Cz,ux,uy,uz,vx,vy,vz,wx,wy,wz){
  45.         ux/=2;uy/=2;uz/=2;
  46.         vx/=2;vy/=2;vz/=2;
  47.         wx/=2;wy/=2;wz/=2;
  48.         if (n>0) {
  49.                 fHilbert(n-1,Cx+ux-vx-wx,Cy+uy-vy-wy,Cz+uz-vz-wz,vx,vy,vz,-ux,-uy,-uz,wx,wy,wz);
  50.                 fHilbert2(n-1,Cx+ux+vx-wx,Cy+uy+vy-wy,Cz+uz+vz-wz,-wx,-wy,-wz,-ux,-uy,-uz,vx,vy,vz);
  51.                 fHilbert2(n-1,Cx+ux+vx+wx,Cy+uy+vy+wy,Cz+uz+vz+wz,-wx,-wy,-wz,-ux,-uy,-uz,vx,vy,vz);
  52.                 fHilbert(n-1,Cx+ux-vx+wx,Cy+uy-vy+wy,Cz+uz-vz+wz,-ux,-uy,-uz,-wx,-wy,-wz,-vx,-vy,-vz);
  53.                 fHilbert(n-1,Cx-ux-vx+wx,Cy-uy-vy+wy,Cz-uz-vz+wz,-ux,-uy,-uz,-wx,-wy,-wz,-vx,-vy,-vz);
  54.                 fHilbert2(n-1,Cx-ux+vx+wx,Cy-uy+vy+wy,Cz-uz+vz+wz,wx,wy,wz,ux,uy,uz,vx,vy,vz);
  55.                 fHilbert2(n-1,Cx-ux+vx-wx,Cy-uy+vy-wy,Cz-uz+vz-wz,wx,wy,wz,ux,uy,uz,vx,vy,vz);
  56.                 fHilbert(n-1,Cx-ux-vx-wx,Cy-uy-vy-wy,Cz-uz-vz-wz,-vx,-vy,-vz,ux,uy,uz,wx,wy,wz);
  57.         }
  58.         else {
  59.                 if (cpt<m) {
  60.                         pH.push([Cx+ux-vx-wx,Cy+uy-vy-wy,Cz+uz-vz-wz]);cpt++;
  61.                 }
  62.                 if (cpt<m) {
  63.                         pH.push([Cx+ux+vx-wx,Cy+uy+vy-wy,Cz+uz+vz-wz]);cpt++;
  64.                 }
  65.                 if (cpt<m) {
  66.                         pH.push([Cx+ux+vx+wx,Cy+uy+vy+wy,Cz+uz+vz+wz]);cpt++;
  67.                 }
  68.                 if (cpt<m) {
  69.                         pH.push([Cx+ux-vx+wx,Cy+uy-vy+wy,Cz+uz-vz+wz]);cpt++;
  70.                 }
  71.                 if (cpt<m) {
  72.                         pH.push([Cx-ux-vx+wx,Cy-uy-vy+wy,Cz-uz-vz+wz]);cpt++;
  73.                 }
  74.                 if (cpt<m) {
  75.                         pH.push([Cx-ux+vx+wx,Cy-uy+vy+wy,Cz-uz+vz+wz]);cpt++;
  76.                 }
  77.                 if (cpt<m) {
  78.                         pH.push([Cx-ux+vx-wx,Cy-uy+vy-wy,Cz-uz+vz-wz]);cpt++;
  79.                 }
  80.                 if (cpt<m) {
  81.                         pH.push([Cx-ux-vx-wx,Cy-uy-vy-wy,Cz-uz-vz-wz]);cpt++;
  82.                 }
  83.         }
  84. };
  85. fHilbert(k,0,0,0,1,0,0,0,1,0,0,0,1);
  86. pH

Télécharger


Tester cette version « DGPad seul » : https://huit.re/Hilbert3D_expression

Sur les premières valeurs de n, on avance réellement pas à pas, pour les plus grandes valeurs de n, même avec un grand curseur, ce n’est plus possible, on avance par bloc de 3 ou 5.

La version tortue

Avec la tortue, Patrice a souhaité n’avoir qu’une seule fonction. Compte tenu de la complexité, c’est un sacré challenge !

Puisque l’on peut désormais promener un point sur une trace, celle-ci est d’abord entièrement construite - donc sans les nombreux tests de la version précédente qui complexifie le code et l’exécution - et ensuite on peut, au curseur, parcourir la courbe séquentiellement (la technique a été décrite plusieurs fois dans les parties précédentes). La « ballade 3D de Hilbert » prouve que la construction elle-même a été séquentielle, puisque l’on parcourt sa trace dans l’ordre croissant des entiers.

Le début du code

On notera qu’il n’y a qu’une seule prise d’information sur la figure, la variable d devient la taille, cela évite de nombreux appels « extérieurs à Blockly ».
Par ailleurs, et cela peut intéresser quelques personnes, vous noterez qu’a priori d est une variable locale , mais comme elle n’est utilisée que par des appels à sa valeur (GetValue()), ces appels dans la procédure Hilbert fonctionnent trés bien. C’est seulement s’il y avait une modification de sa valeur (SetValue()) que tout s’écroulerait ... enfin qu’il aurait fallu qu’elle soit globale.

Dans les premières lignes de la procédure générale, on voit que s est un drapeau qui vaut 1 ou -1 ce qui permet de changer d’orientation dans les appels internes de la procédure, mais aussi que s est utilisé dans la fonction pour avancer de d ou de -d selon le contexte : c’est au prix de ces quelques subtilités (surtout la seconde, moins simple à gérer) que Patrice a fait passer sa figure, déjà très compacte, de 2 procédures en version « expression » à une seule procédure dans la version tortue.

La figure en ligne : https://huit.re/Hilbert3D_BalladeTortue

Le code n’est pas dans le point rouge, mais dans un point A caché sur le point rouge. Il suffit de faire afficher les points cachés avec la gomme pour accéder au code (ce n’est pas un point "totalement caché comme dans les exercices).

Le code complet

On voit que si on peut faire Hilbert3D en une seule procédure, cela doit être largement possible aussi pour Hilbert2D ... le code de la figure de l’onglet précédent est améliorable.


Haut de la barre sur la récursivité (onglet suivant : courbe de Gosper)

Gosper

La courbe de Gosper

C’est un peu presque une narration non pas « de recherche » mais juste « de béta-testeur » que ce court onglet : les personnes habituées à suivre l’évolution des logiciels, ont toutes des repères sur lesquels chacun évalue l’évolution des logiciels, que ce soit une évolution ergonomique ou technique. Or cette courbe de Gosper est l’un de ces points d’ancrage pour moi : avec CaRMetal, comme on construit les points et les segments, on ne pouvait guère dépasser les 6000 points.

Gosper - juste par habitude - a été un des premiers tests de résistance faits sur la trace de la tortue. En effet, la tortue de DGPad a été disponible en ligne le 15 mai. Le 18, je postais ce tweet enthousiaste devant l’extraordinaire possibilité qui se faisait jour : c’était la première fois que l’on dépassait les 100 000 objets avec DGPad, juste totalement inimaginable quelques semaines avant. En effet avec les listes Blokcly, c’est difficile de dépasser les 20 000 objets.

Il faudrait qu’un jour, lors d’une conférence spécifique, Eric explique comment il arrive à ce résultat.

Remarque : la colorisation est non pas interne à la tortue, mais externe, avec le panneau de configuration, en sélectionnant la trace de la tortue (idem pour Hilbert 2D).

La figure en ligne : https://huit.re/Gosper_tortue

Le code utilisé

Ce code va faire sourire bon nombre de collègues, assurément. Je le laisse tel qu’il est néanmoins. On comprendra la prudence de l’écriture : la tortue de DGPad n’était disponible que depuis 48 h, d’où une grande prudence pour une première récursivité croisée. Deux mois plus tard, j’en suis assez désolé ;-)

Haut de la barre sur la récursivité (onglet suivant : Fractale de Pythagore)

Fractale Pythagore

Fractale de Pythagore

Il y a bien des façons de réaliser la fractale de Pythagore. Dans la version précédente (liste Blockly), une procédure AjoutCarré construisait un carré de côté donné et renvoyait les deux autres points. La procédure principale commençait par construire le triangle d’angle donné puis les deux carrés et itérait.


Avec la tortue, on se propose de faire différemment. La procédure Pythagore va construire un carré (sur un côté du triangle initial), le sommet du futur triangle et s’appelle deux fois, sur les deux côtés du triangle. Puis elle colorie - dans la version finale - le triangle.

Version préliminaire - Le code générique

À partir de deux points P et Q ([PQ] côté du triangle) on construit le carré PQRS en définissant localement - au sein de la procédure - les points R et S par la position de la tortue. On remplit le polygone. C’est la seule chose que doit afficher cette procédure. (ce sont les 2/3 du début de la procédure suivante)

La tortue est alors en P, origine du carré. En ayant levé le crayon, la tortue revient sur S et tourne vers R et un peu plus de l’angle du triangle (à gauche), et avance de la longueur du côté du nouveau triangle. On crée le point U - en variable locale s’entend - à la position de la souris, c’est le troisième sommet du triangle RUS semblable au tirangle initial. Le tout se fait crayon levé sinon il y aurait un segment tracé en plus à la fin de la procédure. On appelle alors cette même procédure, à un niveau de profondeur inférieur sur la partie gauche : le côté [SU] et la partie droite, le côté [UR]. On construit ainsi la fractale de Pythagore en ne dessinant que les carrés. Cela donne une illustration de ce type :

Explorer la figure de base : https://huit.re/PythaFractale_TRT1

Colorisation des carrés - Quand les apports cosmétiques sont didactiques

Mettre de la couleur est toujours intéressant car les couleurs permettent de suivre plus visuellement le procédé récursif.

Figure associée : https://huit.re/PythaFractale_TRT2

Ajout d’un triangle colorié - encore un sous produit de la manipulation directe

Reste à colorier la triangle RUS. Le principe de la récursivité est que va être affiché par la procédure tout ce qui se trouve avant son appel récursif. Ainsi, si on décide de colorier le triangle RUS avant les appels, il sera défini avant le test d’arrêt, on aura alors, au final, un triangle au dessus de chaque carré. Donc si on veut colorier le triangle sans dessiner celui du niveau au dessus, il faut le faire après l’appel récursif, en retour de la procédure.

La finalisation de la procédure est toujours un moment amusant (à condition de l’avoir placée dans la procédure générale avant de finaliser sa construction. En effet, la procédure est de ce type :

Or quand on pose les blocs rejoindre, ils ont par défaut un nom, et souvent A. Ce qui donne, le temps de construire la procédure, un effet surprenant dont celui-ci (sur les 3 étapes)

Figure finale : https://huit.re/PythaFractaleTortue

Illustrations

Haut de la barre sur la récursivité (onglet suivant : Le dragon)

Le Dragon

Courbe du dragon

Là encore, une première référence à consulter est à nouveau la page de Julien Pavageau pour sa présentation physique, en pliant des bandes de papier, dans cette page, avec une version GéoTortue et une version DGPad (avec les expressions, la construction a été faite bien avant la présence de Blockly), toutes les deux superbes. Et, en bonus, une rotation pour les 4 dragons. Vraiment superbe !

Le code standard à la tortue - première illustration

C’est un exercice classique de tous les ouvrages d’informatique - ou de pratique de logiciels scientifiques que de produire un code récursif avec une seule procédure - alors avec un paramètre d’orientation.

La figure du dragon initial : https://huit.re/Dragon1

Les surprises de la manipulation en temps réel

On sait que le plan est rempli par 4 dragons en rotations de 90° les uns par rapport aux autres. Préparant une boucle, il faut bien commencer par mettre un bloc dans la boucle. Par exemple comme ceci :

Et bien entendu la tortue de DGPad s’actualise.

ou encore

Sans encore ajouter l’angle qui fera la figure attendue, augmentons les possibilités de la profondeur. On obtient ainsi :

Et même (avec plus de 130 000 objets)

La figure intermédiaire : https://huit.re/Dragon_Rot4

Les 4 dragons du plan

Le code auquel on voulait arriver est celui-ci :

ce qui donne :

ou

La figure des quatre dragons : https://huit.re/Dragon4

Haut de la barre sur la récursivité (onglet suivant : sur les arbres)

Les arbres

Les arbres récursifs à la tortue

Les arbres sont un autre thème très classique pour une utilisation récursive de la tortue. On les trouve bien entendu dans XLogo et dans les activités pour GéoTortue, par exemple cette fiche PDF qui a inspiré cet onglet. Nos allons regarder ce thème d’abord en 2D pour se familiariser puis, rapidement en 3D.

1. Arbre en 2D avec un seul angle

Ce premier programme est l’occasion de discuter des différentes options possibles. La figure générale produite est celle-ci :

Le code

On dessine une branche d’un côté (tourner à gauche de ag) puis de l’autre, donc pour avoir le même angle on tourne à droite de 2ag. La seule chose importante, à faire ressentir si on fait chercher des élèves sur cette fiche (même si ce n’est pas explicitement au programme), est qu’il faut sortir de cette branche récursive avec la même orientation qu’on y est entré. Il faut équilibrer les angles à gauche et à droite, et bien entendu reculer de ce dont on a avancé avant d’activer la récursivité. Le code de la procédure Arbre est donc trés clair.

Un autre point toujours important à discuter dans la récursivité est le critère d’arrêt. Ici on se donne comme critère la taille des feuilles terminales, avec une limite de 10 pixels. C’est assez peu. On pourrait mettre un curseur pour dynamiser cette limite.
Dans le code tel qu’il est ici, deux curseurs font basculer d’un degré de profondeur de plus, le coefficient multiplicatif et la taille initiale. C’est un choix comme un autre, et on peut le trouver non judicieux, car on ne sait pas exactement quand on va changer de niveau de profondeur. On pourrait préférer choisir une profondeur et la taille minimale des feuilles serait donnée par la profondeur et le coefficient : c’est une version plus « informatique » car on veut maitriser le nombre de nœuds. Dans l’optique de ce qui est proposé ici, on peut aussi anticiper la prochaine étape et faire afficher la valeur du coefficient qui fait basculer vers une profondeur de plus.

La figure (Arbre_2D_1 angle) : https://huit.re/Arbre2D1a

Finalement, cette symétrie ressemble beaucoup à celle des feuilles de fenouil de mon jardin, bizarrement elles aussi symétriques.

2. Toujours en 2D, avec un second angle et en couleur

Le code

Le second angle est compté à partir du premier, comme sur la fiche GéoTortue. La seule modification du code est donc dans l’angle de rééquilibrage de l’orientation de la tortue à la sortie de la procédure.

Une illustration

La figure correspondante : https://huit.re/Arbre2D2aCouleur

Le passage à la 3D

Dans une première approche, on se donne trois directions principales (à 120°) et un angle à gauche (un seul donc) sur chacune de ces directions. Le code est une adaptation de ce qui précède, on note que l’on revient sur la direction principale avant de continuer les rotations et l’appel récursif.

Le code

Une première illustration

La figure de base pour la 3D : https://huit.re/Arbre3D_3a

C’est très amusant de voir l’influence de chaque angle. Du coup, ce serait plus didactique de donner une couleur pour chaque branche, comme ceci. Il suffit d’ajouter une couleur précise (la même, pas d’ajout de couleur) avant chaque appel récursif pour bien voir le chemin récursif en suivant les couleurs. Déplacer les curseurs - sur un arbre peu touffu - permet de bien voir les chemins.

Version 3 couleurs, une par branche

La figure avec les couleurs : https://huit.re/Arbre3D_3a_couleur

Arbre 3D - 3 directions générales et 2 branches par direction

Cette fois, sur chaque direction, on se donne deux angles symétriques, comme au tout début, dans la première figure 2D. Le code peut être celui-ci (mais pas nécessairement).

Le code

Illustration : arbre touffu

La figure en ligne : https://huit.re/Arbre3D_3ax2

revenir à 511 points de la trace pour observer les différents angles

Remarque : en mettant les couleurs, une couleur est privilégiée. Cela peut être un problème que je n’ai pas su gérer, mais plus généralement - il reste un petit bug sur les couleurs bien connu de l’auteur. Ou plus exactement le choix de colorisation est très souvent pertinent mais pas toujours, et, pour le moment, aucun algorithme permettant de faire tout ce que l’on veut - sur la trace et le remplissage avec des couleurs différentes - n’a été trouvé. Ici en mettant une couleur avant chaque branche, la 3° couleur est largement prépondérante. Il faudrait envisager une autre structure pour des couleurs équiréparties.

Arbre 3D avec 5 directions et deux branches par direction

C’est la même démarche, on ajoute juste deux directions de base.

La régularité du nombre de points :

La figure associée : https://huit.re/Arbre3D_5ax2

Haut de la barre sur la récursivité (revenir sur des onglets précédents)


Intro | Espace | Polyedres | Autres activités | Récursivité

DGPad - Liens divers

DGPad est disponible en webApp (avec Blockly et la tortue) sous tout environnement de système ou matériel. Privilégier les navigateurs Chrome, Firefox, Safari.

Le site de l’auteur (dont des vidéos de prise en main) : www.dgpad.net

DGPad est une iApp pour tablettes, disponible sous Android et iOS. Au moment où cet article est écrit, en juillet 2016, la tortue n’est pas encore disponible sous Androïd (c’est le prochain chantier)

C’est un logiciel libre dont le code est sur GitHub : https://github.com/dgpad/dgpad

Le fichier apk pour tablettes Android (utile à La Réunion par exemple où le Google Play n’est pas complet)

DGPad pour Android sur Google Play (pour le moment sans Blockly)

DGPad pour iOS

Quatre vidéos de présentation de la tortue de DGPad par son auteur

Premiers pas avec la tortue :
https://www.youtube.com/watch?v=AJGaAW-bPhQ&hd=1

Sujet 0 du DNB 2017 :
https://www.youtube.com/watch?v=x_r4mPXqlaQ&hd=1

Fractales et tortue :
https://www.youtube.com/watch?v=tbBQncCRFJ4&hd=1

Tortue en 3D :
https://www.youtube.com/watch?v=59-GpfPTFEE&hd=1

La version Mac et son interfaçage avec iBook-Author

DGPad est aussi disponible, depuis juillet 2016, en local sous MacOS X (récent, minimum Maverick) avec toutes les fonctionnalités des systèmes d’exploitation récents. En particulier cette version a été particulièrement étudiée pour réaliser des iBook dynamique lisible ensuite sur les tablettes.

Télécharger la version MacOS : http://huit.re/dgpad-macos
(Ne pas oublier qu’il faut faire un contrôle - clic droit - ouvrir pour lancer la première fois une application qui ne vient pas directement de l’Apple-Store)

Une vidéo de 2 min 30 sur les aspects spécifiques à l’appli MacOS : https://www.youtube.com/watch?v=G_jknMHbroA

Une vidéo de 8 min sur la publication de widgets DGPad dans les iBooks avec iBook-Author : https://www.youtube.com/watch?v=-JlmANavqls&feature=youtu.be

Autres références

Didacticiel et activités collège de l’IREM de Toulouse

L’IREM de Toulouse propose aussi une belle synthèse (présentation, réflexions, mise en perspective et activités) sur les nouveaux programmes de géométrie.

Nouveautés sur CaRMetal et DGPad : http://carmetal.org/index.php/fr/
Ce site est assurément le lieu où l’on trouve le plus d’informations récentes sur DGPad et CaRMetal. On y trouve en particulier quelques fiches d’utilisation de la tortue de DGPad ... et de celle de CaRMetal, développée par Patrice Debrabant.

Patrice met régulièrement des fiches - tous niveaux - en ligne. La dernière en date (au moment d’écrire ces lignes) était une fiche niveau « furieux », sur les pavages de Penrose, à la tortue bien entendu. Sa fiche Penrose (figure en bonus dans les téléchargements) ... Mais il y a aussi des fiches de niveau collège ;-)

Quelques figures de l’auteur

Eric Hakenholz utilise la tortue de DGPad tout à fait autrement que ce qui est présenté ici - il faudrait en faire un autre article. L’utilisation d’un outil par son auteur donne parfois un résultat un peu magique ... c’est le cas ici ! Dans ces cours de 5° et 4°, il propose à ses élèves de superbes figures particulièrement didactiques. En voici quelques exemples (proposés avec l’accord de l’auteur bien entendu) :

Sur les angles en 5° : https://huit.re/CoursEric_Angles_TR
Sur les relatifs en 5° : https://huit.re/CoursEric_Relatifs
Sur Pythagore en 4° : https://huit.re/CoursEric_pytha
Sur les ftractions en 5° : https://huit.re/CoursEric_Fractions

En particulier, sur les fractions, Eric utilise pleinement le TeX avec la tortue, introduit début septembre, soit après la mise en ligne de cet article. De superbes figures « tortue » donc ... où l’on oublie complètement qu’elles sont faites « à la tortue » compte tenu du contexte.

Téléchargements

Le dossier des figures (>180 figures car quelques figures de travail et bonus en plus des figures en ligne)

(version 03 du 18 aout 2016)

Mode d’emploi  : ouvrir DGPad en ligne. Glisser une figure sur la page. La figure s’ouvre. Vous êtes en mode consultation. Pour accéder au code de la tortue, passer en mode standard en activant le pointeur (flèche en bas à gauche).

Le dossier Kirigami - fiches PDF (barre d’onglet 4)

Liste des liens utilisés pour les figures de cet article


Le PDF de cet article ... est seulement prévu pour octobre-novembre 2016.