Rev 18522 | Rev 18530 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 18522 | Rev 18529 | ||
---|---|---|---|
Line 2... | Line 2... | ||
2 | !goto proc |
2 | !goto proc |
3 | !endif |
3 | !endif |
4 | slib_title=Pavage hyperbolique du disque de Poincaré |
4 | slib_title=Pavage hyperbolique du disque de Poincaré |
5 | slib_author=Bernadette, Perrin-Riou |
5 | slib_author=Bernadette, Perrin-Riou |
6 | slib_parms=3\ |
6 | slib_parms=3\ |
7 | ,vecteur représentant les paramètres de |
7 | ,vecteur représentant les paramètres de configuration du pavage\ |
8 | 0.01,eps\ |
8 | 0.01,eps\ |
9 | size=600 color=[black,white] depl=0 |
9 | size=600 color=[black,white] depl=0 type=1, option (mots) : size= color=[] html/url fill depl= type= alt |
10 | 10 | ||
11 | slib_out=dessin d'un pavage hyperbolique ou code ou url selon les cas \ |
11 | slib_out=dessin d'un pavage hyperbolique ou code ou url selon les cas \ |
12 | associé à un polygone tangentiel ou |
12 | associé à un polygone tangentiel ou régulier. |
13 |
|
13 | slib_comment=Les pavages considérés sont <ul><li>cas de type 1:\ |
- | 14 | transitifs sur l'ensemble des polygones (faces) et le premier paramètre est\ |
|
- | 15 | la configuration de faces [d_1, ... , d_n],\ |
|
- | 16 | c'est-à-dire la suite des types de faces\ |
|
- | 17 | (nombre de sommets) pour chacun des sommets d'une face (pavage de Catalan);\ |
|
- | 18 | </li><li>\ |
|
14 |
|
19 | cas de type 2: transitifs sur l'ensemble des sommets et le premier paramètre est\ |
- | 20 | la configuration de sommets [d_1, ... , d_n],\ |
|
- | 21 | c'est-à-dire la suite des types de faces (nombre de sommets) ayant un sommet commun.\ |
|
- | 22 | </li></ul>\ |
|
15 |
|
23 | Dans le premier cas, la tuile de base est un polygone tangentiel\ |
16 | polygone convexe admettant un cercle inscrit |
24 | (polygone convexe admettant un cercle inscrit) dont les angles\ |
- | 25 | sont la suite des 2*pi/d_1, ..., 2*pi/d_n.\ |
|
17 |
|
26 | Dans le deuxième cas, le pavage est dual du pavage de type 1 de configuration de faces\ |
- | 27 | [d_1, ... , d_n].<br>\ |
|
18 |
|
28 | Dans le cas <span class=tt">"regular"</span>, deux paramètres suffisent,\ |
19 | le polygone est un polygone à d_1 côtés égaux et d_1 angles égaux à 2*pi/d_2.\ |
29 | le polygone est un polygone à d_1 côtés égaux et d_1 angles égaux à 2*pi/d_2.<br>\ |
- | 30 | Ces pavages existent si sum_i=1^n 1/d_i<(n-2)/2 et si les d_i sont pairs.\ |
|
- | 31 | Il semble qu'on puisse affaiblir cette deuxième condition en supposant que\ |
|
- | 32 | pour tout i et j, d_i est pair ou d_{i-j}=d_{i+j}.<br>\ |
|
20 | Le pavage (qui est théoriquement infini) est limité au cercle de rayon 1-eps (eps>0.04).\ |
33 | Le pavage (qui est théoriquement infini) est limité au cercle de rayon 1-eps (eps>0.04).\ |
21 | Cependant, le nombre de polygones dessinés est limité à 500.\ |
34 | Cependant, le nombre de polygones dessinés est limité à 500.\ |
22 | Si eps est un entier, seules les esp premières tuiles sont dessinées. |
35 | Si eps est un entier, seules les esp premières tuiles sont dessinées.\ |
- | 36 | <br>\ |
|
- | 37 | L'option depl change le centrage initial du polygone de base: entre autre,\ |
|
- | 38 | depl=1: le centre du polygone de départ est 0,\ |
|
- | 39 | depl=0 le cercle est tangent au point 0 au polygone. |
|
- | 40 | ||
- | 41 | type=1: catalan |
|
- | 42 | type=2: dual de catalan |
|
- | 43 | type=3: les deux |
|
23 | 44 | ||
24 | !!!<br>On peut appliquer la transformation de Moebius z->(a*z+b)/(\bar{b}z+\bar{a})\ |
45 | !!!<br>On peut appliquer la transformation de Moebius z->(a*z+b)/(\bar{b}z+\bar{a})\ |
25 | !!!codé par [a,b,0] ou z->(a*\bar{z}+b)/(\bar{b}\bar{z}+\bar{a}) codé par [a,b,1]\ |
46 | !!!codé par [a,b,0] ou z->(a*\bar{z}+b)/(\bar{b}\bar{z}+\bar{a}) codé par [a,b,1]\ |
26 | !!!avec |a|>|b|; elle envoie 0 sur b/\bar{a} et le point 1 de l'horizon sur\ |
47 | !!!avec |a|>|b|; elle envoie 0 sur b/\bar{a} et le point 1 de l'horizon sur\ |
27 | !!!a/\bar{a}. |
48 | !!!a/\bar{a}. |
28 | slib_example=[ |
49 | slib_example=[4,8,10],0.1,html type=1\ |
- | 50 | [4,8,10],0.01,html color=blue depl=1\ |
|
29 | [4,8,10],0. |
51 | [4,8,10],0.01,html color=blue type=2\ |
- | 52 | [8,8,4,8],0.01,html color=blue type=1\ |
|
- | 53 | [8,8,4,8],0.01,html color=blue type=2\ |
|
30 | [4,8,6,4,6,6],0.01,html\ |
54 | [4,8,6,4,6,6],0.01,html\ |
31 | [8,8,4,8],0.01,html color=blue\ |
- | |
32 | [34,5,34],0.1,html fill=[1]\ |
55 | [34,5,34],0.1,html fill=[1]\ |
33 | [6,8,10],0.1,html color=[blue,grey] fill\ |
56 | [6,8,10],0.1,html color=[blue,grey] fill\ |
34 | [6,8,10],0.1,color=blue html depl=0.5+I*0.5\ |
- | |
35 | [6,8,10],6,html color=blue\ |
- | |
36 | [5,8,3,8],0.04,color=black html\ |
- | |
37 | [5,8,3,8],0.04,color=black html depl=-0.5+I*0.5\ |
- | |
38 | [6,8,10],0.1,html fill=[1,5,7]\ |
- | |
39 | [34,5,34],0.1,html fill=[1]\ |
- | |
40 | [5,8],0.01,html color=black type=regular\ |
- | |
41 | [4,8],0.01,html color=black type=regular\ |
- | |
42 | [6,8,10],0.1,html fill=[1,5,7]\ |
57 | [6,8,10],0.1,html fill=[1,5,7]\ |
43 | [4,8,9,8,6],0.01,html |
58 | [4,8,9,8,6],0.01,html |
44 | !exit |
59 | !exit |
45 | :proc |
60 | :proc |
46 | 61 | ||
47 | !reset slib_Test slib_type slib_bound slib_size slib_color slib_dessin slib_dessin1 slib_dessin2 slib_dessin3 slib_depl slib_fill |
62 | !reset slib_Test slib_type slib_bound slib_size slib_color slib_dessin slib_dessin1 slib_dessin2 slib_dessin3 slib_depl slib_fill slib_dual |
48 | !distribute items $wims_read_parm into slib_data,slib_bound,slib_option |
63 | !distribute items $wims_read_parm into slib_data,slib_bound,slib_option |
49 | !set slib_gpprog=hyptiling |
64 | !set slib_gpprog=hyptiling |
50 | !if $slib_bound<0.01 |
65 | !if $slib_bound<0.01 |
51 | !!reset slib_bound |
66 | !!reset slib_bound |
52 | !endif |
67 | !endif |
Line 54... | Line 69... | ||
54 | !default slib_bound=0.01 |
69 | !default slib_bound=0.01 |
55 | !set slib_size=!getopt size in $slib_option |
70 | !set slib_size=!getopt size in $slib_option |
56 | !default slib_size=600 |
71 | !default slib_size=600 |
57 | !set slib_color=!getopt color in $slib_option |
72 | !set slib_color=!getopt color in $slib_option |
58 | !set slib_color=!declosing $slib_color |
73 | !set slib_color=!declosing $slib_color |
- | 74 | !set slib_type=!getopt type in $slib_option |
|
- | 75 | !default slib_type=1 |
|
- | 76 | !if $slib_type=1 |
|
59 | !if fill iswordof $slib_option |
77 | !if fill iswordof $slib_option |
60 | !set slib_pol=fhyppolygon |
78 | !set slib_pol=fhyppolygon |
61 | !default slib_color=black,white |
79 | !default slib_color=black,white |
62 | !else |
80 | !else |
63 | !set slib_pol=hyppolygon |
81 | !set slib_pol=hyppolygon |
- | 82 | !default slib_color=black |
|
- | 83 | !endif |
|
- | 84 | !endif |
|
- | 85 | !if $slib_type=2 |
|
- | 86 | !set slib_pol=hyprays |
|
64 | !default slib_color=black,black |
87 | !default slib_color=black,black |
65 | !endif |
88 | !endif |
- | 89 | ||
66 | !set slib_color=$slib_color,$(slib_color[1]) |
90 | !set slib_color=$slib_color,$(slib_color[1]) |
67 | !set slib_color=$(slib_color[1,2]) |
91 | !set slib_color=$(slib_color[1,2]) |
68 | !set slib_fill=!getopt fill in $slib_option |
92 | !set slib_fill=!getopt fill in $slib_option |
69 | !set slib_fill=!declosing $slib_fill |
93 | !set slib_fill=!declosing $slib_fill |
70 | !set slib_type=!getopt type in $slib_option |
94 | !set slib_type=!getopt type in $slib_option |
71 | !set slib_depl=!getopt depl in $slib_option |
95 | !set slib_depl=!getopt depl in $slib_option |
72 | !default slib_depl=0 |
96 | !default slib_depl=0 |
- | 97 | !default slib_type=1 |
|
73 | !set slib_pqr=!declosing $slib_data |
98 | !set slib_pqr=!declosing $slib_data |
74 | !set slib_pqr=!exec pari [$slib_pqr] |
99 | !set slib_pqr=!exec pari [$slib_pqr] |
75 | !if |
100 | !if regular notin $slib_option |
76 | !set slib_n=!itemcnt $slib_pqr |
101 | !set slib_n=!itemcnt $slib_pqr |
77 | !set slib_testexist=!exec pari a=[$slib_pqr];test=vecsum(vector($slib_n,i,1/a[i]))>=($slib_n-2)/2;a=concat(a,a[1]);for(i=2,$slib_n,if(a[i]%2==1, test+=a[i-1]!=a[i+1])); test |
102 | !set slib_testexist=!exec pari a=[$slib_pqr];test=vecsum(vector($slib_n,i,1/a[i]))>=($slib_n-2)/2;a=concat(a,a[1]);for(i=2,$slib_n,if(a[i]%2==1, test+=a[i-1]!=a[i+1])); test |
78 | !if $slib_testexist>0 |
103 | !if $slib_testexist>0 |
79 | !set slib_out=error $slib_testexist>0 |
104 | !set slib_out=error $slib_testexist>0 |
80 | !exit |
105 | !exit |
81 | !endif |
106 | !endif |
82 | !endif |
107 | !endif |
83 | !if |
108 | !if regular isin $slib_option |
84 | !if $[1/$(slib_pqr[1])+1/$(slib_pqr[2])]>=1/2 |
109 | !if $[1/$(slib_pqr[1])+1/$(slib_pqr[2])]>=1/2 |
85 | slib_out=Error |
110 | slib_out=Error regular |
86 | !exit |
111 | !exit |
87 | !endif |
112 | !endif |
88 | !set slib_pqr=!makelist $(slib_pqr[2]) for x=1 to $(slib_pqr[1]) |
113 | !set slib_pqr=!makelist $(slib_pqr[2]) for x=1 to $(slib_pqr[1]) |
89 | !endif |
114 | !endif |
90 | !set slib_testint=!exec pari t=[$slib_pqr]; t-round(t)==0 |
115 | !set slib_testint=!exec pari t=[$slib_pqr]; t-round(t)==0 |
91 | !if $slib_testint!=1 |
116 | !if $slib_testint!=1 |
92 | slib_out=Error integers |
117 | slib_out=Error integers |
93 | !exit |
118 | !exit |
94 | !endif |
119 | !endif |
95 |
|
120 | !!if $(slib_header_$slib_gpprog)= |
96 | !readproc gp/$slib_gpprog.gp |
121 | !readproc gp/$slib_gpprog.gp |
97 | !set slib_hyptiling=!exec pari tikz=0;$(slib_header_$slib_gpprog); |
122 | !set slib_hyptiling=!exec pari tikz=0;$(slib_header_$slib_gpprog); |
98 |
|
123 | !!endif |
- | 124 | slib_depl:0 pas au centre |
|
- | 125 | 1 au centre |
|
- | 126 | ||
- | 127 | 1-> 1,2 |
|
- | 128 | 2-> 3,4 |
|
99 | !set slib_hyptiling=!exec pari |
129 | !set slib_hyptiling=!exec pari wwww=wims_catalan([$slib_pqr],$slib_bound,$slib_depl,$slib_type);default(realprecision,3);wwww |
100 | !set slib_data=!trim |
130 | !set slib_data=!trim $(slib_hyptiling[2*$slib_type-1,2*$slib_type]) |
101 | !! depends only on $slib_data -- could be an "offhypdraw" |
131 | !! depends only on $slib_data -- could be an "offhypdraw" |
102 | !set slib_data=!declosing $slib_data |
132 | !set slib_data=!declosing $slib_data |
103 | !distribute items $slib_data into |
133 | !distribute items $slib_data into slib_som,slib_face |
- | 134 | ||
104 | slib_som=!declosing $slib_som |
135 | slib_som=!declosing $slib_som |
105 | slib_face=!declosing $slib_face |
136 | slib_face=!declosing $slib_face |
106 |
|
137 | slib_facecnt=!itemcnt $slib_face |
107 | !for slib_k=1 to $slib_facecnt |
138 | !for slib_k=1 to $slib_facecnt |
108 | !reset slib_tmp slib_test slib_col |
139 | !reset slib_tmp slib_test slib_col |
109 | !set |
140 | !set slib_ff=!declosing $(slib_face[$slib_k]) |
- | 141 | !if $slib_type=2 |
|
- | 142 | !set slib_ffcnt=!itemcnt $slib_ff |
|
- | 143 | !set slib_ff=$slib_ffcnt,$slib_ff,1 |
|
- | 144 | !endif |
|
- | 145 | !set slib_ffcnt=!itemcnt $slib_ff |
|
110 | !set slib_col=$(slib_color[1+$(slib_ff[$[$(slib_ff[1])+2]])]) |
146 | !set slib_col=$(slib_color[1+$(slib_ff[$[$(slib_ff[1])+2]])]) |
111 | !if $slib_k isin $slib_fill |
147 | !if $slib_k isin $slib_fill |
112 | !set |
148 | !set slib_pol1=f$slib_pol |
113 | !else |
149 | !else |
114 | !set slib_pol1=$slib_pol |
150 | !set slib_pol1=$slib_pol |
115 | !endif |
151 | !endif |
- | 152 | !set slib_tmp=$slib_pol1 $(slib_col) |
|
116 | !set |
153 | !set slib_tmp=!append item $(slib_som[$(slib_ff[2..$(slib_ff[1])+1]);]) to $slib_tmp |
117 | !set |
154 | !set slib_tmp=!replace internal ; by , in $slib_tmp |
118 | !if $slib_k<500 |
155 | !if $slib_k<500 |
119 | !set slib_dessin=!append line $slib_tmp to $slib_dessin |
156 | !set slib_dessin=!append line $slib_tmp to $slib_dessin |
120 | !else |
157 | !else |
121 | !goto out |
158 | !goto out |
122 | !if $slib_k<800 |
159 | !if $slib_k<800 |
Line 130... | Line 167... | ||
130 | !endif |
167 | !endif |
131 | !endif |
168 | !endif |
132 | :end |
169 | :end |
133 | !next |
170 | !next |
134 | :out |
171 | :out |
- | 172 | ||
135 | !set slib_range=-1,1 |
173 | !set slib_range=-1,1 |
136 | !set slib_out=xrange $slib_range\ |
174 | !set slib_out=xrange $slib_range\ |
137 | yrange $slib_range\ |
175 | yrange $slib_range\ |
138 | circles black,0,0,1\ |
176 | circles black,0,0,1\ |
139 |
|
177 | $slib_dessin\ |
140 | - | ||
141 | $slib_dessin1 |
178 | $slib_dessin1 |
- | 179 | ||
142 | $slib_dessin2\ |
180 | $slib_dessin2\ |
143 | $slib_dessin3 |
181 | $slib_dessin3 |
144 | 182 | ||
145 | !if url iswordof $slib_option or html iswordof $slib_option |
183 | !if url iswordof $slib_option or html iswordof $slib_option |
146 | !set insdraw_size=$slib_size,$slib_size |
184 | !set insdraw_size=$slib_size,$slib_size |