Elaboration d'un programme MAPLE de construction de pavages du disque de Poincaré

 

Introduction:

·        La géométrie hyperbolique fait partie des géométries non euclidiennes. Je vais m'intéresser plus particulièrement au plan hyperbolique avec le modèle du disque de Poincaré.

·        J'étudie la décomposition en polygones réguliers de ce plan hyperbolique et je propose un programme informatique permettant de représenter de tels pavages.

Plan: 

I Eléments de géométrie hyperbolique

1) Description du disque de Poincaré

2) L'inversion en cercle: une « réflexion » hyperbolique

 II Les pavages du disque de Poincaré par des polygones

1) Définition d'un pavage

2) Théorème de Poincaré simplifié et classification des pavages

 III Constructions de pavages avec MAPLE

1) Les procédures utilisées

2) Construction d'un pavage par des triangles

3) Généralisation et automatisation de la construction

4) Les améliorations de l'algorithme

 

I -Eléments de géométrie hyperbolique

 

1) Description du disque de Poincaré

  Soit W={z complexe / |z|<1}  et  S={z complexe / |z|=1}.  Les intersections de  W avec les diamètres de S et les arcs de cercles orthogonaux à S sont appelés lignes hyperboliques.

Propriétés:

·        Quelque soit (A,B) dans W ² il existe une unique ligne hyperbolique reliant A et B

·        Il existe une distance d sur W  telle qu'une ligne hyperbolique soit le plus court chemin reliant 2 points.

·        d : W ²      ® R+

        

Quelques lignes hyperboliques de W

 

Le disque de Poincaré est l'espace métrique (W,d).

L'angle à l'intersection de 2 lignes hyperboliques est l'angle euclidien entre les tangentes aux 2 lignes hyperboliques.

2) L'inversion en cercle: une « réflexion » hyperbolique. 

Soit a un complexe et r>0,

Soit G le cercle de centre a et de rayon r,

L’ inversion en cercle par rapport à G est :

  

Propriétés:

·         est une involution bijective sur C-{a}

·        G est l’ensemble des points fixes de

·         laisse stable l’ensemble des cercles et des droites de C-{a}

 

Définition de la réflexion hyperbolique :

Soit h une ligne hyperbolique :

- Si h est un diamètre, on appelle réflexion hyperbolique par rapport à h la    restriction à W de la réflexion euclidienne par rapport à la droite contenant h.

- Si h est un arc de cercle, on appelle réflexion hyperbolique par rapport à h l’inversion par rapport au cercle contenant h.

 

Propriétés :

Si h est un arc de cercle, soit a son centre et s la réflexion par rapport à h.

·       

·        s est une bijection de W

·        s conserve la distance d, c’est une isométrie hyperbolique

·        L’ensemble des réflexions hyperboliques engendre Isom(W), le groupe des isométries de W

 

II -Les pavages du disque de Poincaré par des polygones

 

1) Définition d’un pavage

Soit K un compact de W et G un sous groupe de Isom(W). Alors (K,G) est un pavage périodique de W si

·        W=

·       

Sous ces conditions, K est appelé pavé de base et G est appelé groupe cristallographique.

Je m’intéresse aux pavages pour lesquels K est un polygone régulier. 

Exemple : triangle hyperbolique

 

Propriété :

La somme des angles d’un triangle hyperbolique est strictement inférieure à p.

 

2) Théorème de Poincaré simplifié et classification des pavages

Théorème (admis) :

Soit P un polygone hyperbolique régulier à n côtés, tel que la mesure des angles de ses sommets soit 2p/q avec q³3. Soit G le sous groupe de Isom(W) engendré par les n réflexions hyperboliques par rapport aux côtés de P. Alors  (P,G) est un pavage périodique de W.

Propriété :

         Un tel polygone régulier existe si  

A un pavage de W par des polygones réguliers, on peut donc associer le couple (n,q) où n est le nombre de côtés des polygones et q est le nombre de polygones qui se rencontrent à chaque sommet. 

Exemple :

          

Début du pavage (3,9)

 

III-Constructions de pavages avec MAPLE

1) Les procédures utilisées 

·        La fonction ddp( ) représente le disque de Poincaré.

