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