Un pavage peut être caractérisé par le groupe d'isométries qui le conservent.
Il existe 17 types de pavages "périodiques" du plan. On entend par là qu'il existe 17 types de groupes d’isométries contenant un sous-groupe discret bidimensionnel de translations.
Cela permet de classer tous les motifs bidimensionnels périodiques en fonction des isométries qui laissent ce motif invariant.
On va construire ces 17 types de pavages (et en donner une version dynamique) avec CaRMetal. On le fera en écrivant un programme général capable de construire un pavage dynamique à partir de chacune de 17 configurations initiales (les structures de maille).
La mise en oeuvre du programme se fait ainsi :
1) on construit puis on renseigne dans l'entête du programme :
- les sommets du motifs minimal;
- les différentes isométries élémentaires qui conservent le motif;
- des points libres qui composeront dynamiquement le motif minimal;
2) on lance le programme, qui applique alors les isométries au motif minimal (appelé unité asymétrique), puis à ses images successives (récursion). On obtient le pavage périodique.
En pratique, on va donner 17 figures pour lesquelles on a déjà construit le motif minimal, et implémenté le programme sous forme d'un CaRScript dont l'entête a été correctement renseigné. Il suffit donc de lancer ce script.
Remarques :
1) On n'utilisera pas systématiquement les translations. On les utilisera seulement quand elles seront indispensables (quand elles ne sont pas générées par les autres isométries du groupe), ce qui permet d'observer la "périodicité" sans l'avoir programmée de façon transparente avec les translations.
2) Pour les isométries qui ne sont pas leur propre réciproque (qui ne sont pas des symétries), on appliquera à chaque étape l'isométrie et son inverse.
3) On donne deux versions du script :
- une version "rapide" qui abandonne toute branche de l'arbre de récursion dès que l'on retombe sur une unité asymétrique déjà construite, et cela quel que soit le niveau atteint dans l'arbre de récursion. Cela permet d'éviter toute superposition, mais cela a aussi pour inconvénient d'abandonner prématurément certaines branches dont des noeuds plus profonds sont des unités asymétriques qui ne sont pas encore atteintes.
- une version "exhaustive" plus lente qui explore tous les noeuds de l'arbre récursif et construit toutes les unités asymétriques atteintes à un certain niveau de récursion.
Exemple : pavage de type p6
La structure de maille est la suivante :
Le motif minimal (unité asymétrique) est colorié en jaune.
Les losanges indiquent des centres de symétries centrales (rotations de 180°).
Les triangles équilatéraux indiquent des centres de rotation d'angle 120°.
Les hexagones réguliers ndiquent des centres de rotation d'angle 60°.
On construit l'unité asymétrique et une ligne brisée EFGHI qui permettra de créer un motif dynamique.
Les points rouges sont dynamiques.
On peut alors appliquer le programme (CaRScript) avec cet entête :
On obtient (après quelques minutes car l'analyseur syntaxique a beaucoup de travail. Pendant ce temps le logiciel ne répond plus, pas de panique) ce pavage dynamique :
script rapide, profondeurRecursion = 1
script rapide, profondeurRecursion = 2
script rapide, profondeurRecursion = 3
On peut être surpris de constater que pour une profondeur de récursion égale à 3, le pavage est moins étendu que pour une récursion égale à 2.
Mais "c'est normal", on l'expliqué dans une remarque précédente : cela est dû au fait que le programme ne construit pas une unité asymétrique déjà construite (et abandonne cette branche), indépendamment de sa position dans l'arbre de récursion (voir la fonction dejaConstruit dans le script).
script rapide, profondeurRecursion = 4
script rapide, profondeurRecursion = 5
script rapide, profondeurRecursion = 6
script rapide, profondeurRecursion = 7
script rapide, profondeurRecursion = 8
Dans le script exhaustif lent, on doit impérativement gérer les superpositions, et on est confronté à une explosion exponentielles des unités asymétriques superposées.
script exhaustif, profondeurRecursion = 1
script exhaustif, profondeurRecursion = 2
script exhaustif, profondeurRecursion = 3
Les pavages sont dynamiques.
On peut mettre en évidence la maille du pavage.
Remarque : on a différents choix possibles pour la mise en couleur. On a choisi ici de construire :
- un polygone avec A, B et la première moitié des points de la ligne brisée;
- un polygone avec B, C et la seconde moitié des points de la ligne brisée;
- un polygone avec les autres sommets (ici C et A) et tous les points de la ligne brisée.
On pourrait procéder autrement pour obtenir différents effets graphiques et des motifs plus élaborés (la partie concernée du script est au début de la fonction récursive, avant le "si (n>...)" ).
Autre exemple : pavage de type pgg
La structure de maille est la suivante :
Le motif minimal est colorié en jaune.
Les losanges indiquent des centres de symétries centrales (rotations de 180°).
Les segments en pointillés indiquent des axes de glissage.
On construit la maille et une ligne brisée IJKLMNO qui permettra de créer un motif dynamique.
ABC est un triangle isocèle en C. Les points rouges sont dynamiques.
On peut alors appliquer le programme (CaRScript) avec cet entête :
On obtient ce pavage dynamique :
script rapide, profondeurRecursion = 1
script rapide, profondeurRecursion = 2
script rapide, profondeurRecursion = 3
On peut mettre en évidence la maille du pavage.
On peut maintenant passer en revue les différents pavages:
On peut remarquer que le script utilise :
- les CaRCommandes SymétrieAxiale et Translation;
- la macro de menu Rotation sans dialogue (via ExécuterMacro);
- la macro personnalisée glissage (via ExécuterMacro).
Ces trois éléments s'utilisent de façon analogue.
On donnera la structure de maille de chaque type de pavage avec les conventions suivantes :
![]() |
un centre de rotation d'ordre 2 (180°) = un centre de symétrie centrale |
![]() |
un centre de rotation d'ordre 3 (120°) |
![]() |
un centre de rotation d'ordre 4 (90°) |
![]() |
un centre de rotation d'ordre 6 (60°) |
![]() |
un axe de symétrie axiale |
![]() |
un axe de symétrie axiale glissée = un axe de glissage |
Remarque : une symétrie axiale glissée est la composition d'une symétrie axiale d'axe (AB) et d'une translation de vecteur \(\vec{AB}\). Elle peut être caractérisée par deux points.
Pavage de type p1
La structure de maille est la suivante :
On utilise les translations.
Maille et ligne brisée :
Entête :
Pavage :
Pavage de type p2
La structure de maille est la suivante :
Maille et ligne brisée :
Entête :
On obtient ce pavage dynamique :
script rapide, profondeurRecursion = 1
script rapide, profondeurRecursion = 2
On peut mettre en évidence la maille :
Pavage de type pm
La structure de maille est la suivante :
Maille et ligne brisée :
Entête :
Remarque : on doit utiliser la translation de vecteur \(\vec{AB}\). Celle de vecteur \(2\vec{BC}\) est générée par les symétries axiales, on peut donc s'en passer.
Pavage :
script rapide, profondeurRecursion = 1
script rapide, profondeurRecursion = 2
On peut mettre en évidence la maille :
Pavage de type pg
La structure de maille est la suivante :
Maille et ligne brisée :
Entête :
Pavage :
script rapide, profondeurRecursion = 1
script rapide, profondeurRecursion = 2
On peut mettre en évidence la maille :
Pavage de type cm
La structure de maille est la suivante :
Maille et ligne brisée :
Entête :
Pavage :
script rapide, profondeurRecursion = 1
script rapide, profondeurRecursion = 2
On peut mettre en évidence la maille :
Pavage de type pmm
La structure de maille est la suivante :
Maille et ligne brisée :
Entête :
Pavage :
script rapide, profondeurRecursion = 1
script rapide, profondeurRecursion = 2
On peut mettre en évidence la maille :
Pavage de type pmg
La structure de maille est la suivante :
Maille et ligne brisée :
Entête :
Pavage :
script rapide, profondeurRecursion = 1
script rapide, profondeurRecursion = 2
On peut mettre en évidence la maille :
Pavage de type pgg
Voir le deuxième exemple au début de l'article.
Pavage de type cmm
La structure de maille est la suivante :
Maille et ligne brisée :
Entête :
Remarque : on n'a pas mis A, B, C dans rot180.
Pavage :
script rapide, profondeurRecursion = 1
script rapide, profondeurRecursion = 2
On peut mettre en évidence la maille :
Pavage de type p4
La structure de maille est la suivante :
Maille et ligne brisée :
Entête :
Pavage :
script rapide, profondeurRecursion = 1
script rapide, profondeurRecursion = 2
On peut mettre en évidence la maille :
Pavage de type p4m
La structure de maille est la suivante :
Maille et ligne brisée :
Entête :
Pavage :
script rapide, profondeurRecursion = 1
script rapide, profondeurRecursion = 2
On peut mettre en évidence la maille :
Pavage de type p4g
La structure de maille est la suivante :
Maille et ligne brisée :
Entête :
Pavage :
script rapide, profondeurRecursion = 1
script rapide, profondeurRecursion = 2
On peut mettre en évidence la maille :
Pavage de type p3
La structure de maille est la suivante :
Maille et ligne brisée :
Entête :
Pavage :
script rapide, profondeurRecursion = 1
script rapide, profondeurRecursion = 2
On peut mettre en évidence la maille :
Pavage de type p3m1
La structure de maille est la suivante :
Maille et ligne brisée :
Entête :
Pavage :
script rapide, profondeurRecursion = 1
script rapide, profondeurRecursion = 2
On peut mettre en évidence la maille :
Pavage de type p31m
La structure de maille est la suivante :
Maille et ligne brisée :
Entête :
Pavage :
script rapide, profondeurRecursion = 1
script rapide, profondeurRecursion = 2
On peut mettre en évidence la maille :
Pavage de type p6
Voir le premier exemple au début de l'article.
Pavage de type p6m
La structure de maille est la suivante :
Maille et ligne brisée :
Entête :
Pavage :
script rapide, profondeurRecursion = 1
script rapide, profondeurRecursion = 2
On peut mettre en évidence la maille :
On donne en p-j les 17 pavages. On aurait pu les mettre dans un seul classeur CaRMetal avec navigation par onglet. On a choisi de les mettre dans un zip contenant 17 figures.
Complément : le pavage dit "des chinois"
On a dit dans un article précédent que le pavage "des chinois" était de type p31m. Montrons que l'on peut bien l'obtenir à l'aide du programme.
La mise en couleur ne convient plus, on adapte le programme pour faire une figure au trait. (voir p-j)
Ensuite on reprend la structure de maille pour le pavage p31m avec la disposition suivante :
On lance le programme et on obtient (en ajustant un peu les points) cette figure :
On pourrait aussi adapter le programme pour gérer le coloriage dans le script.