·        La fonction cen(z1,z2) calcule le centre euclidien du cercle contenant la ligne hyperbolique passant par 2 points non alignés avec O.

·        La fonction milieu(z1,z2) calcule le milieu euclidien du segment hyperbolique joignant 2 points.

·        La fonction hdist(z1,z2) est la distance hyperbolique.

·        La fonction seg(z1,z2) trace le segment hyperbolique joignant 2 points.

·        La fonction ligneb(liste) trace une ligne brisée joignant les points d'une liste.

·        La fonction ligneh(z1,z2) trace la ligne hyperbolique passant par 2 points.

·        La fonction reflect(z1,z2,liste) applique à une liste de points la réflexion

     hyperbolique par rapport à la ligne hyperbolique joignant z1 et z2.

·        Pour un triangle OAB isocèle en O dont les angles sont: O=2*Pi/p et A=B=Pi/q, la fonction tri(p,q) calcule la distance euclidienne OA=OB

 

Exemple :

>z1:=-.1-.8*I:

>z2:=.5+.2*I:

>liste:=[-.4+.6*I,-.8,-.1-.6*I,-.4+.6*I]:

>display([ddp(thickness=2),ligneb(liste,color=black),

  ligneh(z1,z2,color=black),ligneb(reflect(z1,z2,liste),color=black)]);

 

 

2) Construction d’un pavage par des triangles 

Je vais détailler la construction du pavage (3,7) c’est à dire par des triangles heptavalents.

 ·        Détermination du pavé de base : triangle équilatéral avec un sommet en O

> t7:=fsolve(hdist(t*cos(2/7*Pi)+I*t*sin(2/7*Pi),t)=hdist(0,t),t,.3.. .99);

                          t7 := .4969704254 

·        Construction de 7 triangles autour de O :

> l1 :=

> seq([0,evalf(evalc(t7*(cos(i*2/7*Pi)+I*sin(i*2/7*Pi))))],i=0..6):

> l2:=seq(eva lf([evalc(t7*(cos(i*2/7*Pi)+I*sin(i*2/7*Pi))),

> evalc(t7*(cos((i+1)*2/7*Pi)+I*sin((i+1)*2/7*Pi)))]),i=0..6):

> pl1:=display([seq(seg(op(l2[i])),i=1..7),seq(seg(op(l1[j])),j=1..7)]):

> pl1;

·        Ensuite on construit le symétrique de cet heptagone par rapport à un de ses côtés puis les symétriques de ce nouvel heptagone par rapport à 2 autre côtés.

    > l3 := evalf(seq(reflect(op(l2[1]), (l2[i])),i=1..7)):

> l3 := l3,evalf(seq(reflect(op(l2[1]), (l1[i])),i=1..7)):

> l4 := evalf(seq(reflect(op(l3[7]), l3[i]),i=1..nops([l3]))),l3,

> evalf(seq(reflect(op(l3[2]), l3[i]),i=1..nops([l3]))):

> pl2:=display([seq(seg(op(l4[i]),color=blue),i=1..nops([l4]))]):

> display([pl1,pl2],scaling=constrained,axes=none); 

 

On construit les symétriques par rapport aux 4 côtés restants (en magenta).

> l5 :=

> seq(reflect(op(l3[3]), l3[i]),i=1..nops([l3])),

> seq(reflect(op(l3[4]), l3[i]),i=1..nops([l3])),

> seq(reflect(op(l3[5]), l3[i]),i=1..nops([l3])),

> seq(reflect(op(l3[6]),

> l3[i]),i=1..nops([l3])):pl3:=display([pl1,pl2,seq(seg(op(l5[i]),

> color=magenta),i=1..nops([l5]))]):

> display([pl3],scaling=constrained,axes=none); 

Enfin on effectue 6 fois la rotation de la figure.

> pl4:=display([pl3,plottools[rotate]( pl3  ,evalf(2*Pi/7)),

> plottools[rotate]( pl3  ,evalf(4*Pi/7)),

> plottools[rotate]( pl3  ,evalf(6*Pi/7)),

> plottools[rotate]( pl3  ,evalf(8*Pi/7)),

> plottools[rotate]( pl3  ,evalf(10*Pi/7)),

> plottools[rotate]( pl3  ,evalf(12*Pi/7))]):

