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).

maille p6m n

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 :

Wallpaper group diagram p6

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.

fig base p6

Les points rouges sont dynamiques.

On peut alors appliquer le programme (CaRScript) avec cet entête :

script p6 n

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 :

pave p6 n 01

script rapide, profondeurRecursion = 1

pave p6 n 02

script rapide, profondeurRecursion = 2

pavage p6 n 03

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).

pavage p6 n 04

script rapide, profondeurRecursion = 4

pavage p6 n 05

script rapide, profondeurRecursion = 5

pavage p6 n 06

script rapide, profondeurRecursion = 6

pavage p6 n 07

script rapide, profondeurRecursion = 7

pavage p6 n 08

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.

pavage p6b n 01

script exhaustif, profondeurRecursion = 1

pavage p6b n 02

script exhaustif, profondeurRecursion = 2

pavage p6b n 03

script exhaustif, profondeurRecursion = 3

Les pavages sont dynamiques.

On peut mettre en évidence la maille du pavage.

maille p6

 

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 :

640px Wallpaper group diagram pgg

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.

fig base pgg n

ABC est un triangle isocèle en C. Les points rouges sont dynamiques.

On peut alors appliquer le programme (CaRScript) avec cet entête :

script pgg n

On obtient ce pavage dynamique :

pavage pgg n 01

script rapide, profondeurRecursion = 1

pavage pgg n 02

script rapide, profondeurRecursion = 2

pavage pgg n 03

script rapide, profondeurRecursion = 3

On peut mettre en évidence la maille du pavage.

maille pgg n


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 :

Wallpaper group diagram legend rotation2.svg un centre de rotation d'ordre 2 (180°) = un centre de symétrie centrale
Wallpaper group diagram legend rotation3.svg un centre de rotation d'ordre 3 (120°)
Wallpaper group diagram legend rotation4.svg un centre de rotation d'ordre 4 (90°)
Wallpaper group diagram legend rotation6.svg un centre de rotation d'ordre 6 (60°)
Wallpaper group diagram legend reflection.svg un axe de symétrie axiale
Wallpaper group diagram legend glide reflection.svg 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 :

640px Wallpaper group diagram p1.svg

On utilise les translations.

Maille et ligne brisée :

fig base p1

Entête :

script p1 b

Pavage :

pavage p1


Pavage de type p2

La structure de maille est la suivante :

640px Wallpaper group diagram p2.svg

Maille et ligne brisée :

fig base p2

Entête :

script p2 b

On obtient ce pavage dynamique :

pavage p2 n 01

script rapide, profondeurRecursion = 1

pavage p2 n 02

 script rapide, profondeurRecursion = 2

 On peut mettre en évidence la maille :

maille p2


Pavage de type pm

La structure de maille est la suivante :

640px Wallpaper group diagram pm.svg

Maille et ligne brisée :

fig base pm

Entête :

script pm b

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 :

pavage pm n 01

script rapide, profondeurRecursion = 1

pavage pm n 02

script rapide, profondeurRecursion = 2

On peut mettre en évidence la maille :

maille pm


Pavage de type pg

La structure de maille est la suivante :

640px Wallpaper group diagram pg.svg

Maille et ligne brisée :

fig base pg

Entête :

script pg b

Pavage :

pavage pg n 01

script rapide, profondeurRecursion = 1

pavage pg n 02

script rapide, profondeurRecursion = 2

On peut mettre en évidence la maille :

maille pg n


Pavage de type cm

La structure de maille est la suivante :

640px Wallpaper group diagram cm.svg

Maille et ligne brisée :

fig base cm

Entête :

script cm b

Pavage :

pavage cm n 01

script rapide, profondeurRecursion = 1

pavage cm n 02

script rapide, profondeurRecursion = 2

On peut mettre en évidence la maille :

maille cm n


Pavage de type pmm

La structure de maille est la suivante :

640px Wallpaper group diagram pmm.svg

Maille et ligne brisée :

fig base pmm

Entête :

script pmm b

Pavage :

pavage pmm n 01

script rapide, profondeurRecursion = 1

pavage pmm n 02

script rapide, profondeurRecursion = 2

On peut mettre en évidence la maille :

maille pmm n


Pavage de type pmg

La structure de maille est la suivante :

