1 /* bzflag
2 * Copyright (c) 1993-2021 Tim Riker
3 *
4 * This package is free software; you can redistribute it and/or
5 * modify it under the terms of the license found in the file
6 * named COPYING that should have accompanied this file.
7 *
8 * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
9 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
10 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
11 */
12 #include "TankGeometryMgr.h"
13 using namespace TankGeometryUtils;
14
buildHighTurret(void)15 int TankGeometryUtils::buildHighTurret ( void )
16 {
17 int tris = 0;
18
19 glShadeModel(GL_FLAT);
20
21 glBegin(GL_TRIANGLE_STRIP);
22 doNormal3f(0.005904f, 0.999963f, 0.006290f);
23 doTexCoord2f(0.999f, 0.075f);
24 doVertex3f(-0.946f, 0.762f, 1.970f);
25 doTexCoord2f(1.060f, 0.015f);
26 doVertex3f(-0.964f, 0.765f, 1.510f);
27 doTexCoord2f(1.080f, 0.169f);
28 doVertex3f(-1.370f, 0.764f, 2.050f);
29 doNormal3f(-0.002024f, 0.999998f, 0.000330f);
30 doTexCoord2f(1.160f, 0.119f);
31 doVertex3f(-1.450f, 0.764f, 1.560f);
32 glEnd();
33 tris += 2;
34
35 glBegin(GL_TRIANGLE_STRIP);
36 doNormal3f(-0.002288f, -0.999997f, 0.000374f);
37 doTexCoord2f(0.866f, 0.402f);
38 doVertex3f(-1.370f, -0.765f, 2.050f);
39 doTexCoord2f(0.822f, 0.484f);
40 doVertex3f(-1.450f, -0.765f, 1.560f);
41 doTexCoord2f(0.766f, 0.326f);
42 doVertex3f(-0.946f, -0.766f, 1.970f);
43 doNormal3f(-0.000223f, -0.999998f, -0.002165f);
44 doTexCoord2f(0.711f, 0.394f);
45 doVertex3f(-0.964f, -0.765f, 1.510f);
46 glEnd();
47 tris += 2;
48
49 glBegin(GL_TRIANGLE_STRIP);
50 doNormal3f(-1.000000f, 0.000000f, 0.000000f);
51 doTexCoord2f(0.996f, -0.132f);
52 doVertex3f(-0.456f, 1.080f, 1.040f);
53 doTexCoord2f(0.559f, 0.339f);
54 doVertex3f(-0.456f, -1.060f, 1.040f);
55 doTexCoord2f(0.973f, -0.107f);
56 doVertex3f(-0.456f, 1.080f, 1.310f);
57 doTexCoord2f(0.583f, 0.312f);
58 doVertex3f(-0.456f, -1.060f, 1.310f);
59 doNormal3f(-0.366332f, 0.000000f, -0.930484f);
60 doTexCoord2f(1.060f, 0.015f);
61 doVertex3f(-0.964f, 0.765f, 1.510f);
62 doTexCoord2f(0.711f, 0.394f);
63 doVertex3f(-0.964f, -0.765f, 1.510f);
64 glEnd();
65 tris += 4;
66
67 glBegin(GL_TRIANGLE_STRIP);
68 doNormal3f(1.000000f, 0.000000f, 0.000000f);
69 doTexCoord2f(0.107f, -0.009f);
70 doVertex3f(1.480f, -0.516f, 1.040f);
71 doTexCoord2f(0.617f, -0.559f);
72 doVertex3f(1.480f, 0.516f, 1.040f);
73 doTexCoord2f(0.143f, -0.049f);
74 doVertex3f(1.480f, -0.516f, 1.310f);
75 doTexCoord2f(0.581f, -0.519f);
76 doVertex3f(1.480f, 0.516f, 1.310f);
77 doNormal3f(0.621395f, 0.000000f, -0.783498f);
78 doTexCoord2f(0.126f, -0.155f);
79 doVertex3f(1.770f, -0.434f, 1.540f);
80 doTexCoord2f(0.473f, -0.529f);
81 doVertex3f(1.770f, 0.434f, 1.540f);
82 doNormal3f(0.796162f, 0.000000f, 0.605083f);
83 doTexCoord2f(0.224f, -0.178f);
84 doVertex3f(1.580f, -0.434f, 1.790f);
85 doTexCoord2f(0.457f, -0.429f);
86 doVertex3f(1.580f, 0.435f, 1.790f);
87 doNormal3f(0.310402f, 0.000000f, 0.950605f);
88 doTexCoord2f(0.331f, -0.083f);
89 doVertex3f(1.090f, -0.697f, 1.950f);
90 doTexCoord2f(0.560f, -0.329f);
91 doVertex3f(1.090f, 0.697f, 1.950f);
92 doNormal3f(-0.009186f, 0.000000f, 0.999958f);
93 doTexCoord2f(0.546f, 0.156f);
94 doVertex3f(0.001f, -1.110f, 1.940f);
95 doTexCoord2f(0.812f, -0.134f);
96 doVertex3f(0.007f, 1.110f, 1.940f);
97 doNormal3f(-0.048902f, 0.000130f, 0.998804f);
98 doTexCoord2f(0.678f, 0.276f);
99 doVertex3f(-0.611f, -0.984f, 1.910f);
100 doTexCoord2f(0.944f, -0.010f);
101 doVertex3f(-0.611f, 1.010f, 1.910f);
102 doNormal3f(0.176299f, 0.000000f, 0.984337f);
103 doTexCoord2f(0.766f, 0.326f);
104 doVertex3f(-0.946f, -0.766f, 1.970f);
105 doTexCoord2f(0.999f, 0.075f);
106 doVertex3f(-0.946f, 0.762f, 1.970f);
107 glEnd();
108 tris += 14;
109
110 glBegin(GL_TRIANGLE_STRIP);
111 doNormal3f(-1.000000f, 0.000000f, 0.000000f);
112 doTexCoord2f(0.890f, 0.022f);
113 doVertex3f(-0.548f, 0.599f, 2.050f);
114 doTexCoord2f(0.909f, 0.002f);
115 doVertex3f(-0.548f, 0.599f, 1.920f);
116 doTexCoord2f(0.706f, 0.220f);
117 doVertex3f(-0.548f, -0.599f, 2.050f);
118 doTexCoord2f(0.687f, 0.241f);
119 doVertex3f(-0.548f, -0.599f, 1.920f);
120 glEnd();
121 tris += 2;
122
123 glBegin(GL_TRIANGLE_STRIP);
124 doNormal3f(0.000000f, 0.000000f, 1.000000f);
125 doTexCoord2f(0.606f, 0.158f);
126 doVertex3f(-0.156f, -0.796f, 2.050f);
127 doTexCoord2f(0.552f, 0.102f);
128 doVertex3f(0.108f, -0.757f, 2.050f);
129 doTexCoord2f(0.669f, 0.204f);
130 doVertex3f(-0.418f, -0.704f, 2.050f);
131 doTexCoord2f(0.532f, 0.067f);
132 doVertex3f(0.238f, -0.644f, 2.050f);
133 doTexCoord2f(0.706f, 0.220f);
134 doVertex3f(-0.548f, -0.599f, 2.050f);
135 doTexCoord2f(0.529f, 0.038f);
136 doVertex3f(0.313f, -0.503f, 2.050f);
137 doTexCoord2f(0.890f, 0.022f);
138 doVertex3f(-0.548f, 0.599f, 2.050f);
139 doTexCoord2f(0.695f, -0.140f);
140 doVertex3f(0.313f, 0.503f, 2.050f);
141 doTexCoord2f(0.871f, -0.013f);
142 doVertex3f(-0.418f, 0.704f, 2.050f);
143 doTexCoord2f(0.725f, -0.139f);
144 doVertex3f(0.238f, 0.644f, 2.050f);
145 doTexCoord2f(0.820f, -0.072f);
146 doVertex3f(-0.156f, 0.796f, 2.050f);
147 doTexCoord2f(0.760f, -0.122f);
148 doVertex3f(0.108f, 0.757f, 2.050f);
149 glEnd();
150 tris += 10;
151
152 glShadeModel(GL_SMOOTH);
153 glBegin(GL_TRIANGLE_STRIP);
154 doNormal3f(-0.542880f, -0.839586f, 0.019418f);
155 doTexCoord2f(0.766f, 0.326f);
156 doVertex3f(-0.946f, -0.766f, 1.970f);
157 doTexCoord2f(0.711f, 0.394f);
158 doVertex3f(-0.964f, -0.765f, 1.510f);
159 doNormal3f(-0.361706f, -0.931967f, 0.024608f);
160 doTexCoord2f(0.678f, 0.276f);
161 doVertex3f(-0.611f, -0.984f, 1.910f);
162 doNormal3f(-0.508623f, -0.860699f, -0.022373f);
163 doTexCoord2f(0.583f, 0.312f);
164 doVertex3f(-0.456f, -1.060f, 1.310f);
165 doNormal3f(0.138220f, -0.990318f, -0.012863f);
166 doTexCoord2f(0.546f, 0.156f);
167 doVertex3f(0.001f, -1.110f, 1.940f);
168 doNormal3f(-0.085240f, -0.996212f, -0.017176f);
169 doTexCoord2f(0.482f, 0.218f);
170 doVertex3f(0.014f, -1.100f, 1.300f);
171 doNormal3f(0.411649f, -0.910469f, -0.039891f);
172 doTexCoord2f(0.331f, -0.083f);
173 doVertex3f(1.090f, -0.697f, 1.950f);
174 doNormal3f(0.363757f, -0.931155f, -0.025121f);
175 doTexCoord2f(0.279f, 0.051f);
176 doVertex3f(0.912f, -0.749f, 1.300f);
177 doNormal3f(0.276338f, -0.955239f, 0.105616f);
178 doTexCoord2f(0.224f, -0.178f);
179 doVertex3f(1.580f, -0.434f, 1.790f);
180 doNormal3f(0.377141f, -0.922775f, 0.079070f);
181 doTexCoord2f(0.143f, -0.049f);
182 doVertex3f(1.480f, -0.516f, 1.310f);
183 doNormal3f(0.172242f, -0.976318f, 0.130904f);
184 doTexCoord2f(0.126f, -0.155f);
185 doVertex3f(1.770f, -0.434f, 1.540f);
186 glEnd();
187 tris += 9;
188
189 glBegin(GL_TRIANGLE_STRIP);
190 doNormal3f(0.174171f, 0.976300f, 0.128465f);
191 doTexCoord2f(0.473f, -0.529f);
192 doVertex3f(1.770f, 0.434f, 1.540f);
193 doTexCoord2f(0.581f, -0.519f);
194 doVertex3f(1.480f, 0.516f, 1.310f);
195 doNormal3f(0.418428f, 0.908177f, 0.011546f);
196 doTexCoord2f(0.457f, -0.429f);
197 doVertex3f(1.580f, 0.435f, 1.790f);
198 doNormal3f(0.377227f, 0.922902f, 0.077151f);
199 doTexCoord2f(0.690f, -0.391f);
200 doVertex3f(0.912f, 0.749f, 1.300f);
201 doNormal3f(0.360127f, 0.932727f, -0.018136f);
202 doTexCoord2f(0.560f, -0.329f);
203 doVertex3f(1.090f, 0.697f, 1.950f);
204 doNormal3f(0.363757f, 0.931155f, -0.025121f);
205 doTexCoord2f(0.872f, -0.201f);
206 doVertex3f(0.014f, 1.100f, 1.300f);
207 doNormal3f(-0.103074f, 0.994267f, 0.028456f);
208 doTexCoord2f(0.812f, -0.134f);
209 doVertex3f(0.007f, 1.110f, 1.940f);
210 doNormal3f(-0.042895f, 0.998951f, -0.016023f);
211 doTexCoord2f(0.973f, -0.107f);
212 doVertex3f(-0.456f, 1.080f, 1.310f);
213 doNormal3f(-0.565415f, 0.824783f, -0.006201f);
214 doTexCoord2f(0.944f, -0.010f);
215 doVertex3f(-0.611f, 1.010f, 1.910f);
216 doNormal3f(-0.538099f, 0.841894f, -0.040788f);
217 doTexCoord2f(1.060f, 0.015f);
218 doVertex3f(-0.964f, 0.765f, 1.510f);
219 doNormal3f(-0.591467f, 0.805829f, 0.028400f);
220 doTexCoord2f(0.999f, 0.075f);
221 doVertex3f(-0.946f, 0.762f, 1.970f);
222 glEnd();
223 tris += 9;
224
225 glBegin(GL_TRIANGLE_STRIP);
226 doNormal3f(-0.928088f, 0.340137f, 0.151525f);
227 doTexCoord2f(1.080f, 0.169f);
228 doVertex3f(-1.370f, 0.764f, 2.050f);
229 doTexCoord2f(1.160f, 0.119f);
230 doVertex3f(-1.450f, 0.764f, 1.560f);
231 doNormal3f(-0.962319f, 0.234615f, 0.137474f);
232 doTexCoord2f(1.080f, 0.236f);
233 doVertex3f(-1.510f, 0.382f, 2.050f);
234 doTexCoord2f(1.190f, 0.146f);
235 doVertex3f(-1.580f, 0.382f, 1.560f);
236 doNormal3f(-0.986928f, -0.003154f, 0.161131f);
237 doTexCoord2f(1.010f, 0.325f);
238 doVertex3f(-1.560f, -0.010f, 2.050f);
239 doTexCoord2f(0.912f, 0.468f);
240 doVertex3f(-1.640f, -0.010f, 1.560f);
241 doNormal3f(-0.961579f, -0.237688f, 0.137369f);
242 doTexCoord2f(0.933f, 0.390f);
243 doVertex3f(-1.510f, -0.383f, 2.050f);
244 doNormal3f(-0.961237f, -0.239095f, 0.137320f);
245 doTexCoord2f(0.850f, 0.509f);
246 doVertex3f(-1.580f, -0.383f, 1.560f);
247 doNormal3f(-0.935573f, -0.318389f, 0.152747f);
248 doTexCoord2f(0.866f, 0.402f);
249 doVertex3f(-1.370f, -0.765f, 2.050f);
250 doTexCoord2f(0.822f, 0.484f);
251 doVertex3f(-1.450f, -0.765f, 1.560f);
252 glEnd();
253 tris += 8;
254
255 glBegin(GL_TRIANGLE_STRIP);
256 doNormal3f(-0.084890f, -0.996390f, 0.000000f);
257 doTexCoord2f(0.583f, 0.312f);
258 doVertex3f(-0.456f, -1.060f, 1.310f);
259 doTexCoord2f(0.559f, 0.339f);
260 doVertex3f(-0.456f, -1.060f, 1.040f);
261 doNormal3f(0.143220f, -0.989691f, 0.000000f);
262 doTexCoord2f(0.482f, 0.218f);
263 doVertex3f(0.014f, -1.100f, 1.300f);
264 doTexCoord2f(0.458f, 0.244f);
265 doVertex3f(0.014f, -1.100f, 1.030f);
266 doNormal3f(0.371709f, -0.928349f, 0.000000f);
267 doTexCoord2f(0.279f, 0.051f);
268 doVertex3f(0.912f, -0.749f, 1.300f);
269 doTexCoord2f(0.248f, 0.084f);
270 doVertex3f(0.912f, -0.749f, 1.030f);
271 doNormal3f(0.379521f, -0.925183f, 0.000000f);
272 doTexCoord2f(0.143f, -0.049f);
273 doVertex3f(1.480f, -0.516f, 1.310f);
274 doTexCoord2f(0.107f, -0.009f);
275 doVertex3f(1.480f, -0.516f, 1.040f);
276 glEnd();
277 tris += 6;
278
279 glBegin(GL_TRIANGLE_STRIP);
280 doNormal3f(0.379521f, 0.925183f, 0.000000f);
281 doTexCoord2f(0.581f, -0.519f);
282 doVertex3f(1.480f, 0.516f, 1.310f);
283 doTexCoord2f(0.617f, -0.559f);
284 doVertex3f(1.480f, 0.516f, 1.040f);
285 doNormal3f(0.371709f, 0.928349f, 0.000000f);
286 doTexCoord2f(0.690f, -0.391f);
287 doVertex3f(0.912f, 0.749f, 1.300f);
288 doTexCoord2f(0.721f, -0.424f);
289 doVertex3f(0.912f, 0.749f, 1.030f);
290 doNormal3f(0.164178f, 0.986431f, 0.000000f);
291 doTexCoord2f(0.872f, -0.201f);
292 doVertex3f(0.014f, 1.100f, 1.300f);
293 doTexCoord2f(0.895f, -0.226f);
294 doVertex3f(0.014f, 1.100f, 1.030f);
295 doNormal3f(-0.042560f, 0.999094f, 0.000000f);
296 doTexCoord2f(0.973f, -0.107f);
297 doVertex3f(-0.456f, 1.080f, 1.310f);
298 doTexCoord2f(0.996f, -0.132f);
299 doVertex3f(-0.456f, 1.080f, 1.040f);
300 glEnd();
301 tris += 6;
302
303 glBegin(GL_TRIANGLE_STRIP);
304 doNormal3f(-0.628337f, -0.777941f, 0.000000f);
305 doTexCoord2f(0.706f, 0.220f);
306 doVertex3f(-0.548f, -0.599f, 2.050f);
307 doTexCoord2f(0.687f, 0.241f);
308 doVertex3f(-0.548f, -0.599f, 1.920f);
309 doNormal3f(-0.486915f, -0.873449f, 0.000000f);
310 doTexCoord2f(0.669f, 0.204f);
311 doVertex3f(-0.418f, -0.704f, 2.050f);
312 doTexCoord2f(0.651f, 0.223f);
313 doVertex3f(-0.418f, -0.704f, 1.920f);
314 doNormal3f(-0.095369f, -0.995442f, 0.000000f);
315 doTexCoord2f(0.606f, 0.158f);
316 doVertex3f(-0.156f, -0.796f, 2.050f);
317 doTexCoord2f(0.589f, 0.176f);
318 doVertex3f(-0.156f, -0.796f, 1.920f);
319 doNormal3f(0.417879f, -0.908502f, 0.000000f);
320 doTexCoord2f(0.552f, 0.102f);
321 doVertex3f(0.108f, -0.757f, 2.050f);
322 doTexCoord2f(0.535f, 0.120f);
323 doVertex3f(0.108f, -0.757f, 1.920f);
324 doNormal3f(0.782548f, -0.622590f, 0.000000f);
325 doTexCoord2f(0.532f, 0.067f);
326 doVertex3f(0.238f, -0.644f, 2.050f);
327 doTexCoord2f(0.514f, 0.087f);
328 doVertex3f(0.238f, -0.644f, 1.920f);
329 doNormal3f(0.970276f, -0.242000f, 0.000000f);
330 doTexCoord2f(0.529f, 0.038f);
331 doVertex3f(0.313f, -0.503f, 2.050f);
332 doTexCoord2f(0.510f, 0.059f);
333 doVertex3f(0.313f, -0.503f, 1.920f);
334 doNormal3f(0.970276f, 0.242000f, 0.000000f);
335 doTexCoord2f(0.695f, -0.140f);
336 doVertex3f(0.313f, 0.503f, 2.050f);
337 doTexCoord2f(0.715f, -0.161f);
338 doVertex3f(0.313f, 0.503f, 1.920f);
339 doNormal3f(0.782548f, 0.622590f, 0.000000f);
340 doTexCoord2f(0.725f, -0.139f);
341 doVertex3f(0.238f, 0.644f, 2.050f);
342 doTexCoord2f(0.743f, -0.159f);
343 doVertex3f(0.238f, 0.644f, 1.920f);
344 doNormal3f(0.417879f, 0.908502f, 0.000000f);
345 doTexCoord2f(0.760f, -0.122f);
346 doVertex3f(0.108f, 0.757f, 2.050f);
347 doTexCoord2f(0.778f, -0.140f);
348 doVertex3f(0.108f, 0.757f, 1.920f);
349 doNormal3f(-0.095369f, 0.995442f, 0.000000f);
350 doTexCoord2f(0.820f, -0.072f);
351 doVertex3f(-0.156f, 0.796f, 2.050f);
352 doTexCoord2f(0.837f, -0.090f);
353 doVertex3f(-0.156f, 0.796f, 1.920f);
354 doNormal3f(-0.486915f, 0.873449f, 0.000000f);
355 doTexCoord2f(0.871f, -0.013f);
356 doVertex3f(-0.418f, 0.704f, 2.050f);
357 doTexCoord2f(0.888f, -0.032f);
358 doVertex3f(-0.418f, 0.704f, 1.920f);
359 doNormal3f(-0.628337f, 0.777941f, 0.000000f);
360 doTexCoord2f(0.890f, 0.022f);
361 doVertex3f(-0.548f, 0.599f, 2.050f);
362 doTexCoord2f(0.909f, 0.002f);
363 doVertex3f(-0.548f, 0.599f, 1.920f);
364 glEnd();
365 tris += 22;
366
367 glBegin(GL_TRIANGLE_FAN);
368 doNormal3f(-0.085837f, 0.008268f, -0.996275f);
369 doTexCoord2f(1.060f, 0.015f);
370 doVertex3f(-0.964f, 0.765f, 1.510f);
371 doNormal3f(-0.102340f, 0.000000f, -0.994749f);
372 doTexCoord2f(0.711f, 0.394f);
373 doVertex3f(-0.964f, -0.765f, 1.510f);
374 doNormal3f(-0.075999f, -0.008443f, -0.997072f);
375 doTexCoord2f(0.822f, 0.484f);
376 doVertex3f(-1.450f, -0.765f, 1.560f);
377 doNormal3f(-0.055963f, -0.013453f, -0.998342f);
378 doTexCoord2f(0.850f, 0.509f);
379 doVertex3f(-1.580f, -0.383f, 1.560f);
380 doNormal3f(-0.075843f, 0.001825f, -0.997118f);
381 doTexCoord2f(0.912f, 0.468f);
382 doVertex3f(-1.640f, -0.010f, 1.560f);
383 doNormal3f(-0.102349f, 0.034831f, -0.994139f);
384 doTexCoord2f(1.190f, 0.146f);
385 doVertex3f(-1.580f, 0.382f, 1.560f);
386 doTexCoord2f(1.160f, 0.119f);
387 doVertex3f(-1.450f, 0.764f, 1.560f);
388 glEnd();
389 tris += 5;
390
391 glBegin(GL_TRIANGLE_FAN);
392 doNormal3f(0.158932f, -0.015248f, 0.987172f);
393 doTexCoord2f(0.999f, 0.075f);
394 doVertex3f(-0.946f, 0.762f, 1.970f);
395 doNormal3f(0.184674f, -0.067682f, 0.980467f);
396 doTexCoord2f(1.080f, 0.169f);
397 doVertex3f(-1.370f, 0.764f, 2.050f);
398 doNormal3f(0.169066f, -0.043637f, 0.984638f);
399 doTexCoord2f(1.080f, 0.236f);
400 doVertex3f(-1.510f, 0.382f, 2.050f);
401 doNormal3f(0.132108f, -0.002352f, 0.991233f);
402 doTexCoord2f(1.010f, 0.325f);
403 doVertex3f(-1.560f, -0.010f, 2.050f);
404 doNormal3f(0.095928f, 0.022277f, 0.995139f);
405 doTexCoord2f(0.933f, 0.390f);
406 doVertex3f(-1.510f, -0.383f, 2.050f);
407 doNormal3f(0.185408f, 0.000000f, 0.982662f);
408 doTexCoord2f(0.866f, 0.402f);
409 doVertex3f(-1.370f, -0.765f, 2.050f);
410 doTexCoord2f(0.766f, 0.326f);
411 doVertex3f(-0.946f, -0.766f, 1.970f);
412 glEnd();
413 tris += 5;
414
415 return tris;
416 }
417 /*
418 * Local Variables: ***
419 * mode: C ***
420 * tab-width: 8 ***
421 * c-basic-offset: 2 ***
422 * indent-tabs-mode: t ***
423 * End: ***
424 * ex: shiftwidth=2 tabstop=8
425 */
426