> display([ddp(color=white),pl4],scaling=constrained,axes=none);

 

Ce pavage n’est pas complet mais on peut le continuer.

 

3) Généralisation et automatisation de la construction

> pv1:=proc(n,q,p)

> local i,j,k,l,a,P,Pl,opts;

> opts := op(select(type,[args],`=`));

> a:=tri(n,q);

> P:=array(1..p,1..n^(p-1));

> P[1,1]:=op(evalf([seq([a*cos(i*2*Pi/n)+I*a*sin(i*2*Pi/n),

> a*cos((i+1)*2*Pi/n)+I*a*sin((i+1)*2*Pi/n)],i=1..n)]));

> Pl:=seq(seg(op(P[1,1][i]),color=black,opts),i=1..n):

> for j from 2 to p do

>  for k from 1 to n^(j-2) do

>    for l from 1 to n do

>      P[j,(k-1)*n+l]:=seq(reflect(op(P[j-1,k][l]),P[j-1,k][i]),i=1..n);

>      Pl:=Pl,seq(seg(op(P[j,(k-1)*n+l][i]),color=black,opts),i=1..n): 

>    od;

>   od;

> od;

> display([ddp(color=white,opts),Pl],axes=none,scaling=constrained);

> end:

Cette procédure pv1 construit les pavages de type (p,q). Le paramètre p correspond à la précision, il permet de limiter les calculs.

Le nombre de calculs effectués est équivalent à n^(p-1).

Exemple : pv1(5,4,5), temps de calcul : 25 minutes. 

Principe de l’algorithme :

 

Les polygones sont enregistrés dans un tableau :

 

P[j,k] 

 

·        P[1,1] contient le pavé de base P,

·        Par réflexion on obtient n polygones P[2,1] à P[2,n]

·        Puis on construit n² polygones P[3,1] à P[3,n²]

·        A l’étape j on construit P[j,1] à P[j,]

 

Méthode de construction de P :

 

Je construis le polygone P à n côtés en le décomposant en n triangles isocèles qui se rencontrent en O :

 

 

 et  OA=OB=tri(n,q)

4) Les améliorations de l’algorithme

 

 pv2 construit P et les polygones Rm( Rl ( Rk( Rj( P0)))) ou Ri est la réflexion par rapport au coté i de P.

 

pv2:=proc(n,q)

> local a,i,j,k,l,m,P,S,Pl,l1,l2,l3,l4,opts;

> opts := op(select(type,[args],`=`));

> a:=tri(n,q);

> P[0]:=op(evalf([seq([a*cos(i*2*Pi/n)+I*a*sin(i*2*Pi/n),

>  a*cos((i+1)*2*Pi/n)+I*a*sin((i+1)*2*Pi/n)],i=1..n)]));

> Pl:=seq(seg(op(P[0][i]),color=black,opts),i=1..n):

>   for j from 1 to n do

>     l1:=seq(reflect(op(P[0][j]),P[0][i]),i=1..n);

>       for k from 1 to n do

>         l2:=seq(reflect(op(P[0][k]),l1[i]),i=1..n);

>           for l from 1 to n do

>             l3:=seq(reflect(op(P[0][l]),l2[i]),i=1..n);

>               for m from 1 to n do

>                 l4:=seq(reflect(op(P[0][m]),l3[i]),i=1..n);

>                 Pl:=Pl,seq(seg(op(l4[i]),color=black,opts),i=1..n):

>               od;
>          od;

>      od;

>  od;

> display([ddp(color=white,opts),Pl],axes=none);

> end:

 

pv2(5,4) est équivalent à pv1(5,4,5) mais le temps de calcul est 18 minutes.

·        Il semble que si q est pair les cotés de polygones adjacents sont sur les mêmes lignes hyperboliques. On défini donc une procédure pv1.1 qui remplace les cotés des polygones par les lignes hyperboliques qui les contiennent.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Conclusion :

 

·        Cette présentation n’est qu’un aperçu de la vaste théorie des pavages. Il est tout de même possible de représenter, dans certaines limites, de nombreux pavages du plan hyperbolique.

·        Au delà des aspects esthétiques bien connus depuis Escher, l’intérêt majeur des pavages est de permettre une approche très visuelle de la notion de groupe.

 

 

Retour à la page principale