Lines Matching refs:walls

30 void (*create_walls)( BordersType * walls ) = create_6hole_walls;
40 void setfunc_create_walls( void (*func)( BordersType * walls ) ) in setfunc_create_walls() argument
95 void create_6hole_walls( BordersType * walls ) in create_6hole_walls() argument
103 walls->nr=32; in create_6hole_walls()
104 if( walls->border != NULL ) billard_free( walls->border ); in create_6hole_walls()
105 walls->border = billard_malloc( sizeof(BorderType)*walls->nr ); in create_6hole_walls()
108 walls->border[0].pnr = 3; in create_6hole_walls()
109 walls->border[0].r1 = vec_xyz( +TABLE_W/2.0, +TABLE_L/2.0-HOLE1_W/SQR2, -BALL_D/2.0 ); in create_6hole_walls()
110 walls->border[0].r2 = vec_xyz( +TABLE_W/2.0, +HOLE2_W/2.0, 0.0 ); in create_6hole_walls()
111 walls->border[0].r3 = vec_xyz( +TABLE_W/2.0, +TABLE_L/2.0-HOLE1_W/SQR2, BALL_D/2.0 ); in create_6hole_walls()
112 walls->border[0].n = vec_xyz( -1.0, 0.0, 0.0 ); in create_6hole_walls()
114 walls->border[1].pnr = 3; in create_6hole_walls()
115 walls->border[1].r1 = vec_xyz( +TABLE_W/2.0, -TABLE_L/2.0+HOLE1_W/SQR2, -BALL_D/2.0 ); in create_6hole_walls()
116 walls->border[1].r2 = vec_xyz( +TABLE_W/2.0, -HOLE2_W/2.0, 0.0 ); in create_6hole_walls()
117 walls->border[1].r3 = vec_xyz( +TABLE_W/2.0, -TABLE_L/2.0+HOLE1_W/SQR2, BALL_D/2.0 ); in create_6hole_walls()
118 walls->border[1].n = vec_xyz( -1.0, 0.0, 0.0 ); in create_6hole_walls()
120 walls->border[2].pnr = 3; in create_6hole_walls()
121 walls->border[2].r1 = vec_xyz( -TABLE_W/2.0, +TABLE_L/2.0-HOLE1_W/SQR2, -BALL_D/2.0 ); in create_6hole_walls()
122 walls->border[2].r2 = vec_xyz( -TABLE_W/2.0, +HOLE2_W/2.0, 0.0 ); in create_6hole_walls()
123 walls->border[2].r3 = vec_xyz( -TABLE_W/2.0, +TABLE_L/2.0-HOLE1_W/SQR2, BALL_D/2.0 ); in create_6hole_walls()
124 walls->border[2].n = vec_xyz( +1.0, 0.0, 0.0 ); in create_6hole_walls()
126 walls->border[3].pnr = 3; in create_6hole_walls()
127 walls->border[3].r1 = vec_xyz( -TABLE_W/2.0, -TABLE_L/2.0+HOLE1_W/SQR2, -BALL_D/2.0 ); in create_6hole_walls()
128 walls->border[3].r2 = vec_xyz( -TABLE_W/2.0, -HOLE2_W/2.0, 0.0 ); in create_6hole_walls()
129 walls->border[3].r3 = vec_xyz( -TABLE_W/2.0, -TABLE_L/2.0+HOLE1_W/SQR2, BALL_D/2.0 ); in create_6hole_walls()
130 walls->border[3].n = vec_xyz( +1.0, 0.0, 0.0 ); in create_6hole_walls()
132 walls->border[4].pnr = 3; in create_6hole_walls()
133 walls->border[4].r1 = vec_xyz( -TABLE_W/2.0+HOLE1_W/SQR2, +TABLE_L/2.0, -BALL_D/2.0 ); in create_6hole_walls()
134 walls->border[4].r2 = vec_xyz( +TABLE_W/2.0-HOLE1_W/SQR2, +TABLE_L/2.0, 0.0 ); in create_6hole_walls()
135 walls->border[4].r3 = vec_xyz( -TABLE_W/2.0+HOLE1_W/SQR2, +TABLE_L/2.0, BALL_D/2.0 ); in create_6hole_walls()
136 walls->border[4].n = vec_xyz( 0.0, -1.0, 0.0 ); in create_6hole_walls()
138 walls->border[5].pnr = 3; in create_6hole_walls()
139 walls->border[5].r1 = vec_xyz( -TABLE_W/2.0+HOLE1_W/SQR2, -TABLE_L/2.0, -BALL_D/2.0 ); in create_6hole_walls()
140 walls->border[5].r2 = vec_xyz( +TABLE_W/2.0-HOLE1_W/SQR2, -TABLE_L/2.0, 0.0 ); in create_6hole_walls()
141 walls->border[5].r3 = vec_xyz( -TABLE_W/2.0+HOLE1_W/SQR2, -TABLE_L/2.0, BALL_D/2.0 ); in create_6hole_walls()
142 walls->border[5].n = vec_xyz( 0.0, +1.0, 0.0 ); in create_6hole_walls()
146 walls->border[6].pnr = 2; in create_6hole_walls()
147 walls->border[6].r1 = vec_xyz( +TABLE_W/2.0, +TABLE_L/2.0-HOLE1_W/SQR2, -BALL_D/2.0 ); in create_6hole_walls()
148 walls->border[6].r2 = vec_xyz( +TABLE_W/2.0, +TABLE_L/2.0-HOLE1_W/SQR2, BALL_D/2.0 ); in create_6hole_walls()
149 walls->border[18].pnr = 3; in create_6hole_walls()
150 walls->border[18].r1 = vec_xyz( +TABLE_W/2.0, +TABLE_L/2.0-HOLE1_W/SQR2, -BALL_D/2.0 ); in create_6hole_walls()
151 walls->border[18].r2 = vec_xyz( +TABLE_W/2.0, +TABLE_L/2.0-HOLE1_W/SQR2, BALL_D/2.0 ); in create_6hole_walls()
152 walls->border[18].r3 = vec_xyz( +TABLE_W/2.0+1.0, +TABLE_L/2.0-HOLE1_W/SQR2+HOLE1_TAN, 0.0 ); in create_6hole_walls()
153walls->border[18].n = vec_unit(vec_cross(vec_diff(walls->border[18].r2,walls->border[18].r1),vec_… in create_6hole_walls()
156 walls->border[7].pnr = 2; in create_6hole_walls()
157 walls->border[7].r1 = vec_xyz( +TABLE_W/2.0-HOLE1_W/SQR2, +TABLE_L/2.0, -BALL_D/2.0 ); in create_6hole_walls()
158 walls->border[7].r2 = vec_xyz( +TABLE_W/2.0-HOLE1_W/SQR2, +TABLE_L/2.0, BALL_D/2.0 ); in create_6hole_walls()
159 walls->border[19].pnr = 3; in create_6hole_walls()
160 walls->border[19].r1 = vec_xyz( +TABLE_W/2.0-HOLE1_W/SQR2, +TABLE_L/2.0, -BALL_D/2.0 ); in create_6hole_walls()
161 walls->border[19].r2 = vec_xyz( +TABLE_W/2.0-HOLE1_W/SQR2, +TABLE_L/2.0, BALL_D/2.0 ); in create_6hole_walls()
162 walls->border[19].r3 = vec_xyz( +TABLE_W/2.0-HOLE1_W/SQR2+HOLE1_TAN, +TABLE_L/2.0+1.0, 0.0 ); in create_6hole_walls()
163walls->border[19].n = vec_unit(vec_cross(vec_diff(walls->border[19].r1,walls->border[19].r2),vec_… in create_6hole_walls()
166 walls->border[8].pnr = 2; in create_6hole_walls()
167 walls->border[8].r1 = vec_xyz( -TABLE_W/2.0, +TABLE_L/2.0-HOLE1_W/SQR2, -BALL_D/2.0 ); in create_6hole_walls()
168 walls->border[8].r2 = vec_xyz( -TABLE_W/2.0, +TABLE_L/2.0-HOLE1_W/SQR2, BALL_D/2.0 ); in create_6hole_walls()
169 walls->border[20].pnr = 3; in create_6hole_walls()
170 walls->border[20].r1 = vec_xyz( -TABLE_W/2.0, +TABLE_L/2.0-HOLE1_W/SQR2, -BALL_D/2.0 ); in create_6hole_walls()
171 walls->border[20].r2 = vec_xyz( -TABLE_W/2.0, +TABLE_L/2.0-HOLE1_W/SQR2, BALL_D/2.0 ); in create_6hole_walls()
172 walls->border[20].r3 = vec_xyz( -TABLE_W/2.0-1.0, +TABLE_L/2.0-HOLE1_W/SQR2+HOLE1_TAN, 0.0 ); in create_6hole_walls()
173walls->border[20].n = vec_unit(vec_cross(vec_diff(walls->border[20].r1,walls->border[20].r2),vec_… in create_6hole_walls()
176 walls->border[9].pnr = 2; in create_6hole_walls()
177 walls->border[9].r1 = vec_xyz( -TABLE_W/2.0+HOLE1_W/SQR2, +TABLE_L/2.0, -BALL_D/2.0 ); in create_6hole_walls()
178 walls->border[9].r2 = vec_xyz( -TABLE_W/2.0+HOLE1_W/SQR2, +TABLE_L/2.0, BALL_D/2.0 ); in create_6hole_walls()
179 walls->border[21].pnr = 3; in create_6hole_walls()
180 walls->border[21].r1 = vec_xyz( -TABLE_W/2.0+HOLE1_W/SQR2, +TABLE_L/2.0, -BALL_D/2.0 ); in create_6hole_walls()
181 walls->border[21].r2 = vec_xyz( -TABLE_W/2.0+HOLE1_W/SQR2, +TABLE_L/2.0, BALL_D/2.0 ); in create_6hole_walls()
182 walls->border[21].r3 = vec_xyz( -TABLE_W/2.0+HOLE1_W/SQR2-HOLE1_TAN, +TABLE_L/2.0+1.0, 0.0 ); in create_6hole_walls()
183walls->border[21].n = vec_unit(vec_cross(vec_diff(walls->border[21].r2,walls->border[21].r1),vec_… in create_6hole_walls()
186 walls->border[10].pnr = 2; in create_6hole_walls()
187 walls->border[10].r1 = vec_xyz( +TABLE_W/2.0, -TABLE_L/2.0+HOLE1_W/SQR2, -BALL_D/2.0 ); in create_6hole_walls()
188 walls->border[10].r2 = vec_xyz( +TABLE_W/2.0, -TABLE_L/2.0+HOLE1_W/SQR2, BALL_D/2.0 ); in create_6hole_walls()
189 walls->border[22].pnr = 3; in create_6hole_walls()
190 walls->border[22].r1 = vec_xyz( +TABLE_W/2.0, -TABLE_L/2.0+HOLE1_W/SQR2, -BALL_D/2.0 ); in create_6hole_walls()
191 walls->border[22].r2 = vec_xyz( +TABLE_W/2.0, -TABLE_L/2.0+HOLE1_W/SQR2, BALL_D/2.0 ); in create_6hole_walls()
192 walls->border[22].r3 = vec_xyz( +TABLE_W/2.0+1.0, -TABLE_L/2.0+HOLE1_W/SQR2-HOLE1_TAN, 0.0 ); in create_6hole_walls()
193walls->border[22].n = vec_unit(vec_cross(vec_diff(walls->border[22].r1,walls->border[22].r2),vec_… in create_6hole_walls()
196 walls->border[11].pnr = 2; in create_6hole_walls()
197 walls->border[11].r1 = vec_xyz( +TABLE_W/2.0-HOLE1_W/SQR2, -TABLE_L/2.0, -BALL_D/2.0 ); in create_6hole_walls()
198 walls->border[11].r2 = vec_xyz( +TABLE_W/2.0-HOLE1_W/SQR2, -TABLE_L/2.0, BALL_D/2.0 ); in create_6hole_walls()
199 walls->border[23].pnr = 3; in create_6hole_walls()
200 walls->border[23].r1 = vec_xyz( +TABLE_W/2.0-HOLE1_W/SQR2, -TABLE_L/2.0, -BALL_D/2.0 ); in create_6hole_walls()
201 walls->border[23].r2 = vec_xyz( +TABLE_W/2.0-HOLE1_W/SQR2, -TABLE_L/2.0, BALL_D/2.0 ); in create_6hole_walls()
202 walls->border[23].r3 = vec_xyz( +TABLE_W/2.0-HOLE1_W/SQR2+HOLE1_TAN, -TABLE_L/2.0-1.0, 0.0 ); in create_6hole_walls()
203walls->border[23].n = vec_unit(vec_cross(vec_diff(walls->border[23].r2,walls->border[23].r1),vec_… in create_6hole_walls()
206 walls->border[12].pnr = 2; in create_6hole_walls()
207 walls->border[12].r1 = vec_xyz( -TABLE_W/2.0, -TABLE_L/2.0+HOLE1_W/SQR2, -BALL_D/2.0 ); in create_6hole_walls()
208 walls->border[12].r2 = vec_xyz( -TABLE_W/2.0, -TABLE_L/2.0+HOLE1_W/SQR2, BALL_D/2.0 ); in create_6hole_walls()
209 walls->border[24].pnr = 3; in create_6hole_walls()
210 walls->border[24].r1 = vec_xyz( -TABLE_W/2.0, -TABLE_L/2.0+HOLE1_W/SQR2, -BALL_D/2.0 ); in create_6hole_walls()
211 walls->border[24].r2 = vec_xyz( -TABLE_W/2.0, -TABLE_L/2.0+HOLE1_W/SQR2, BALL_D/2.0 ); in create_6hole_walls()
212 walls->border[24].r3 = vec_xyz( -TABLE_W/2.0-1.0, -TABLE_L/2.0+HOLE1_W/SQR2-HOLE1_TAN, 0.0 ); in create_6hole_walls()
213walls->border[24].n = vec_unit(vec_cross(vec_diff(walls->border[24].r2,walls->border[24].r1),vec_… in create_6hole_walls()
216 walls->border[13].pnr = 2; in create_6hole_walls()
217 walls->border[13].r1 = vec_xyz( -TABLE_W/2.0+HOLE1_W/SQR2, -TABLE_L/2.0, -BALL_D/2.0 ); in create_6hole_walls()
218 walls->border[13].r2 = vec_xyz( -TABLE_W/2.0+HOLE1_W/SQR2, -TABLE_L/2.0, BALL_D/2.0 ); in create_6hole_walls()
219 walls->border[25].pnr = 3; in create_6hole_walls()
220 walls->border[25].r1 = vec_xyz( -TABLE_W/2.0+HOLE1_W/SQR2, -TABLE_L/2.0, -BALL_D/2.0 ); in create_6hole_walls()
221 walls->border[25].r2 = vec_xyz( -TABLE_W/2.0+HOLE1_W/SQR2, -TABLE_L/2.0, BALL_D/2.0 ); in create_6hole_walls()
222 walls->border[25].r3 = vec_xyz( -TABLE_W/2.0+HOLE1_W/SQR2-HOLE1_TAN, -TABLE_L/2.0-1.0, 0.0 ); in create_6hole_walls()
223walls->border[25].n = vec_unit(vec_cross(vec_diff(walls->border[25].r1,walls->border[25].r2),vec_… in create_6hole_walls()
226 walls->border[14].pnr = 2; in create_6hole_walls()
227 walls->border[14].r1 = vec_xyz( -TABLE_W/2.0, HOLE2_W/2.0, -BALL_D/2.0 ); in create_6hole_walls()
228 walls->border[14].r2 = vec_xyz( -TABLE_W/2.0, HOLE2_W/2.0, BALL_D/2.0 ); in create_6hole_walls()
229 walls->border[26].pnr = 3; in create_6hole_walls()
230 walls->border[26].r1 = vec_xyz( -TABLE_W/2.0, HOLE2_W/2.0, -BALL_D/2.0 ); in create_6hole_walls()
231 walls->border[26].r2 = vec_xyz( -TABLE_W/2.0, HOLE2_W/2.0, BALL_D/2.0 ); in create_6hole_walls()
232 walls->border[26].r3 = vec_xyz( -TABLE_W/2.0-1.0, HOLE2_W/2.0-HOLE2_TAN, 0.0 ); in create_6hole_walls()
233walls->border[26].n = vec_unit(vec_cross(vec_diff(walls->border[26].r2,walls->border[26].r1),vec_… in create_6hole_walls()
236 walls->border[15].pnr = 2; in create_6hole_walls()
237 walls->border[15].r1 = vec_xyz( -TABLE_W/2.0, -HOLE2_W/2.0, -BALL_D/2.0 ); in create_6hole_walls()
238 walls->border[15].r2 = vec_xyz( -TABLE_W/2.0, -HOLE2_W/2.0, BALL_D/2.0 ); in create_6hole_walls()
239 walls->border[27].pnr = 3; in create_6hole_walls()
240 walls->border[27].r1 = vec_xyz( -TABLE_W/2.0, -HOLE2_W/2.0, -BALL_D/2.0 ); in create_6hole_walls()
241 walls->border[27].r2 = vec_xyz( -TABLE_W/2.0, -HOLE2_W/2.0, BALL_D/2.0 ); in create_6hole_walls()
242 walls->border[27].r3 = vec_xyz( -TABLE_W/2.0-1.0, -HOLE2_W/2.0+HOLE2_TAN, 0.0 ); in create_6hole_walls()
243walls->border[27].n = vec_unit(vec_cross(vec_diff(walls->border[27].r1,walls->border[27].r2),vec_… in create_6hole_walls()
246 walls->border[16].pnr = 2; in create_6hole_walls()
247 walls->border[16].r1 = vec_xyz( +TABLE_W/2.0, HOLE2_W/2.0, -BALL_D/2.0 ); in create_6hole_walls()
248 walls->border[16].r2 = vec_xyz( +TABLE_W/2.0, HOLE2_W/2.0, BALL_D/2.0 ); in create_6hole_walls()
249 walls->border[28].pnr = 3; in create_6hole_walls()
250 walls->border[28].r1 = vec_xyz( +TABLE_W/2.0, HOLE2_W/2.0, -BALL_D/2.0 ); in create_6hole_walls()
251 walls->border[28].r2 = vec_xyz( +TABLE_W/2.0, HOLE2_W/2.0, BALL_D/2.0 ); in create_6hole_walls()
252 walls->border[28].r3 = vec_xyz( +TABLE_W/2.0+1.0, HOLE2_W/2.0-HOLE2_TAN, 0.0 ); in create_6hole_walls()
253walls->border[28].n = vec_unit(vec_cross(vec_diff(walls->border[28].r1,walls->border[28].r2),vec_… in create_6hole_walls()
256 walls->border[17].pnr = 2; in create_6hole_walls()
257 walls->border[17].r1 = vec_xyz( +TABLE_W/2.0, -HOLE2_W/2.0, -BALL_D/2.0 ); in create_6hole_walls()
258 walls->border[17].r2 = vec_xyz( +TABLE_W/2.0, -HOLE2_W/2.0, BALL_D/2.0 ); in create_6hole_walls()
259 walls->border[29].pnr = 3; in create_6hole_walls()
260 walls->border[29].r1 = vec_xyz( +TABLE_W/2.0, -HOLE2_W/2.0, -BALL_D/2.0 ); in create_6hole_walls()
261 walls->border[29].r2 = vec_xyz( +TABLE_W/2.0, -HOLE2_W/2.0, BALL_D/2.0 ); in create_6hole_walls()
262 walls->border[29].r3 = vec_xyz( +TABLE_W/2.0+1.0, -HOLE2_W/2.0+HOLE2_TAN, 0.0 ); in create_6hole_walls()
263walls->border[29].n = vec_unit(vec_cross(vec_diff(walls->border[29].r2,walls->border[29].r1),vec_… in create_6hole_walls()
266 for(i=0;i<walls->nr;i++){ in create_6hole_walls()
267 walls->border[i].mu = 0.1; in create_6hole_walls()
268 walls->border[i].loss0 = 0.2; in create_6hole_walls()
269 walls->border[i].loss_max = 0.5; in create_6hole_walls()
270 walls->border[i].loss_wspeed = 4.0; /* [m/s] */ in create_6hole_walls()
276 walls->border[30].pnr = 3; in create_6hole_walls()
277 walls->border[30].r1 = vec_xyz( -TABLE_W/2.0, -TABLE_L/2.0, -BALL_D/2.0-0.0001 ); in create_6hole_walls()
278 walls->border[30].r2 = vec_xyz( +TABLE_W/2.0, -TABLE_L/2.0, -BALL_D/2.0-0.0001 ); in create_6hole_walls()
279 walls->border[30].r3 = vec_xyz( +TABLE_W/2.0, +TABLE_L/2.0, -BALL_D/2.0-0.0001 ); in create_6hole_walls()
280 walls->border[30].n = vec_xyz( 0.0, 0.0, 1.0 ); in create_6hole_walls()
282 walls->border[31].pnr = 3; in create_6hole_walls()
283 walls->border[31].r1 = vec_xyz( -TABLE_W/2.0, -TABLE_L/2.0, -BALL_D/2.0-0.0001 ); in create_6hole_walls()
284 walls->border[31].r3 = vec_xyz( +TABLE_W/2.0, +TABLE_L/2.0, -BALL_D/2.0-0.0001 ); in create_6hole_walls()
285 walls->border[31].r2 = vec_xyz( -TABLE_W/2.0, +TABLE_L/2.0, -BALL_D/2.0-0.0001 ); in create_6hole_walls()
286 walls->border[31].n = vec_xyz( 0.0, 0.0, 1.0 ); in create_6hole_walls()
290 walls->border[30].mu = 0.2; in create_6hole_walls()
291 walls->border[30].loss0 = 0.6; in create_6hole_walls()
292 walls->border[30].loss_max = 0.99; in create_6hole_walls()
293 walls->border[30].loss_wspeed = 1.5; in create_6hole_walls()
294 walls->border[31].mu = 0.2; in create_6hole_walls()
295 walls->border[31].loss0 = 0.6; in create_6hole_walls()
296 walls->border[31].loss_max = 0.99; in create_6hole_walls()
297 walls->border[31].loss_wspeed = 1.5; in create_6hole_walls()
301 walls->nr=4; in create_6hole_walls()
302 walls->border = billard_malloc(sizeof(BorderType)*walls->nr); in create_6hole_walls()
303 walls->border[0].r = vec_xyz( +TABLE_W/2.0, 0.0, 0.0 ); in create_6hole_walls()
304 walls->border[0].n = vec_xyz( -1.0, 0.0, 0.0 ); in create_6hole_walls()
305 walls->border[1].r = vec_xyz( -TABLE_W/2.0, 0.0, 0.0 ); in create_6hole_walls()
306 walls->border[1].n = vec_xyz( +1.0, 0.0, 0.0 ); in create_6hole_walls()
307 walls->border[2].r = vec_xyz( 0.0, +TABLE_L/2.0, 0.0 ); in create_6hole_walls()
308 walls->border[2].n = vec_xyz( 0.0, -1.0, 0.0 ); in create_6hole_walls()
309 walls->border[3].r = vec_xyz( 0.0, -TABLE_L/2.0, 0.0 ); in create_6hole_walls()
310 walls->border[3].n = vec_xyz( 0.0, +1.0, 0.0 ); in create_6hole_walls()
314 walls->holenr = 6; in create_6hole_walls()
315 if( walls->hole != NULL ) billard_free( walls->hole ); in create_6hole_walls()
316 walls->hole = billard_malloc(sizeof(HoleType)*walls->holenr); in create_6hole_walls()
318 walls->hole[0].aim = vec_xyz( +TABLE_W/2.0-HOLE2_AIMOFFS, 0.0, 0.0 ); in create_6hole_walls()
319 walls->hole[0].pos = vec_xyz( +TABLE_W/2.0+HOLE2_XYOFFS, 0.0, 0.0 ); in create_6hole_walls()
320 walls->hole[0].r = HOLE2_R; in create_6hole_walls()
322 walls->hole[1].aim = vec_xyz( -TABLE_W/2.0+HOLE2_AIMOFFS, 0.0, 0.0 ); in create_6hole_walls()
323 walls->hole[1].pos = vec_xyz( -TABLE_W/2.0-HOLE2_XYOFFS, 0.0, 0.0 ); in create_6hole_walls()
324 walls->hole[1].r = HOLE2_R; in create_6hole_walls()
326 walls->hole[2].aim = vec_xyz( +TABLE_W/2.0-HOLE1_AIMOFFS, +TABLE_L/2.0-HOLE1_AIMOFFS, 0.0 ); in create_6hole_walls()
327 walls->hole[2].pos = vec_xyz( +TABLE_W/2.0+HOLE1_XYOFFS, +TABLE_L/2.0+HOLE1_XYOFFS, 0.0 ); in create_6hole_walls()
328 walls->hole[2].r = HOLE1_R; in create_6hole_walls()
330 walls->hole[3].aim = vec_xyz( -TABLE_W/2.0+HOLE1_AIMOFFS, +TABLE_L/2.0-HOLE1_AIMOFFS, 0.0 ); in create_6hole_walls()
331 walls->hole[3].pos = vec_xyz( -TABLE_W/2.0-HOLE1_XYOFFS, +TABLE_L/2.0+HOLE1_XYOFFS, 0.0 ); in create_6hole_walls()
332 walls->hole[3].r = HOLE1_R; in create_6hole_walls()
334 walls->hole[4].aim = vec_xyz( -TABLE_W/2.0+HOLE1_AIMOFFS, -TABLE_L/2.0-HOLE1_AIMOFFS, 0.0 ); in create_6hole_walls()
335 walls->hole[4].pos = vec_xyz( -TABLE_W/2.0-HOLE1_XYOFFS, -TABLE_L/2.0-HOLE1_XYOFFS, 0.0 ); in create_6hole_walls()
336 walls->hole[4].r = HOLE1_R; in create_6hole_walls()
338 walls->hole[5].aim = vec_xyz( +TABLE_W/2.0-HOLE1_AIMOFFS, -TABLE_L/2.0+HOLE1_AIMOFFS, 0.0 ); in create_6hole_walls()
339 walls->hole[5].pos = vec_xyz( +TABLE_W/2.0+HOLE1_XYOFFS, -TABLE_L/2.0-HOLE1_XYOFFS, 0.0 ); in create_6hole_walls()
340 walls->hole[5].r = HOLE1_R; in create_6hole_walls()
344 void create_6hole_walls_snooker( BordersType * walls ) in create_6hole_walls_snooker() argument
352 walls->nr=32; in create_6hole_walls_snooker()
353 if( walls->border != NULL ) billard_free( walls->border ); in create_6hole_walls_snooker()
354 walls->border = billard_malloc( sizeof(BorderType)*walls->nr ); in create_6hole_walls_snooker()
357 walls->border[0].pnr = 3; in create_6hole_walls_snooker()
358 walls->border[0].r1 = vec_xyz( +TABLE_W/2.0, +TABLE_L/2.0-HOLE1_W/SQR2, -BALL_D/2.0 ); in create_6hole_walls_snooker()
359 walls->border[0].r2 = vec_xyz( +TABLE_W/2.0, +HOLE2_W/2.0, 0.0 ); in create_6hole_walls_snooker()
360 walls->border[0].r3 = vec_xyz( +TABLE_W/2.0, +TABLE_L/2.0-HOLE1_W/SQR2, BALL_D/2.0 ); in create_6hole_walls_snooker()
361 walls->border[0].n = vec_xyz( -1.0, 0.0, 0.0 ); in create_6hole_walls_snooker()
363 walls->border[1].pnr = 3; in create_6hole_walls_snooker()
364 walls->border[1].r1 = vec_xyz( +TABLE_W/2.0, -TABLE_L/2.0+HOLE1_W/SQR2, -BALL_D/2.0 ); in create_6hole_walls_snooker()
365 walls->border[1].r2 = vec_xyz( +TABLE_W/2.0, -HOLE2_W/2.0, 0.0 ); in create_6hole_walls_snooker()
366 walls->border[1].r3 = vec_xyz( +TABLE_W/2.0, -TABLE_L/2.0+HOLE1_W/SQR2, BALL_D/2.0 ); in create_6hole_walls_snooker()
367 walls->border[1].n = vec_xyz( -1.0, 0.0, 0.0 ); in create_6hole_walls_snooker()
369 walls->border[2].pnr = 3; in create_6hole_walls_snooker()
370 walls->border[2].r1 = vec_xyz( -TABLE_W/2.0, +TABLE_L/2.0-HOLE1_W/SQR2, -BALL_D/2.0 ); in create_6hole_walls_snooker()
371 walls->border[2].r2 = vec_xyz( -TABLE_W/2.0, +HOLE2_W/2.0, 0.0 ); in create_6hole_walls_snooker()
372 walls->border[2].r3 = vec_xyz( -TABLE_W/2.0, +TABLE_L/2.0-HOLE1_W/SQR2, BALL_D/2.0 ); in create_6hole_walls_snooker()
373 walls->border[2].n = vec_xyz( +1.0, 0.0, 0.0 ); in create_6hole_walls_snooker()
375 walls->border[3].pnr = 3; in create_6hole_walls_snooker()
376 walls->border[3].r1 = vec_xyz( -TABLE_W/2.0, -TABLE_L/2.0+HOLE1_W/SQR2, -BALL_D/2.0 ); in create_6hole_walls_snooker()
377 walls->border[3].r2 = vec_xyz( -TABLE_W/2.0, -HOLE2_W/2.0, 0.0 ); in create_6hole_walls_snooker()
378 walls->border[3].r3 = vec_xyz( -TABLE_W/2.0, -TABLE_L/2.0+HOLE1_W/SQR2, BALL_D/2.0 ); in create_6hole_walls_snooker()
379 walls->border[3].n = vec_xyz( +1.0, 0.0, 0.0 ); in create_6hole_walls_snooker()
381 walls->border[4].pnr = 3; in create_6hole_walls_snooker()
382 walls->border[4].r1 = vec_xyz( -TABLE_W/2.0+HOLE1_W/SQR2, +TABLE_L/2.0, -BALL_D/2.0 ); in create_6hole_walls_snooker()
383 walls->border[4].r2 = vec_xyz( +TABLE_W/2.0-HOLE1_W/SQR2, +TABLE_L/2.0, 0.0 ); in create_6hole_walls_snooker()
384 walls->border[4].r3 = vec_xyz( -TABLE_W/2.0+HOLE1_W/SQR2, +TABLE_L/2.0, BALL_D/2.0 ); in create_6hole_walls_snooker()
385 walls->border[4].n = vec_xyz( 0.0, -1.0, 0.0 ); in create_6hole_walls_snooker()
387 walls->border[5].pnr = 3; in create_6hole_walls_snooker()
388 walls->border[5].r1 = vec_xyz( -TABLE_W/2.0+HOLE1_W/SQR2, -TABLE_L/2.0, -BALL_D/2.0 ); in create_6hole_walls_snooker()
389 walls->border[5].r2 = vec_xyz( +TABLE_W/2.0-HOLE1_W/SQR2, -TABLE_L/2.0, 0.0 ); in create_6hole_walls_snooker()
390 walls->border[5].r3 = vec_xyz( -TABLE_W/2.0+HOLE1_W/SQR2, -TABLE_L/2.0, BALL_D/2.0 ); in create_6hole_walls_snooker()
391 walls->border[5].n = vec_xyz( 0.0, +1.0, 0.0 ); in create_6hole_walls_snooker()
395 walls->border[6].pnr = 2; in create_6hole_walls_snooker()
396 walls->border[6].r1 = vec_xyz( +TABLE_W/2.0, +TABLE_L/2.0-HOLE1_W/SQR2, -BALL_D/2.0 ); in create_6hole_walls_snooker()
397 walls->border[6].r2 = vec_xyz( +TABLE_W/2.0, +TABLE_L/2.0-HOLE1_W/SQR2, BALL_D/2.0 ); in create_6hole_walls_snooker()
398 walls->border[18].pnr = 3; in create_6hole_walls_snooker()
399 walls->border[18].r1 = vec_xyz( +TABLE_W/2.0, +TABLE_L/2.0-HOLE1_W/SQR2, -BALL_D/2.0 ); in create_6hole_walls_snooker()
400 walls->border[18].r2 = vec_xyz( +TABLE_W/2.0, +TABLE_L/2.0-HOLE1_W/SQR2, BALL_D/2.0 ); in create_6hole_walls_snooker()
401 walls->border[18].r3 = vec_xyz( +TABLE_W/2.0+1.0, +TABLE_L/2.0-HOLE1_W/SQR2+HOLE1_TAN, 0.0 ); in create_6hole_walls_snooker()
402walls->border[18].n = vec_unit(vec_cross(vec_diff(walls->border[18].r2,walls->border[18].r1),vec_… in create_6hole_walls_snooker()
405 walls->border[7].pnr = 2; in create_6hole_walls_snooker()
406 walls->border[7].r1 = vec_xyz( +TABLE_W/2.0-HOLE1_W/SQR2, +TABLE_L/2.0, -BALL_D/2.0 ); in create_6hole_walls_snooker()
407 walls->border[7].r2 = vec_xyz( +TABLE_W/2.0-HOLE1_W/SQR2, +TABLE_L/2.0, BALL_D/2.0 ); in create_6hole_walls_snooker()
408 walls->border[19].pnr = 3; in create_6hole_walls_snooker()
409 walls->border[19].r1 = vec_xyz( +TABLE_W/2.0-HOLE1_W/SQR2, +TABLE_L/2.0, -BALL_D/2.0 ); in create_6hole_walls_snooker()
410 walls->border[19].r2 = vec_xyz( +TABLE_W/2.0-HOLE1_W/SQR2, +TABLE_L/2.0, BALL_D/2.0 ); in create_6hole_walls_snooker()
411 walls->border[19].r3 = vec_xyz( +TABLE_W/2.0-HOLE1_W/SQR2+HOLE1_TAN, +TABLE_L/2.0+1.0, 0.0 ); in create_6hole_walls_snooker()
412walls->border[19].n = vec_unit(vec_cross(vec_diff(walls->border[19].r1,walls->border[19].r2),vec_… in create_6hole_walls_snooker()
415 walls->border[8].pnr = 2; in create_6hole_walls_snooker()
416 walls->border[8].r1 = vec_xyz( -TABLE_W/2.0, +TABLE_L/2.0-HOLE1_W/SQR2, -BALL_D/2.0 ); in create_6hole_walls_snooker()
417 walls->border[8].r2 = vec_xyz( -TABLE_W/2.0, +TABLE_L/2.0-HOLE1_W/SQR2, BALL_D/2.0 ); in create_6hole_walls_snooker()
418 walls->border[20].pnr = 3; in create_6hole_walls_snooker()
419 walls->border[20].r1 = vec_xyz( -TABLE_W/2.0, +TABLE_L/2.0-HOLE1_W/SQR2, -BALL_D/2.0 ); in create_6hole_walls_snooker()
420 walls->border[20].r2 = vec_xyz( -TABLE_W/2.0, +TABLE_L/2.0-HOLE1_W/SQR2, BALL_D/2.0 ); in create_6hole_walls_snooker()
421 walls->border[20].r3 = vec_xyz( -TABLE_W/2.0-1.0, +TABLE_L/2.0-HOLE1_W/SQR2+HOLE1_TAN, 0.0 ); in create_6hole_walls_snooker()
422walls->border[20].n = vec_unit(vec_cross(vec_diff(walls->border[20].r1,walls->border[20].r2),vec_… in create_6hole_walls_snooker()
425 walls->border[9].pnr = 2; in create_6hole_walls_snooker()
426 walls->border[9].r1 = vec_xyz( -TABLE_W/2.0+HOLE1_W/SQR2, +TABLE_L/2.0, -BALL_D/2.0 ); in create_6hole_walls_snooker()
427 walls->border[9].r2 = vec_xyz( -TABLE_W/2.0+HOLE1_W/SQR2, +TABLE_L/2.0, BALL_D/2.0 ); in create_6hole_walls_snooker()
428 walls->border[21].pnr = 3; in create_6hole_walls_snooker()
429 walls->border[21].r1 = vec_xyz( -TABLE_W/2.0+HOLE1_W/SQR2, +TABLE_L/2.0, -BALL_D/2.0 ); in create_6hole_walls_snooker()
430 walls->border[21].r2 = vec_xyz( -TABLE_W/2.0+HOLE1_W/SQR2, +TABLE_L/2.0, BALL_D/2.0 ); in create_6hole_walls_snooker()
431 walls->border[21].r3 = vec_xyz( -TABLE_W/2.0+HOLE1_W/SQR2-HOLE1_TAN, +TABLE_L/2.0+1.0, 0.0 ); in create_6hole_walls_snooker()
432walls->border[21].n = vec_unit(vec_cross(vec_diff(walls->border[21].r2,walls->border[21].r1),vec_… in create_6hole_walls_snooker()
435 walls->border[10].pnr = 2; in create_6hole_walls_snooker()
436 walls->border[10].r1 = vec_xyz( +TABLE_W/2.0, -TABLE_L/2.0+HOLE1_W/SQR2, -BALL_D/2.0 ); in create_6hole_walls_snooker()
437 walls->border[10].r2 = vec_xyz( +TABLE_W/2.0, -TABLE_L/2.0+HOLE1_W/SQR2, BALL_D/2.0 ); in create_6hole_walls_snooker()
438 walls->border[22].pnr = 3; in create_6hole_walls_snooker()
439 walls->border[22].r1 = vec_xyz( +TABLE_W/2.0, -TABLE_L/2.0+HOLE1_W/SQR2, -BALL_D/2.0 ); in create_6hole_walls_snooker()
440 walls->border[22].r2 = vec_xyz( +TABLE_W/2.0, -TABLE_L/2.0+HOLE1_W/SQR2, BALL_D/2.0 ); in create_6hole_walls_snooker()
441 walls->border[22].r3 = vec_xyz( +TABLE_W/2.0+1.0, -TABLE_L/2.0+HOLE1_W/SQR2-HOLE1_TAN, 0.0 ); in create_6hole_walls_snooker()
442walls->border[22].n = vec_unit(vec_cross(vec_diff(walls->border[22].r1,walls->border[22].r2),vec_… in create_6hole_walls_snooker()
445 walls->border[11].pnr = 2; in create_6hole_walls_snooker()
446 walls->border[11].r1 = vec_xyz( +TABLE_W/2.0-HOLE1_W/SQR2, -TABLE_L/2.0, -BALL_D/2.0 ); in create_6hole_walls_snooker()
447 walls->border[11].r2 = vec_xyz( +TABLE_W/2.0-HOLE1_W/SQR2, -TABLE_L/2.0, BALL_D/2.0 ); in create_6hole_walls_snooker()
448 walls->border[23].pnr = 3; in create_6hole_walls_snooker()
449 walls->border[23].r1 = vec_xyz( +TABLE_W/2.0-HOLE1_W/SQR2, -TABLE_L/2.0, -BALL_D/2.0 ); in create_6hole_walls_snooker()
450 walls->border[23].r2 = vec_xyz( +TABLE_W/2.0-HOLE1_W/SQR2, -TABLE_L/2.0, BALL_D/2.0 ); in create_6hole_walls_snooker()
451 walls->border[23].r3 = vec_xyz( +TABLE_W/2.0-HOLE1_W/SQR2+HOLE1_TAN, -TABLE_L/2.0-1.0, 0.0 ); in create_6hole_walls_snooker()
452walls->border[23].n = vec_unit(vec_cross(vec_diff(walls->border[23].r2,walls->border[23].r1),vec_… in create_6hole_walls_snooker()
455 walls->border[12].pnr = 2; in create_6hole_walls_snooker()
456 walls->border[12].r1 = vec_xyz( -TABLE_W/2.0, -TABLE_L/2.0+HOLE1_W/SQR2, -BALL_D/2.0 ); in create_6hole_walls_snooker()
457 walls->border[12].r2 = vec_xyz( -TABLE_W/2.0, -TABLE_L/2.0+HOLE1_W/SQR2, BALL_D/2.0 ); in create_6hole_walls_snooker()
458 walls->border[24].pnr = 3; in create_6hole_walls_snooker()
459 walls->border[24].r1 = vec_xyz( -TABLE_W/2.0, -TABLE_L/2.0+HOLE1_W/SQR2, -BALL_D/2.0 ); in create_6hole_walls_snooker()
460 walls->border[24].r2 = vec_xyz( -TABLE_W/2.0, -TABLE_L/2.0+HOLE1_W/SQR2, BALL_D/2.0 ); in create_6hole_walls_snooker()
461 walls->border[24].r3 = vec_xyz( -TABLE_W/2.0-1.0, -TABLE_L/2.0+HOLE1_W/SQR2-HOLE1_TAN, 0.0 ); in create_6hole_walls_snooker()
462walls->border[24].n = vec_unit(vec_cross(vec_diff(walls->border[24].r2,walls->border[24].r1),vec_… in create_6hole_walls_snooker()
465 walls->border[13].pnr = 2; in create_6hole_walls_snooker()
466 walls->border[13].r1 = vec_xyz( -TABLE_W/2.0+HOLE1_W/SQR2, -TABLE_L/2.0, -BALL_D/2.0 ); in create_6hole_walls_snooker()
467 walls->border[13].r2 = vec_xyz( -TABLE_W/2.0+HOLE1_W/SQR2, -TABLE_L/2.0, BALL_D/2.0 ); in create_6hole_walls_snooker()
468 walls->border[25].pnr = 3; in create_6hole_walls_snooker()
469 walls->border[25].r1 = vec_xyz( -TABLE_W/2.0+HOLE1_W/SQR2, -TABLE_L/2.0, -BALL_D/2.0 ); in create_6hole_walls_snooker()
470 walls->border[25].r2 = vec_xyz( -TABLE_W/2.0+HOLE1_W/SQR2, -TABLE_L/2.0, BALL_D/2.0 ); in create_6hole_walls_snooker()
471 walls->border[25].r3 = vec_xyz( -TABLE_W/2.0+HOLE1_W/SQR2-HOLE1_TAN, -TABLE_L/2.0-1.0, 0.0 ); in create_6hole_walls_snooker()
472walls->border[25].n = vec_unit(vec_cross(vec_diff(walls->border[25].r1,walls->border[25].r2),vec_… in create_6hole_walls_snooker()
475 walls->border[14].pnr = 2; in create_6hole_walls_snooker()
476 walls->border[14].r1 = vec_xyz( -TABLE_W/2.0, HOLE2_W/2.0, -BALL_D/2.0 ); in create_6hole_walls_snooker()
477 walls->border[14].r2 = vec_xyz( -TABLE_W/2.0, HOLE2_W/2.0, BALL_D/2.0 ); in create_6hole_walls_snooker()
478 walls->border[26].pnr = 3; in create_6hole_walls_snooker()
479 walls->border[26].r1 = vec_xyz( -TABLE_W/2.0, HOLE2_W/2.0, -BALL_D/2.0 ); in create_6hole_walls_snooker()
480 walls->border[26].r2 = vec_xyz( -TABLE_W/2.0, HOLE2_W/2.0, BALL_D/2.0 ); in create_6hole_walls_snooker()
481 walls->border[26].r3 = vec_xyz( -TABLE_W/2.0-1.0, HOLE2_W/2.0-HOLE2_TAN, 0.0 ); in create_6hole_walls_snooker()
482walls->border[26].n = vec_unit(vec_cross(vec_diff(walls->border[26].r2,walls->border[26].r1),vec_… in create_6hole_walls_snooker()
485 walls->border[15].pnr = 2; in create_6hole_walls_snooker()
486 walls->border[15].r1 = vec_xyz( -TABLE_W/2.0, -HOLE2_W/2.0, -BALL_D/2.0 ); in create_6hole_walls_snooker()
487 walls->border[15].r2 = vec_xyz( -TABLE_W/2.0, -HOLE2_W/2.0, BALL_D/2.0 ); in create_6hole_walls_snooker()
488 walls->border[27].pnr = 3; in create_6hole_walls_snooker()
489 walls->border[27].r1 = vec_xyz( -TABLE_W/2.0, -HOLE2_W/2.0, -BALL_D/2.0 ); in create_6hole_walls_snooker()
490 walls->border[27].r2 = vec_xyz( -TABLE_W/2.0, -HOLE2_W/2.0, BALL_D/2.0 ); in create_6hole_walls_snooker()
491 walls->border[27].r3 = vec_xyz( -TABLE_W/2.0-1.0, -HOLE2_W/2.0+HOLE2_TAN, 0.0 ); in create_6hole_walls_snooker()
492walls->border[27].n = vec_unit(vec_cross(vec_diff(walls->border[27].r1,walls->border[27].r2),vec_… in create_6hole_walls_snooker()
495 walls->border[16].pnr = 2; in create_6hole_walls_snooker()
496 walls->border[16].r1 = vec_xyz( +TABLE_W/2.0, HOLE2_W/2.0, -BALL_D/2.0 ); in create_6hole_walls_snooker()
497 walls->border[16].r2 = vec_xyz( +TABLE_W/2.0, HOLE2_W/2.0, BALL_D/2.0 ); in create_6hole_walls_snooker()
498 walls->border[28].pnr = 3; in create_6hole_walls_snooker()
499 walls->border[28].r1 = vec_xyz( +TABLE_W/2.0, HOLE2_W/2.0, -BALL_D/2.0 ); in create_6hole_walls_snooker()
500 walls->border[28].r2 = vec_xyz( +TABLE_W/2.0, HOLE2_W/2.0, BALL_D/2.0 ); in create_6hole_walls_snooker()
501 walls->border[28].r3 = vec_xyz( +TABLE_W/2.0+1.0, HOLE2_W/2.0-HOLE2_TAN, 0.0 ); in create_6hole_walls_snooker()
502walls->border[28].n = vec_unit(vec_cross(vec_diff(walls->border[28].r1,walls->border[28].r2),vec_… in create_6hole_walls_snooker()
505 walls->border[17].pnr = 2; in create_6hole_walls_snooker()
506 walls->border[17].r1 = vec_xyz( +TABLE_W/2.0, -HOLE2_W/2.0, -BALL_D/2.0 ); in create_6hole_walls_snooker()
507 walls->border[17].r2 = vec_xyz( +TABLE_W/2.0, -HOLE2_W/2.0, BALL_D/2.0 ); in create_6hole_walls_snooker()
508 walls->border[29].pnr = 3; in create_6hole_walls_snooker()
509 walls->border[29].r1 = vec_xyz( +TABLE_W/2.0, -HOLE2_W/2.0, -BALL_D/2.0 ); in create_6hole_walls_snooker()
510 walls->border[29].r2 = vec_xyz( +TABLE_W/2.0, -HOLE2_W/2.0, BALL_D/2.0 ); in create_6hole_walls_snooker()
511 walls->border[29].r3 = vec_xyz( +TABLE_W/2.0+1.0, -HOLE2_W/2.0+HOLE2_TAN, 0.0 ); in create_6hole_walls_snooker()
512walls->border[29].n = vec_unit(vec_cross(vec_diff(walls->border[29].r2,walls->border[29].r1),vec_… in create_6hole_walls_snooker()
515 for(i=0;i<walls->nr;i++){ in create_6hole_walls_snooker()
516 walls->border[i].mu = 0.1; in create_6hole_walls_snooker()
517 walls->border[i].loss0 = 0.2; in create_6hole_walls_snooker()
518 walls->border[i].loss_max = 0.5; in create_6hole_walls_snooker()
519 walls->border[i].loss_wspeed = 4.0; /* [m/s] */ in create_6hole_walls_snooker()
525 walls->border[30].pnr = 3; in create_6hole_walls_snooker()
526 walls->border[30].r1 = vec_xyz( -TABLE_W/2.0, -TABLE_L/2.0, -BALL_D/2.0-0.0001 ); in create_6hole_walls_snooker()
527 walls->border[30].r2 = vec_xyz( +TABLE_W/2.0, -TABLE_L/2.0, -BALL_D/2.0-0.0001 ); in create_6hole_walls_snooker()
528 walls->border[30].r3 = vec_xyz( +TABLE_W/2.0, +TABLE_L/2.0, -BALL_D/2.0-0.0001 ); in create_6hole_walls_snooker()
529 walls->border[30].n = vec_xyz( 0.0, 0.0, 1.0 ); in create_6hole_walls_snooker()
531 walls->border[31].pnr = 3; in create_6hole_walls_snooker()
532 walls->border[31].r1 = vec_xyz( -TABLE_W/2.0, -TABLE_L/2.0, -BALL_D/2.0-0.0001 ); in create_6hole_walls_snooker()
533 walls->border[31].r3 = vec_xyz( +TABLE_W/2.0, +TABLE_L/2.0, -BALL_D/2.0-0.0001 ); in create_6hole_walls_snooker()
534 walls->border[31].r2 = vec_xyz( -TABLE_W/2.0, +TABLE_L/2.0, -BALL_D/2.0-0.0001 ); in create_6hole_walls_snooker()
535 walls->border[31].n = vec_xyz( 0.0, 0.0, 1.0 ); in create_6hole_walls_snooker()
539 walls->border[30].mu = 0.2; in create_6hole_walls_snooker()
540 walls->border[30].loss0 = 0.6; in create_6hole_walls_snooker()
541 walls->border[30].loss_max = 0.99; in create_6hole_walls_snooker()
542 walls->border[30].loss_wspeed = 1.5; in create_6hole_walls_snooker()
543 walls->border[31].mu = 0.2; in create_6hole_walls_snooker()
544 walls->border[31].loss0 = 0.6; in create_6hole_walls_snooker()
545 walls->border[31].loss_max = 0.99; in create_6hole_walls_snooker()
546 walls->border[31].loss_wspeed = 1.5; in create_6hole_walls_snooker()
550 walls->nr=4; in create_6hole_walls_snooker()
551 walls->border = billard_malloc(sizeof(BorderType)*walls->nr); in create_6hole_walls_snooker()
552 walls->border[0].r = vec_xyz( +TABLE_W/2.0, 0.0, 0.0 ); in create_6hole_walls_snooker()
553 walls->border[0].n = vec_xyz( -1.0, 0.0, 0.0 ); in create_6hole_walls_snooker()
554 walls->border[1].r = vec_xyz( -TABLE_W/2.0, 0.0, 0.0 ); in create_6hole_walls_snooker()
555 walls->border[1].n = vec_xyz( +1.0, 0.0, 0.0 ); in create_6hole_walls_snooker()
556 walls->border[2].r = vec_xyz( 0.0, +TABLE_L/2.0, 0.0 ); in create_6hole_walls_snooker()
557 walls->border[2].n = vec_xyz( 0.0, -1.0, 0.0 ); in create_6hole_walls_snooker()
558 walls->border[3].r = vec_xyz( 0.0, -TABLE_L/2.0, 0.0 ); in create_6hole_walls_snooker()
559 walls->border[3].n = vec_xyz( 0.0, +1.0, 0.0 ); in create_6hole_walls_snooker()
563 walls->holenr = 6; in create_6hole_walls_snooker()
564 if( walls->hole != NULL ) billard_free( walls->hole ); in create_6hole_walls_snooker()
565 walls->hole = billard_malloc(sizeof(HoleType)*walls->holenr); in create_6hole_walls_snooker()
567 walls->hole[0].aim = vec_xyz( +TABLE_W/2.0-HOLE2_AIMOFFS, 0.0, 0.0 ); in create_6hole_walls_snooker()
568 walls->hole[0].pos = vec_xyz( +TABLE_W/2.0+HOLE2_XYOFFS, 0.0, 0.0 ); in create_6hole_walls_snooker()
569 walls->hole[0].r = HOLE2_R; in create_6hole_walls_snooker()
571 walls->hole[1].aim = vec_xyz( -TABLE_W/2.0+HOLE2_AIMOFFS, 0.0, 0.0 ); in create_6hole_walls_snooker()
572 walls->hole[1].pos = vec_xyz( -TABLE_W/2.0-HOLE2_XYOFFS, 0.0, 0.0 ); in create_6hole_walls_snooker()
573 walls->hole[1].r = HOLE2_R; in create_6hole_walls_snooker()
575 walls->hole[2].aim = vec_xyz( +TABLE_W/2.0-HOLE1_AIMOFFS, +TABLE_L/2.0-HOLE1_AIMOFFS, 0.0 ); in create_6hole_walls_snooker()
576 walls->hole[2].pos = vec_xyz( +TABLE_W/2.0+HOLE1_XYOFFS, +TABLE_L/2.0+HOLE1_XYOFFS, 0.0 ); in create_6hole_walls_snooker()
577 walls->hole[2].r = HOLE1_R; in create_6hole_walls_snooker()
579 walls->hole[3].aim = vec_xyz( -TABLE_W/2.0+HOLE1_AIMOFFS, +TABLE_L/2.0-HOLE1_AIMOFFS, 0.0 ); in create_6hole_walls_snooker()
580 walls->hole[3].pos = vec_xyz( -TABLE_W/2.0-HOLE1_XYOFFS, +TABLE_L/2.0+HOLE1_XYOFFS, 0.0 ); in create_6hole_walls_snooker()
581 walls->hole[3].r = HOLE1_R; in create_6hole_walls_snooker()
583 walls->hole[4].aim = vec_xyz( -TABLE_W/2.0+HOLE1_AIMOFFS, -TABLE_L/2.0-HOLE1_AIMOFFS, 0.0 ); in create_6hole_walls_snooker()
584 walls->hole[4].pos = vec_xyz( -TABLE_W/2.0-HOLE1_XYOFFS, -TABLE_L/2.0-HOLE1_XYOFFS, 0.0 ); in create_6hole_walls_snooker()
585 walls->hole[4].r = HOLE1_R; in create_6hole_walls_snooker()
587 walls->hole[5].aim = vec_xyz( +TABLE_W/2.0-HOLE1_AIMOFFS, -TABLE_L/2.0+HOLE1_AIMOFFS, 0.0 ); in create_6hole_walls_snooker()
588 walls->hole[5].pos = vec_xyz( +TABLE_W/2.0+HOLE1_XYOFFS, -TABLE_L/2.0-HOLE1_XYOFFS, 0.0 ); in create_6hole_walls_snooker()
589 walls->hole[5].r = HOLE1_R; in create_6hole_walls_snooker()
593 void create_0hole_walls( BordersType * walls ) in create_0hole_walls() argument
598 walls->nr=6; in create_0hole_walls()
599 if( walls->border != NULL ) billard_free( walls->border ); in create_0hole_walls()
600 walls->border = billard_malloc( sizeof(BorderType)*walls->nr ); in create_0hole_walls()
627 walls->border[0].pnr = 2; in create_0hole_walls()
628walls->border[0].r1 = vec_xyz( +TABLE_W/2.0, +TABLE_L/2.0, options_jump_shots ? 0.14*BALL_D : 0.0 … in create_0hole_walls()
629walls->border[0].r2 = vec_xyz( +TABLE_W/2.0, -TABLE_L/2.0, options_jump_shots ? 0.14*BALL_D : 0.0 … in create_0hole_walls()
631 walls->border[1].pnr = 2; in create_0hole_walls()
632walls->border[1].r1 = vec_xyz( -TABLE_W/2.0, -TABLE_L/2.0, options_jump_shots ? 0.14*BALL_D : 0.0 … in create_0hole_walls()
633walls->border[1].r2 = vec_xyz( -TABLE_W/2.0, +TABLE_L/2.0, options_jump_shots ? 0.14*BALL_D : 0.0 … in create_0hole_walls()
635 walls->border[2].pnr = 2; in create_0hole_walls()
636walls->border[2].r1 = vec_xyz( -TABLE_W/2.0, +TABLE_L/2.0, options_jump_shots ? 0.14*BALL_D : 0.0 … in create_0hole_walls()
637walls->border[2].r2 = vec_xyz( +TABLE_W/2.0, +TABLE_L/2.0, options_jump_shots ? 0.14*BALL_D : 0.0 … in create_0hole_walls()
639 walls->border[3].pnr = 2; in create_0hole_walls()
640walls->border[3].r1 = vec_xyz( -TABLE_W/2.0, -TABLE_L/2.0, options_jump_shots ? 0.14*BALL_D : 0.0 … in create_0hole_walls()
641walls->border[3].r2 = vec_xyz( +TABLE_W/2.0, -TABLE_L/2.0, options_jump_shots ? 0.14*BALL_D : 0.0 … in create_0hole_walls()
643 for(i=0;i<walls->nr;i++){ in create_0hole_walls()
644 walls->border[i].mu = 0.12; in create_0hole_walls()
645 walls->border[i].loss0 = 0.2; in create_0hole_walls()
646 walls->border[i].loss_max = 0.5; in create_0hole_walls()
647 walls->border[i].loss_wspeed = 4.0; /* [m/s] */ in create_0hole_walls()
651 walls->border[4].pnr = 3; in create_0hole_walls()
652 walls->border[4].r1 = vec_xyz( -TABLE_W/2.0, -TABLE_L/2.0, -BALL_D/2.0-0.0001 ); in create_0hole_walls()
653 walls->border[4].r2 = vec_xyz( +TABLE_W/2.0, -TABLE_L/2.0, -BALL_D/2.0-0.0001 ); in create_0hole_walls()
654 walls->border[4].r3 = vec_xyz( +TABLE_W/2.0, +TABLE_L/2.0, -BALL_D/2.0-0.0001 ); in create_0hole_walls()
655 walls->border[4].n = vec_xyz( 0.0, 0.0, 1.0 ); in create_0hole_walls()
657 walls->border[5].pnr = 3; in create_0hole_walls()
658 walls->border[5].r1 = vec_xyz( -TABLE_W/2.0, -TABLE_L/2.0, -BALL_D/2.0-0.0001 ); in create_0hole_walls()
659 walls->border[5].r3 = vec_xyz( +TABLE_W/2.0, +TABLE_L/2.0, -BALL_D/2.0-0.0001 ); in create_0hole_walls()
660 walls->border[5].r2 = vec_xyz( -TABLE_W/2.0, +TABLE_L/2.0, -BALL_D/2.0-0.0001 ); in create_0hole_walls()
661 walls->border[5].n = vec_xyz( 0.0, 0.0, 1.0 ); in create_0hole_walls()
663 walls->border[4].mu = 0.2; in create_0hole_walls()
664 walls->border[4].loss0 = 0.6; in create_0hole_walls()
665 walls->border[4].loss_max = 0.9; in create_0hole_walls()
666 walls->border[4].loss_wspeed = 2.0; in create_0hole_walls()
667 walls->border[5].mu = 0.2; in create_0hole_walls()
668 walls->border[5].loss0 = 0.6; in create_0hole_walls()
669 walls->border[5].loss_max = 0.9; in create_0hole_walls()
670 walls->border[5].loss_wspeed = 2.0; in create_0hole_walls()
673 walls->holenr = 0; in create_0hole_walls()
674 if( walls->hole != NULL ) billard_free( walls->hole ); in create_0hole_walls()
675 walls->hole = billard_malloc(sizeof(HoleType)*walls->holenr); in create_0hole_walls()