Rev 13593 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
4731 | bpr | 1 | !if $wims_read_parm!=slib_header |
13593 | bpr | 2 | !goto proc |
4731 | bpr | 3 | !endif |
4 | |||
5 | slib_author=Bernadette, Perrin-Riou |
||
8418 | bpr | 6 | slib_example=[0,0,0;0,0,2;0,0,3;1,1,2]\ |
7 | [0,0,0;0,0,1;0,0,2;0,1,2],,,[blue,blue],[0.01,0.01]\ |
||
8417 | bpr | 8 | [0,0,0;0,1,0;0,1,0;2,0,0],300,300,[red,red]\ |
9 | [0,0,0,2,3,3;1,3,1,1,1,1;1,3,3,3,1,1],300,300,[blue,green],,p\ |
||
10 | [0,0,0;0,0,1;0,0,2;1,0,2;2,0,2;0,1,2;0,1,3],300,300,[blue,green]\ |
||
11 | [0,0,0;0,0,1;0,0,2;1,0,2;2,0,2],300,300,[blue,green]\ |
||
4731 | bpr | 12 | [0,0,0;0,1,0;0,1,1;1,1,0;1,1,1;1,2,0]\ |
8417 | bpr | 13 | [0,0,0,2,2,4;1,1,4,5,2,1],300,300,[violet,purple],,p\ |
14 | [0,0,0,2,2,4;0,0,3,-5,-2,-3;1,1,4,1,2,1],300,300,,,p |
||
15 | [0,0,0,5,4,4;2,4,2,1,5,3],300,300,,,p\ |
||
16 | [0,0,0,5,4,4;2,4,2,1,5,1],500,500,,,p |
||
4731 | bpr | 17 | |
18 | !exit |
||
19 | |||
20 | :proc |
||
8417 | bpr | 21 | !reset slib_out slib_data slib_color |
22 | !distribute items $wims_read_parm into slib_d,slib_sizex,slib_sizey, slib_color,slib_width |
||
23 | slib_d=!declosing $slib_d |
||
4731 | bpr | 24 | slib_d=!rows2lines $slib_d |
25 | slib_dcnt=!linecnt $slib_d |
||
26 | slib_d=!lines2rows $slib_d |
||
8417 | bpr | 27 | |
28 | !default slib_color=[red,red] |
||
29 | !default slib_width=[0.01,0.03] |
||
8418 | bpr | 30 | !default slib_sizex=300 |
31 | !default slib_sizey=300 |
||
4731 | bpr | 32 | slib_bondcnt=0 |
8417 | bpr | 33 | slib_data=ATOM |
4731 | bpr | 34 | slib_b=!linecnt $slib_data |
35 | slib_cnt=0 |
||
8417 | bpr | 36 | !if $slib_id!= |
37 | !increase slib_id |
||
4731 | bpr | 38 | !endif |
8417 | bpr | 39 | !if $(wims_read_parm[7])!=$empty |
40 | slib_id=$(wims_read_parm[7]) |
||
41 | !endif |
||
42 | !if $slib_id= |
||
43 | slib_id=0 |
||
44 | !endif |
||
4731 | bpr | 45 | |
8417 | bpr | 46 | !if p iswordof $(wims_read_parm[6]) |
47 | !goto parallepipede |
||
48 | !endif |
||
4731 | bpr | 49 | |
50 | !for slib_n = 1 to $slib_dcnt |
||
13593 | bpr | 51 | slib_cube=$(slib_d[$slib_n;]) |
52 | slib_cube1=!items2words $slib_cube |
||
53 | slib_cube=!words2items $slib_cube1 |
||
54 | slib_cube=!nospace $slib_cube |
||
55 | slib_list=$(slib_data[;1]) |
||
56 | slib_new0=!positionof item c $slib_cube1 in $slib_list |
||
57 | !if $slib_new0= |
||
58 | slib_data=!append line c $slib_cube1 to $slib_data |
||
59 | slib_list=$(slib_data[;1]) |
||
60 | !increase slib_cnt |
||
61 | slib_new0=$slib_cnt |
||
8417 | bpr | 62 | !else |
13593 | bpr | 63 | slib_new0=$[$slib_new0-$slib_b] |
8417 | bpr | 64 | !endif |
13593 | bpr | 65 | slib_pos=$[$(slib_cube[1])+1] $[$(slib_cube[2])] $[$(slib_cube[3])] |
66 | slib_new1=!positionof item c $slib_pos in $slib_list |
||
67 | !if $slib_new1= |
||
68 | slib_data=!append line c $slib_pos,$slib_new0 to $slib_data |
||
69 | slib_list=$(slib_data[;1]) |
||
70 | !increase slib_cnt |
||
71 | slib_new1=$slib_cnt |
||
72 | !increase slib_bondcnt |
||
73 | !else |
||
74 | slib_new1=$[$slib_new1-$slib_b] |
||
75 | !endif |
||
76 | slib_pos=$[$(slib_cube[1])] $[$(slib_cube[2])+1] $[$(slib_cube[3])] |
||
77 | slib_new2=!positionof item c $slib_pos in $slib_list |
||
78 | !if $slib_new2= |
||
79 | slib_data=!append line c $slib_pos,$slib_new0 to $slib_data |
||
80 | slib_list=$(slib_data[;1]) |
||
81 | !increase slib_cnt |
||
82 | slib_new2=$slib_cnt |
||
83 | !increase slib_bondcnt |
||
84 | !else |
||
85 | slib_new2=$[$slib_new2-$slib_b] |
||
86 | !endif |
||
87 | slib_pos=$[$(slib_cube[1])] $[$(slib_cube[2])] $[$(slib_cube[3])+1] |
||
88 | slib_new3=!positionof item c $slib_pos in $slib_list |
||
89 | !if $slib_new3= |
||
90 | slib_data=!append line c $slib_pos,$slib_new0 to $slib_data |
||
91 | slib_list=$(slib_data[;1]) |
||
92 | !increase slib_cnt |
||
93 | slib_new3=$slib_cnt |
||
94 | !increase slib_bondcnt |
||
95 | !else |
||
96 | slib_new3=$[$slib_new3-$slib_b] |
||
97 | !endif |
||
98 | slib_pos=$[$(slib_cube[1])+1] $[$(slib_cube[2])+1] $[$(slib_cube[3])] |
||
99 | slib_new4=!positionof item c $slib_pos in $slib_list |
||
100 | !if $slib_new4= |
||
101 | slib_data=!append line c $slib_pos,$slib_new1,$slib_new2 to $slib_data |
||
102 | slib_list=$(slib_data[;1]) |
||
103 | !increase slib_cnt |
||
104 | slib_new4=$slib_cnt |
||
105 | slib_bondcnt=$[$slib_bondcnt+2] |
||
106 | !else |
||
107 | slib_new4=$[$slib_new4-$slib_b] |
||
108 | !endif |
||
109 | slib_pos=$[$(slib_cube[1])] $[$(slib_cube[2])+1] $[$(slib_cube[3])+1] |
||
110 | slib_new5=!positionof item c $slib_pos in $slib_list |
||
111 | !if $slib_new5= |
||
112 | slib_data=!append line c $slib_pos,$slib_new2,$slib_new3 to $slib_data |
||
113 | slib_list=$(slib_data[;1]) |
||
114 | !increase slib_cnt |
||
115 | slib_new5=$slib_cnt |
||
116 | slib_bondcnt=$[$slib_bondcnt+2] |
||
117 | !else |
||
118 | slib_new5=$[$slib_new5-$slib_b] |
||
119 | !endif |
||
120 | slib_pos=$[$(slib_cube[1])+1] $[$(slib_cube[2])] $[$(slib_cube[3])+1] |
||
121 | slib_new6=!positionof item c $slib_pos in $slib_list |
||
8417 | bpr | 122 | !if $slib_new6= |
13593 | bpr | 123 | slib_data=!append line c $slib_pos,$slib_new3,$slib_new1 to $slib_data |
124 | slib_list=$(slib_data[;1]) |
||
125 | !increase slib_cnt |
||
126 | slib_new6=$slib_cnt |
||
127 | slib_bondcnt=$[$slib_bondcnt+2] |
||
8417 | bpr | 128 | !else |
13593 | bpr | 129 | slib_new6=$[$slib_new6-$slib_b] |
8417 | bpr | 130 | !endif |
131 | slib_pos=$[$(slib_cube[1])+1] $[$(slib_cube[2])+1] $[$(slib_cube[3])+1] |
||
132 | slib_new7=!positionof item c $slib_pos in $slib_list |
||
133 | !if $slib_new7= |
||
13593 | bpr | 134 | slib_data=!append line c $slib_pos,$slib_new4,$slib_new5,$slib_new6 to $slib_data |
135 | slib_list=$(slib_data[;1]) |
||
136 | !increase slib_cnt |
||
137 | slib_new7=$slib_cnt |
||
138 | slib_bondcnt=$[$slib_bondcnt+3] |
||
8417 | bpr | 139 | !else |
13593 | bpr | 140 | slib_new7=$[$slib_new7-$slib_b] |
8417 | bpr | 141 | !endif |
4731 | bpr | 142 | !next |
143 | !goto end |
||
144 | :parallepipede |
||
8417 | bpr | 145 | !for slib_n = 1 to $slib_dcnt |
4731 | bpr | 146 | slib_step=$[sign($(slib_d[$slib_n;4]))],$[sign($(slib_d[$slib_n;5]))],$[sign($(slib_d[$slib_n;6]))] |
13593 | bpr | 147 | !for slib_i=0 to $(slib_d[$slib_n;4]) step $(slib_step[1]) |
148 | !for slib_j = 0 to $(slib_d[$slib_n;5]) step $(slib_step[2]) |
||
149 | !for slib_h = 0 to $(slib_d[$slib_n;6]) step $(slib_step[3]) |
||
150 | slib_Neig= |
||
151 | slib_list= $(slib_data[;1]) |
||
152 | !reset slib_neig |
||
153 | !if c $[$(slib_d[$slib_n;1])+$slib_i] $[$(slib_d[$slib_n;2])+$slib_j] $[$(slib_d[$slib_n;3])+$slib_h] isitemof $slib_list |
||
154 | !goto break |
||
155 | !endif |
||
156 | slib_neig=!positionof item c $[$(slib_d[$slib_n;1]) + $slib_i] $[$(slib_d[$slib_n;2])+$slib_j] $[$(slib_d[$slib_n;3])+$slib_h+1] in $slib_list |
||
157 | !if $slib_neig > $slib_b |
||
158 | slib_Neig=!append item $[$slib_neig-$slib_b] to $slib_Neig |
||
159 | !endif |
||
160 | !reset slib_neig |
||
161 | slib_neig=!positionof item c $[$(slib_d[$slib_n;1]) + $slib_i] $[$(slib_d[$slib_n;2])+$slib_j] $[$(slib_d[$slib_n;3])+$slib_h-1] in $slib_list |
||
162 | !if $slib_neig > $slib_b |
||
163 | slib_Neig=!append item $[$slib_neig-$slib_b] to $slib_Neig |
||
164 | !endif |
||
165 | !reset slib_neig |
||
166 | slib_neig=!positionof item c $[$(slib_d[$slib_n;1])+$slib_i-1] $[$(slib_d[$slib_n;2])+$slib_j] $[$(slib_d[$slib_n;3])+$slib_h] in $slib_list |
||
167 | !ifval $slib_neig > $slib_b |
||
14624 | bpr | 168 | slib_Neig=!append item $[$slib_neig-$slib_b] to $slib_Neig |
13593 | bpr | 169 | !endif |
170 | !reset slib_neig |
||
4731 | bpr | 171 | slib_neig=!positionof item c $[$(slib_d[$slib_n;1])+$slib_i +1] $[$(slib_d[$slib_n;2])+$slib_j] $[$(slib_d[$slib_n;3])+$slib_h] in $slib_list |
172 | !ifval $slib_neig > $slib_b |
||
13593 | bpr | 173 | slib_Neig=!append item $[$slib_neig-$slib_b] to $slib_Neig |
174 | !endif |
||
4731 | bpr | 175 | !reset slib_neig |
176 | slib_neig=!positionof item c $[$(slib_d[$slib_n;1])+$slib_i] $[$(slib_d[$slib_n;2])+$slib_j+1] $[$(slib_d[$slib_n;3])+$slib_h] in $slib_list |
||
177 | !ifval $slib_neig > $slib_b |
||
14624 | bpr | 178 | slib_Neig=!append item $[$slib_neig-$slib_b] to $slib_Neig |
13593 | bpr | 179 | !endif |
180 | !reset slib_neig |
||
14624 | bpr | 181 | slib_neig=!positionof item c $[$(slib_d[$slib_n;1])+$slib_i] $[$(slib_d[$slib_n;2])+$slib_j-1] $[$(slib_d[$slib_n;3])+$slib_h] in $slib_list |
13593 | bpr | 182 | !ifval $slib_neig > $slib_b |
183 | slib_Neig=!append item $[$slib_neig-$slib_b] to $slib_Neig |
||
184 | !endif |
||
185 | slib_Neig=!singlespace $slib_Neig |
||
186 | slib_Neig=!listuniq $slib_Neig |
||
187 | slib_data=!append line c $[$(slib_d[$slib_n;1])+$slib_i] $[$(slib_d[$slib_n;2])+$slib_j] $[$(slib_d[$slib_n;3])+$slib_h], $slib_Neig\ |
||
14624 | bpr | 188 | to $slib_data |
13593 | bpr | 189 | slib_cnt=!itemcnt $slib_Neig |
190 | slib_bondcnt=$[$slib_cnt + $slib_bondcnt] |
||
191 | !reset slib_Neig |
||
192 | :break |
||
193 | !next |
||
4731 | bpr | 194 | !next |
195 | !next |
||
196 | !next |
||
197 | :end |
||
198 | !if $slib_bondcnt >= 500 |
||
199 | slib_out=too_big |
||
200 | !exit |
||
201 | !endif |
||
202 | |||
203 | slib_data=!items2words $slib_data |
||
8417 | bpr | 204 | slib_data_cnt=!linecnt $slib_data |
205 | !reset slib_vertex slib_edge slib_edge_cnt slib_face slib_face_cnt slib_arete slib_vertex_cnt |
||
206 | slib_vertex_cnt=0 |
||
4731 | bpr | 207 | |
8417 | bpr | 208 | !for slib_j=2 to $slib_data_cnt |
13593 | bpr | 209 | slib_line=!line $slib_j of $slib_data |
210 | slib_point=!word 2 to 4 of $slib_line |
||
211 | slib_vertex=!append line $slib_point to $slib_vertex |
||
212 | slib_e=!word 5 to -1 of $slib_line |
||
213 | slib_e=!words2items $slib_e |
||
214 | slib_n=!itemcnt $slib_e |
||
215 | !if $slib_n>0 |
||
216 | slib_e=!exec pari [$slib_e]-vector($slib_n,i,1) |
||
217 | !endif |
||
218 | !if $slib_e!= |
||
219 | slib_face=!append line $[$slib_n+1] $slib_vertex_cnt $slib_e to $slib_face |
||
220 | !increase slib_face_cnt |
||
8417 | bpr | 221 | slib_e=!words2items $slib_e |
13593 | bpr | 222 | !for slib_m=1 to $[$slib_n] |
223 | slib_edge=!append line $slib_vertex_cnt $[$(slib_e[$[$slib_m]])] to $slib_edge |
||
224 | !increase slib_edge_cnt |
||
225 | !next |
||
226 | !endif |
||
227 | !increase slib_vertex_cnt |
||
8417 | bpr | 228 | !next |
229 | slib_edge=!replace internal , by $ $ in $slib_edge |
||
230 | slib_face=!replace internal , by $ $ in $slib_face |
||
231 | slib_vertex=!nonempty lines $slib_vertex |
||
232 | slib_data=$[$slib_vertex_cnt] 0 $[$slib_edge_cnt]\ |
||
233 | $slib_vertex\ |
||
234 | $slib_edge |
||
4731 | bpr | 235 | |
8417 | bpr | 236 | !readproc slib/geo3D/off2jmol $slib_data,[S$slib_id,A$slib_id],$slib_color,$slib_width,url $slib_id |
237 | slib_out2=$slib_out |
||
14624 | bpr | 238 | !readproc oef/togetfile.proc tmp2_$slib_id new\ |
8417 | bpr | 239 | $slib_out |
240 | |||
8462 | bpr | 241 | !!slib_rotation=moveto 0.0 { 722 -692 2 36.12} 100.0 0.0 0.0 {0 0 0} 3.08 {0 0 0} 0 0 0 3.0 0.0 0.0; |
8417 | bpr | 242 | |
243 | !reset slib_vertex slib_edge slib_edge_cnt slib_face slib_face_cnt slib_arete slib_vertex_cnt slib_data slib_out |
||
8462 | bpr | 244 | !readproc slib/chemistry/jmolshow $(slib_out2[2]),$slib_sizex,$slib_sizey,white,script "$(slib_out2[1])";zoom 120;$slib_rotation,$slib_id |
245 | |||
246 | !exit |
||
247 | |||
248 | moveto /* time, axisAngle */ 0.0 { 722 -692 2 36.12} /* zoom, translation |
||
249 | */ 100.0 0.0 0.0 /* center, rotationRadius */ {0 0 0} 3.08 /* navigation |
||
250 | center, translation, depth */ {0 0 0} 0 0 0 /* cameraDepth, cameraX, |
||
251 | cameraY */ 3.0 0.0 0.0; |