Pavages hyperboliques

Règles du forum
ATTENTION ! Il est demandé de ne déposer dans ce forum que des exemples en langage Asymptote
  • finalisés
  • que l'on pense intéressants et optimisés
  • et qui se rapportent au thème du forum.
Si certains exemples déposés donnent lieu à de nombreuses modifications, ils seront déplacés et remplacés par un nouveau sujet dans ce forum avec la ou les meilleures propositions.
Pour les demandes d'aide ... il y a un forum spécifique !
Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1512
Enregistré le : dim. 7 mars 2010, 14:50

Pavages hyperboliques

Message non lu par GM » lun. 5 juil. 2010, 21:27

Je lance un sujet sur le thème des "pavages hyperboliques" que je complèterai ensuite.

A l'origine de ce message, un mail de Patrick Fradin (le créateur de l'excellent TeXGraph) sur la liste Syracuse pour attirer notre attention sur ce site :

http://images.math.cnrs.fr/Ringworld.html

et ce que cela lui a inspiré :

http://melusine.eu.org/syracuse/texgraph/exemples/hpavages/

Pour arriver à ce magnifique résultat, la technique n'est pas simple... si vous avez tenté de comprendre le premier lien

et donc Patrick nous a écrit un magnifique document explicatif :

http://dl.dropbox.com/u/7335679/pavages ... liques.pdf

... dont je n'ai encore lu que le tout début et m'a donné envie de réaliser une première figure, en lien avec son document, pour illustrer ce qu'est une droite hyperbolique.

Figure asymptote 35ff61f8883c17c2a39813e93e42863b
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***

CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
  1. size(300);
  2. import geometry;
  3.  
  4. point pO=(0,0);
  5. real k=2;
  6. inversion inv=inversion(k,pO);
  7.  
  8. point pA=(1,0), pB=(.5,-.5),
  9. iA=inv*pA, iB=inv*pB;
  10.  
  11. circle c1=circle(inv),
  12. c2=circle(pA,pB,iA);
  13.  
  14. draw(c1,linewidth(bp)+blue);
  15. draw(c2,linewidth(bp)+red);
  16.  
  17. point[] uv=intersectionpoints(c1,c2);
  18. point u=uv[0], v=uv[1];
  19.  
  20. line Ou=line(pO,false, u),
  21. Ov=line(pO,false, v);
  22.  
  23. draw(pO--iA,1bp+dotted);
  24. draw(pO--iB,1bp+dotted);
  25.  
  26. draw(Ou^^Ov,dashed);
  27.  
  28. dot("$\Omega$",pO,SW);
  29. dot("$A$",pA,S,blue);
  30. dot("$A'$",iA,S,red);
  31. dot("$B$",pB,E,blue);
  32. dot("$B'$",iB,E,red);
  33. dot("$u$",u,SE,.5green);
  34. dot("$v$",v,NE,.5green);
  35.  
  36. draw("$\sqrt{|k|}$",pO--pO+sqrt(abs(k))*dir(90),blue,Arrow());
  37.  
  38. label("Cercle d'inversion de l'inversion de centre $\Omega$ et de rapport $k$",truepoint(N),N,blue);


