Rev 13593 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
981 | bpr | 1 | !if $wims_read_parm!=slib_header |
13593 | bpr | 2 | !goto proc |
20 | reyssat | 3 | !endif |
4 | |||
4351 | bpr | 5 | slib_author=Bernadette, Perrin-Riou |
3265 | bpr | 6 | slib_require=pari |
20 | reyssat | 7 | |
8 | !exit |
||
9 | |||
10 | :proc |
||
11 | |||
12 | !distribute item $wims_read_parm into slib_polyedre,slib_phi,slib_theta,slib_size,slib_G,slib_option |
||
13 | slib_G=!declosing $slib_G |
||
14 | |||
15 | !if d isin $slib_option |
||
16 | slib_line=dlines |
||
17 | !else |
||
8521 | bpr | 18 | slib_line=polyline |
20 | reyssat | 19 | !endif |
20 | |||
21 | slib_polyedre=!record 0 of data/polyedre_off/$slib_polyedre.off |
||
22 | slib_H=1 |
||
23 | slib_u=!line 1 of $slib_polyedre |
||
24 | slib_nom=!replace internal # by $empty in $slib_u |
||
25 | !while # isin $slib_u |
||
13593 | bpr | 26 | !advance slib_H |
27 | slib_u=!line $slib_H of $slib_polyedre |
||
20 | reyssat | 28 | !endwhile |
29 | |||
30 | !distribute word $slib_u into slib_S_cnt, slib_F_cnt, slib_A_cnt |
||
31 | |||
32 | slib_sommet=!line $[$slib_H+1] to $[$slib_H+$slib_S_cnt] of $slib_polyedre |
||
33 | |||
34 | |||
35 | slib_sommet=!nonempty lines $slib_sommet |
||
36 | |||
37 | slib_arete=!line $[$slib_H+$slib_S_cnt+$slib_F_cnt+1] to $[$slib_H+$slib_S_cnt+$slib_F_cnt+$slib_A_cnt] of $slib_polyedre |
||
38 | slib_arete=!nonempty line $slib_arete |
||
39 | slib_arete=!nonempty line $slib_arete |
||
40 | |||
41 | slib_sommet=!nonempty lines $slib_sommet |
||
42 | slib_sommet=!replace internal $\ |
||
43 | $ by ; in $slib_sommet |
||
44 | slib_sommet=!singlespace $slib_sommet |
||
45 | |||
46 | slib_sommet=!words2items $slib_sommet |
||
47 | slib_sommet =!replace internal ;, by ; in $slib_sommet |
||
48 | |||
49 | slib_Sommet=!exec pari $slib_size*Mat([$slib_sommet]~) |
||
50 | |||
51 | slib_SommetP=!exec pari slib_G=Vec([$slib_G]);M = Mat([$slib_Sommet]);\ |
||
52 | T=matrix(3,$slib_S_cnt,i,j,slib_G[i]+0.5);\ |
||
53 | slib_a=cos($slib_phi); slib_b=sin($slib_phi); slib_c=cos($slib_theta); slib_d=sin($slib_theta);\ |
||
54 | P = Mat([slib_a*slib_c,-slib_d,-slib_b*slib_c;slib_a*slib_d,slib_c,-slib_b*slib_d;slib_b,0,slib_a]);\ |
||
55 | vecextract(mattranspose(P^(-1)*M+T),[2,3]) |
||
56 | |||
57 | slib_axe=!exec pari vecextract(mattranspose( $slib_size*P^(-1)+matrix(3,3,i,j,slib_G[i]+0.5)),[2,3]) |
||
58 | |||
59 | slib_axe=!translate internal ; to $\ |
||
60 | $ in $slib_axe |
||
61 | !distribute line $slib_axe into slib_ox, slib_oy, slib_oz |
||
62 | |||
63 | |||
64 | slib_SommetP =!translate internal ; to $\ |
||
65 | $ in $slib_SommetP |
||
66 | slib_SommetP=!nonempty items $slib_SommetP |
||
67 | |||
68 | slib_S=!column 1 of $slib_SommetP |
||
69 | slib_S=!nonempty items $slib_S |
||
70 | slib_S=!sort numeric item $slib_S |
||
71 | slib_maxx=!item -1 of $slib_S |
||
72 | slib_minx=!item 1 of $slib_S |
||
73 | slib_rangex=$[$slib_maxx-($slib_minx)] |
||
74 | slib_S=!column 2 of $slib_SommetP |
||
75 | slib_S=!nonempty items $slib_S |
||
76 | slib_S=!sort numeric item $slib_S |
||
77 | slib_S=!sort numeric item $slib_S |
||
78 | slib_maxy=!item -1 of $slib_S |
||
79 | slib_miny=!item 1 of $slib_S |
||
80 | slib_rangey=$[$slib_maxy-($slib_miny)] |
||
81 | |||
82 | slib_range=$[max($slib_rangex,$slib_rangey)*0.7] |
||
83 | slib_rangex1=$[($slib_maxx+($slib_minx))/2 - $slib_range] |
||
84 | slib_rangex2=$[($slib_maxx+($slib_minx))/2 + $slib_range] |
||
85 | slib_rangey1=$[($slib_maxy+($slib_miny))/2 - $slib_range] |
||
86 | slib_rangey2=$[($slib_maxy+($slib_miny))/2 + $slib_range] |
||
87 | |||
88 | !if 0 isin $slib_option |
||
89 | slib_out=xrange $slib_rangex1,$slib_rangex2\ |
||
90 | yrange $slib_rangey1,$slib_rangey2 |
||
91 | !else |
||
92 | slib_out = $slib_rangex1,$slib_rangex2,$slib_rangey1,$slib_rangey2 |
||
93 | !endif |
||
94 | |||
95 | slib_out=$slib_out\ |
||
96 | arrow 0,0,$slib_ox,8,black\ |
||
97 | text black,$slib_ox,medium,x\ |
||
98 | arrow 0,0,$slib_oy,8,black\ |
||
99 | text black,$slib_oy,medium,y\ |
||
100 | arrow 0,0,$slib_oz,8,black\ |
||
101 | text black,$slib_oz,medium,z |
||
102 | |||
103 | !for slib_j = 1 to $slib_S_cnt |
||
104 | slib_S=!line $slib_j of $slib_SommetP |
||
105 | slib_out=$slib_out\ |
||
106 | disk $slib_S, 8,red |
||
107 | !next slib_j |
||
108 | |||
109 | !for slib_j = 1 to $slib_A_cnt |
||
110 | slib_S1 = !line $slib_j of $slib_arete |
||
111 | slib_S2= !word 2 of $slib_S1 |
||
112 | slib_S1= !word 1 of $slib_S1 |
||
113 | slib_S1=$[$slib_S1+1] |
||
114 | slib_S2=$[$slib_S2+1] |
||
115 | slib_S1=!line $slib_S1 of $slib_SommetP |
||
116 | slib_S2=!line $slib_S2 of $slib_SommetP |
||
7692 | bpr | 117 | |
20 | reyssat | 118 | slib_out=$slib_out\ |
119 | $slib_line red, $slib_S1, $slib_S2 |
||
120 | !next slib_j |
||
121 | |||
122 | slib_out =!nonempty line $slib_out |
||
123 | |||
124 | slib_out=[$slib_out],[$slib_SommetP] |