Subversion Repositories wimsdev

Rev

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 la tuile\
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 type=, option (mots) : size= color=[] html/url fill depl= type= alt
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 de type regular.
12
  associé à un polygone tangentiel ou régulier.
13
slib_comment=La forme de la tuile est spécifiée de la manière suivante \
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
  (les d_i sont des entiers supérieurs à 3): les angles du polygone sont la suite des \
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
    2*pi/d_1, ..., 2*pi/d_n et le polygone est un polygone tangentiel, c'est-à-dire un\
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
   Ce pavage existe si les d_i sont pairs et pas toujours si ce n'est pas le cas ...\
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
  Si le type est <span class=tt">"regular"</span>, deux paramètres suffisent,\
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=[8,8,4,8],0.01,html color=blue\
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.01,html\
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 $slib_type=
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 $slib_type issametext regular
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 $slib_type
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
!if $(slib_header_$slib_gpprog)=
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
!endif
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 wwww=catalan([$slib_pqr],$slib_bound,$slib_depl)[1];default(realprecision,3);wims_export(wwww)
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 $slib_hyptiling
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 slib_som, slib_face
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
slib_facecnt=!rowcnt $slib_face
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 slib_ff=$(slib_face[$slib_k;])
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 slib_pol1=fhyppolygon
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 slib_tmp=!replace internal ; by , in $slib_pol1 $(slib_col),$(slib_som[$(slib_ff[2..$(slib_ff[1])+1]);])
153
  !set slib_tmp=!append item $(slib_som[$(slib_ff[2..$(slib_ff[1])+1]);]) to $slib_tmp
117
  !set slib_col=black
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
$slib_dessin
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