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.

Construire un pavage dynamique par programmation
Article mis en ligne le 5 octobre 2018
dernière modification le 17 avril 2021

par Patrice Debrabant

Article placé sous licence CC-by-SA : http://creativecommons.org/licenses/by-sa/3.0/fr/legalcode

Dans cet article, on va voir différentes façons « modernes » [1] de construire un pavage dynamique (par rapport à trois points) du plan par des parallélogrammes.
Les méthodes sont généralisables à des pavages plus compliqués. Elles permettent également de présenter différents paradigmes de programmation en géométrie dynamique.

On a vu apparaître un exercice sur les pavages dans le sujet du brevet de juin 2018 d’Amérique du Nord (exercice 5). [2]
Il s’agit d’un pavage très simple à partir de losanges obtenus eux-même à partir d’un motif élémentaire constitué par un triangle isocèle (selon un enchainement encouragé au collège car il permet de « caser » une transformation en passant). Ce pavage est un cas particulier du pavage par des parallélogrammes.

figure dynamique réalisée avec DGPad

L’algorithme général de construction utilisé peut être résumé ainsi :

  1. On dessine le motif générique de base ;
  2. On reproduit ce motif un certain nombre de fois par translations successives.

I) Construire la frise

On va commencer par utiliser le logiciel CaRMetal, qui propose un panel d’outils différents mais cohérents qui permettent de résoudre le problème de façon simple et méthodique.

Première méthode : avec les transformations

1) On crée deux points libres A et B, puis la médiatrice de [AB] (construire le segment [AB] est inutile) et un point C sur cette médiatrice.

2) On masque la médiatrice

3) On détermine l’aspect par défaut de tous les points suivants, que l’on va créer par script.

4) On crée un script dans lequel on commence par créer le centre du losange, puis le point D par symétrie centrale.
On programme en pseudo-code pour habituer les élèves à cette écriture des algorithmes, désormais utilisée dans les sujets du baccalauréat.

5) On poursuit en construisant les triangles.

6) On termine le script.

Et on peut proposer une version plus compacte :

fichier CaRMetal

Un relecteur attentif m’a fait remarquer à juste titre que jsA et jsC sont modifiés dès l’entrée dans la boucle, et que donc les lignes 6 et 8 sont inutiles.
On peut en effet supprimer ces lignes ou les passer en commentaires :

En fait, il y a un déséquilibre dans les scripts précédents, qui seraient plus équilibrés s’ils étaient articulés ainsi :

Deuxième méthode : avec la tortue

Pour la frise, on obtient facilement un script convaincant avec les transformations. Il peut donc sembler incongru de proposer une méthode avec la tortue.
Mais dans la généralisation au pavage, la méthode avec la tortue apportera tout sons sens (= sa plus value par rapport à la méthode avec des transformations).

Voici le script tortue. Au lieu de translations, on utilise des déplacements de tortue :

fichier CaRMetal

Troisième méthode : avec une macro

On part des trois points A, B et C comme précédemment.

1) On construit via l’interface les points jouant le rôle de A et B à l’étape suivante en utilisant les outils milieu, symétrie centrale, et translation.

2) On construit une macro frise.



3) On écrit un script avec ExécuterMacroCommeDéfinie.
On choisit par défaut une forme minimale pour les points et on lance le script.

fichier CaRMetal

Remarque : pour l’instant, on a construit une frise avec des losanges. Pour obtenir une frise plus générale (trois points A, B et C libres) , il suffit de « détacher » le point C de la médiatrice (clic droit sur le point pour afficher sa barre de propriétés, puis clic sur le bouton détacher).
On peut le faire avant ou après exécution du script (et pour les trois méthodes bien-sûr).


II) Construire le pavage

Ce n’était pas demandé dans le sujet du brevet, mais c’est tentant : passons au pavage.

Dans le cas de la frise, on a suivi le processus suivant :

Construire le point D
Construire le premier losange
répéter 4 fois
  Décaler les points
  Construire le losange

Pour le pavage, il sera plus simple de procéder ainsi :

Construire le point D
répéter 4 fois
  Construire le losange
  Décaler les points

Ce qui donnerait pour la frise ce code, qui évite une répétition :

fichier CaRMetal

Première méthode : avec les transformations

Il faut retenir la position des points sur la première « colonne ». Ce sera le rôle des variable js2.
Il faut aussi mettre à jour ces variables à mesure du tissage du pavage.

fichier CaRMetal

Pour bien distinguer les lignes et les colonnes, on aurait pu (dû) prendre une valeur différente dans les deux boucles.
On peut aussi proposer une version avec un curseur pour le nombre de colonnes :

Ce script donne (quand la valeur du curseur est 6) cette figure :

fichier CaRMetal

Deuxième méthode : avec la tortue

Vous me voyez venir, on ne va plus utiliser les variables js2, on va demander à la tortue de faire le yoyo.

fichier CaRMetal

Troisième méthode : avec une macro

fichier CaRMetal

III) Construire la frise et le pavage en Programmation Visuelle par Blocs avec DGPad

Il s’agit de programmation tortue classique (mais avec une tortue dynamique).
Comme précédemment on construit via l’interface deux points libres A et B, puis un point C sur la médiatrice de [AB].

On programme ensuite la tortue du point C.

On construit une fonction(procédure) triangle avec en paramètre un numéro de couleur.

On construit une fonction(procédure) parallelo.

1) Construire la frise

Le script « principal » est le suivant :

Les numéros de couleur et le nombre d’itérations peuvent être définis dynamiquement par curseurs.

fichier DGPad

Remarque : on peut ouvrir les fichiers DGPad en les glissant sur l’espace de travail (la page blanche) de l’application en ligne : https://dgpad.net
Comme si on les glissait dans un dossier.

2) Construire le pavage

Le script « principal » est le suivant :

fichier DGPad

Comme pour le pavage obtenu avec CaRMetal, on peut libérer le point C pour obtenir le pavage classique par des parallélogrammes (avec trois points libres A, B, C).

Prolongements possibles :

Pavages divers sur carmetal2.free.fr