Subversion Repositories wimsdev

Rev

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]