640px Wallpaper group diagram pmg.svg

Maille et ligne brisée :

fig base pmg

Entête :

script pmg

Pavage :

pavage pmg n 01

script rapide, profondeurRecursion = 1

pavage pmg n 02

script rapide, profondeurRecursion = 2

On peut mettre en évidence la maille :

maille pmg n


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 :

640px Wallpaper group diagram cmm.svg

Maille et ligne brisée :

fig base cmm

Entête :

script cmm

Remarque :  on n'a pas mis A, B, C dans rot180.

Pavage :

pavage cmm n 01

script rapide, profondeurRecursion = 1

pavage cmm n 02

 script rapide, profondeurRecursion = 2

On peut mettre en évidence la maille :

maille cmm n


Pavage de type p4

La structure de maille est la suivante :

640px Wallpaper group diagram p4.svg

Maille et ligne brisée :

fig base p4

Entête :

script p4

Pavage :

pavage p4 n 01

script rapide, profondeurRecursion = 1

pavage p4 n 02

script rapide, profondeurRecursion = 2

On peut mettre en évidence la maille :

maille p4 n


Pavage de type p4m

La structure de maille est la suivante :

640px Wallpaper group diagram p4m.svg

Maille et ligne brisée :

fig base p4m

Entête :

script p4m

Pavage :

pavage p4m n 01

script rapide, profondeurRecursion = 1

pavage p4m n 02

script rapide, profondeurRecursion = 2

On peut mettre en évidence la maille :

maille p4m n


Pavage de type p4g

La structure de maille est la suivante :

640px Wallpaper group diagram p4g.svg

Maille et ligne brisée :

fig base p4g

Entête :

script p4g

Pavage :

pavage p4g n 01

script rapide, profondeurRecursion = 1

pavage p4g n 02

script rapide, profondeurRecursion = 2

On peut mettre en évidence la maille :

maille p4g n


Pavage de type p3

La structure de maille est la suivante :

640px Wallpaper group diagram p3.svg

Maille et ligne brisée :

fig base p3

Entête :

script p3

Pavage :

pavage p3 n 01

script rapide, profondeurRecursion = 1

pavage p3 n 02

script rapide, profondeurRecursion = 2

On peut mettre en évidence la maille :

maille p3 n


Pavage de type p3m1

La structure de maille est la suivante :

640px Wallpaper group diagram p3m1.svg

Maille et ligne brisée :

fig base p3m1

Entête :

script p3m1

Pavage :

pavage p3m1 n 01

script rapide, profondeurRecursion = 1

pavage p3m1 n 02

script rapide, profondeurRecursion = 2

On peut mettre en évidence la maille :

maille p3m1 n


Pavage de type p31m

La structure de maille est la suivante :

640px Wallpaper group diagram p31m.svg

Maille et ligne brisée :

fig base p31m n

Entête :

script p31m n

Pavage :

pavage p31m n 01

script rapide, profondeurRecursion = 1

pavage p31m n 02

script rapide, profondeurRecursion = 2

On peut mettre en évidence la maille :

maille p31m n


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 :

640px Wallpaper group diagram p6m.svg

Maille et ligne brisée :

fig base p6m n

Entête :

script p6m n

Pavage :

pavage p6m n 01

script rapide, profondeurRecursion = 1

pavage p6m n 02

script rapide, profondeurRecursion = 2

On peut mettre en évidence la maille :

maille p6m n

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 :

pavage chinois 01

On lance le programme et on obtient (en ajustant un peu les points)  cette figure :

pavage chinois 02

On pourrait aussi adapter le programme pour gérer le coloriage dans le script.

Pièce(s) jointe(s):
Télécharger ce fichier (pavage-chinois-exhaustive-lente.zir)pavage-chinois-exhaustive-lente.zir[ ]28 Ko
Télécharger ce fichier (pavage-chinois.zir)pavage-chinois.zir[figure CaRMetal]27 Ko
Télécharger ce fichier (pavages-17-types-v-exhaustive-lente.zip)pavages-17-types-v-exhaustive-lente.zip[zip contenant les 17 pavages]78 Ko
Télécharger ce fichier (pavages-17-types.zip)pavages-17-types.zip[zip contenant les 17 pavages]76 Ko