Subversion Repositories wimsdev

Rev

Rev 4351 | Rev 8521 | 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
20 reyssat 2
 !goto proc
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
18
	slib_line=lines
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
26
!advance slib_H
27
slib_u=!line $slib_H of $slib_polyedre
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
 
60
 
61
slib_axe=!translate internal ; to $\
62
$ in $slib_axe
63
!distribute line $slib_axe into slib_ox, slib_oy, slib_oz
64
 
65
 
66
slib_SommetP =!translate internal ; to $\
67
$ in $slib_SommetP
68
slib_SommetP=!nonempty items $slib_SommetP
69
 
70
slib_S=!column 1 of $slib_SommetP
71
slib_S=!nonempty items $slib_S
72
slib_S=!sort numeric item $slib_S
73
slib_maxx=!item -1 of $slib_S
74
slib_minx=!item 1 of $slib_S
75
slib_rangex=$[$slib_maxx-($slib_minx)]
76
slib_S=!column 2 of $slib_SommetP
77
slib_S=!nonempty items $slib_S
78
slib_S=!sort numeric item $slib_S
79
slib_S=!sort numeric item $slib_S
80
slib_maxy=!item -1 of $slib_S
81
slib_miny=!item 1 of $slib_S
82
slib_rangey=$[$slib_maxy-($slib_miny)]
83
 
84
slib_range=$[max($slib_rangex,$slib_rangey)*0.7]
85
slib_rangex1=$[($slib_maxx+($slib_minx))/2 - $slib_range]
86
slib_rangex2=$[($slib_maxx+($slib_minx))/2 + $slib_range]
87
slib_rangey1=$[($slib_maxy+($slib_miny))/2 - $slib_range]
88
slib_rangey2=$[($slib_maxy+($slib_miny))/2 + $slib_range]
89
 
90
!if 0 isin $slib_option
91
  slib_out=xrange $slib_rangex1,$slib_rangex2\
92
yrange $slib_rangey1,$slib_rangey2
93
!else
94
  slib_out = $slib_rangex1,$slib_rangex2,$slib_rangey1,$slib_rangey2
95
!endif
96
 
97
slib_out=$slib_out\
98
arrow 0,0,$slib_ox,8,black\
99
text black,$slib_ox,medium,x\
100
arrow 0,0,$slib_oy,8,black\
101
text black,$slib_oy,medium,y\
102
arrow 0,0,$slib_oz,8,black\
103
text black,$slib_oz,medium,z
104
 
105
!for slib_j = 1 to $slib_S_cnt
106
  slib_S=!line $slib_j of $slib_SommetP
107
  slib_out=$slib_out\
108
  disk  $slib_S, 8,red
109
!next slib_j
110
 
111
!for slib_j = 1 to $slib_A_cnt
112
  slib_S1 = !line $slib_j  of $slib_arete
113
  slib_S2= !word 2 of $slib_S1
114
  slib_S1= !word 1 of $slib_S1
115
  slib_S1=$[$slib_S1+1]
116
  slib_S2=$[$slib_S2+1]
117
  slib_S1=!line $slib_S1 of $slib_SommetP
118
  slib_S2=!line $slib_S2 of $slib_SommetP
7692 bpr 119
 
20 reyssat 120
  slib_out=$slib_out\
121
  $slib_line red, $slib_S1, $slib_S2
122
!next slib_j
123
 
124
slib_out =!nonempty line $slib_out
125
 
126
slib_out=[$slib_out],[$slib_SommetP]