Rappelons à propos de l'inversion :
Si \mathcal{E} désigne un espace affine euclidien, \Omega un point de \mathcal{E} et k un réel non nul, alors, pour tout point A de \mathcal{E} distinct de \Omega, il existe un unique point A' de \mathcal{E}, tel que :
  • \Omega, A et A' sont alignés ;
  • \overline{\Omega A}\times\overline{\Omega A'}=k
On appelle inversion de centre \Omega et de rapport k, l'application de \mathcal{E}\backslash\{\Omega\} dans lui-même qui à A associe A' sous les conditions précédentes.

et aussi que :
  • Le cercle d'inversion est le cercle de centre \Omega et de rapport \sqrt{|k|} est globalement invariant (invariant point par point lorsque k>0).
  • Deux points et leurs images sont cocycliques, sur un cercle orthogonal au cercle d'inversion.




Le plus dur reste à faire. :mrgreen:
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1512
Enregistré le : dim. 7 mars 2010, 14:50

Re: Pavages hyperboliques

Message non lu par GM » lun. 5 juil. 2010, 22:57

Un cas particulier de l'exemple précédent :

Figure asymptote 145dd8078547e6341ae9dd0079070fad
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***

CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
  1. size(300);
  2. import geometry;
  3. show(defaultcoordsys);
  4.  
  5. point pO=(0,0);
  6. real k=1;
  7. inversion inv=inversion(k,pO);
  8.  
  9. point pA=(.5,.1), pB=(.4,-.3),
  10. iA=inv*pA, iB=inv*pB;
  11.  
  12. circle c1=circle(inv),
  13. c2=circle(pA,pB,iA);
  14.  
  15. draw(c1,linewidth(bp)+blue);
  16.  
  17.  
  18. point[] uv=intersectionpoints(c1,c2);
  19. point u=uv[0], v=uv[1];
  20.  
  21. draw((path)arc(c2, v, u),2bp+red);
  22. draw((path)arc(c2, u, v),dashed+red);
  23.  
  24. line Ou=line(pO,false, u),
  25. Ov=line(pO,false, v);
  26.  
  27. draw(pO--iA,1bp+dotted);
  28. draw(pO--iB,1bp+dotted);
  29.  
  30. draw(Ou^^Ov,dashed);
  31.  
  32. dot("$a$",pA,S,blue);
  33. dot("$\frac1{\overline{a}}$",iA,N,red);
  34. dot("$b$",pB,E,blue);
  35. dot("$\frac1{\overline{b}}$",iB,S,red);
  36. dot("$u$",u,E,.5green);
  37. dot("$v$",v,N,.5green);
  38.  
  39. line tgu=tangent(c1,u), tgv=tangent(c1,v);
  40. draw(tgu^^tgv,.5green+dashed);
  41. dot("$c$",intersectionpoint(tgu,tgv),S);
  42.  
  43. label(scale(.8)*"Cercle d'inversion de l'inversion de centre $O$ et de rapport $k=1$",truepoint(N),N,blue);
  44. label("Inversion d'\'ecriture complexe $z'=\displaystyle\frac{1}{\overline{z}}$",truepoint(S),S);
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1512
Enregistré le : dim. 7 mars 2010, 14:50

Re: Pavages hyperboliques

Message non lu par GM » mar. 6 juil. 2010, 00:34

J'ai poursuivi un peu la lecture du document de Patrick (qui explique les notions utiles à la pratique du pavage hyperbolique),

et après avoir parlé de droites hyperboliques, il effectue un rappel sur la notion d'isométrie hyperbolique et en particulier, sur la notion de rotation hyperbolique.

Un exemple avec Asymptote :

Figure asymptote 3b461109d0c34c11204a7263eb0c5908
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***

CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
  1. size(300);
  2. import geometry;
  3. show(defaultcoordsys);
  4.  
  5. point pO=(0,0);
  6. real k=1, theta=120;
  7. inversion inv=inversion(k,pO);
  8.  
  9.  
  10. point pA=(.4,-.2), pB=(.7,.3), iA=inv*pA;
  11.  
  12. // T : z'=(z+a)/(1+conj(a)z)
  13. pair T(pair z) {return (z+pA)/(1+conj(pA)*z);}
  14. // T^{-1} : z=(z'-a)/(1-z'conj(a))
  15. pair rT(pair z) {return (z-pA)/(1-conj(pA)*z);}
  16.  
  17. // La rotation hyperbolique R(A,theta) est la composée de :
  18. // T^{-1}
  19. // suivie de rotation hyperbolique (et euclidienne !) R(0,theta)
  20. // suivie de T
  21. point pBp=T(rotate(theta)*rT(pB));
  22.  
  23. circle c1=circle(inv),
  24. c2=circle(pA,pB,iA),
  25. c3=circle(pA,pBp,iA);
  26.  
  27. draw(c1,linewidth(bp)+blue);
  28. clipdraw(c2, 0.8*red+dashed);
  29. clipdraw(c3, 0.8*red+dashed);
  30.  
  31. arc arc1=arc(c2,pB,pA), arc2=arc(c3,pA,pBp);
  32. draw(arc1,2bp+red);
  33. draw(arc2,2bp+red);
  34.  
  35. dot("$A(a)$",pA,SE,red);
  36. dot("$B(b)$",pB,E,blue);
  37. dot("$B'(b')$",pBp,S,blue);
  38.  
  39.  
  40. point pM=pA-.5dir(arc1,reltime(arc1,1)),
  41. pN=pA+.5dir(arc2,0);
  42. draw(pA--pM,red);
  43. draw(pA--pN,red);
  44. markangle("$\theta$",pM,pA,pN,grey);
  45.  
  46. label(scale(.8)*"Rotation hyperbolique de centre $A(a)$, d'angle $\theta$",truepoint(S),S);



La même figure mais avec une variante de code (qui exploite des matrices, comme évoquées dans le rappel qui suit) :

Figure asymptote 0635f845db2b3e1a085a81885fcf6804
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***

CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
  1. size(250);
  2. import geometry;
  3. show(defaultcoordsys);
  4.  
  5. point pO=(0,0);
  6. real k=1, theta=120;
  7. inversion inv=inversion(k,pO);
  8.  
  9. pair pA=(.4,-.2), pB=(.7,.3), iA=inv*pA;
  10. real theta=120;
  11.  
  12. pair[][] mat1={{1,-pA},{-conj(pA),1}},
  13. mat2={{rotate(theta/2)*I,0},{0,rotate(-theta/2)*I}},
  14. mat3={{1,pA},{conj(pA),1}},
  15. mat=mat3*mat2*mat1;
  16.  
  17. pair f(pair z) {return (mat[0][0]*z+mat[0][1])/(mat[1][0]*z+mat[1][1]);}
  18.  
  19. circle c1=circle(inv),
  20. c2=circle(pA,pB,iA),
  21. c3=circle(pA,f(pB),iA);
  22.  
  23. draw(c1,linewidth(bp)+blue);
  24. clipdraw(c2, 0.8*red+dashed);
  25. clipdraw(c3, 0.8*red+dashed);
  26.  
  27. arc arc1=arc(c2,pB,pA), arc2=arc(c3,pA,f(pB));
  28. draw(arc1,2bp+red);
  29. draw(arc2,2bp+red);
  30.  
  31. dot("$A(a)$",pA,SE,red);
  32. dot("$B(b)$",pB,E,blue);
  33. dot("$B'(b')$",f(pB),S,blue);
  34.  
  35.  
  36. point pM=pA-.5dir(arc1,reltime(arc1,1)),
  37. pN=pA+.5dir(arc2,0);
  38. draw(pA--pM,red);
  39. draw(pA--pN,red);
  40. markangle("$\theta$",pM,pA,pN,grey);
  41.  
  42. label(scale(.8)*"Rotation hyperbolique de centre $A(a)$, d'angle $\theta$",truepoint(S),S);


2010-07-06_021040.png
2010-07-06_021040.png (17.03 Kio) Vu 10269 fois


On se rapproche... toujours un peu plus... des premiers pavages hyperboliques. :)
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !

OG
V.I.P.
V.I.P.
Messages : 142
Enregistré le : dim. 7 mars 2010, 22:27

Re: Pavages hyperboliques

Message non lu par OG » mar. 6 juil. 2010, 09:54

Bonjour

As-tu regardé le paquet de géométrie hyperbolique de R. Bourquin ?
http://raoul.koalatux.ch/sites/hyperbol ... metry.html

Voir les exemples sur sa page.

O.G.

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1512
Enregistré le : dim. 7 mars 2010, 14:50

Re: Pavages hyperboliques

Message non lu par GM » mar. 6 juil. 2010, 11:33

OG a écrit :As-tu regardé le paquet de géométrie hyperbolique de R. Bourquin ?
http://raoul.koalatux.ch/sites/hyperbol ... metry.html

ahh, bein non... je ne savais pas que cela existait. :lol:
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !

Répondre