130d932d3187f2955e112d9e36d38dcfea22540e
[xscreensaver] / hacks / glx / dolphin.c
1 /* atlantis --- Shows moving 3D sea animals */
2
3 #if !defined( lint ) && !defined( SABER )
4 static const char sccsid[] = "@(#)dolphin.c     1.1 98/05/13 xlockmore";
5
6 #endif
7
8 /* Copyright (c) E. Lassauge, 1998. */
9
10 /*
11  * Permission to use, copy, modify, and distribute this software and its
12  * documentation for any purpose and without fee is hereby granted,
13  * provided that the above copyright notice appear in all copies and that
14  * both that copyright notice and this permission notice appear in
15  * supporting documentation.
16  *
17  * This file is provided AS IS with no warranties of any kind.  The author
18  * shall have no liability with respect to the infringement of copyrights,
19  * trade secrets or any patents by this file or any part thereof.  In no
20  * event will the author be liable for any lost revenue or profits or
21  * other special, indirect and consequential damages.
22  *
23  * The original code for this mode was written by Mark J. Kilgard
24  * as a demo for openGL programming.
25  * 
26  * Porting it to xlock  was possible by comparing the original Mesa's morph3d 
27  * demo with it's ported version to xlock, so thanks for Marcelo F. Vianna 
28  * (look at morph3d.c) for his indirect help.
29  *
30  * Thanks goes also to Brian Paul for making it possible and inexpensive
31  * to use OpenGL at home.
32  *
33  * My e-mail address is lassauge@sagem.fr
34  *
35  * Eric Lassauge  (May-13-1998)
36  *
37  */
38
39 /**
40  * (c) Copyright 1993, 1994, Silicon Graphics, Inc.
41  * ALL RIGHTS RESERVED
42  * Permission to use, copy, modify, and distribute this software for
43  * any purpose and without fee is hereby granted, provided that the above
44  * copyright notice appear in all copies and that both the copyright notice
45  * and this permission notice appear in supporting documentation, and that
46  * the name of Silicon Graphics, Inc. not be used in advertising
47  * or publicity pertaining to distribution of the software without specific,
48  * written prior permission.
49  *
50  * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS"
51  * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE,
52  * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR
53  * FITNESS FOR A PARTICULAR PURPOSE.  IN NO EVENT SHALL SILICON
54  * GRAPHICS, INC.  BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT,
55  * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY
56  * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION,
57  * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF
58  * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC.  HAS BEEN
59  * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON
60  * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE
61  * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE.
62  *
63  * US Government Users Restricted Rights
64  * Use, duplication, or disclosure by the Government is subject to
65  * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph
66  * (c)(1)(ii) of the Rights in Technical Data and Computer Software
67  * clause at DFARS 252.227-7013 and/or in similar or successor
68  * clauses in the FAR or the DOD or NASA FAR Supplement.
69  * Unpublished-- rights reserved under the copyright laws of the
70  * United States.  Contractor/manufacturer is Silicon Graphics,
71  * Inc., 2011 N.  Shoreline Blvd., Mountain View, CA 94039-7311.
72  *
73  * OpenGL(TM) is a trademark of Silicon Graphics, Inc.
74  */
75 #ifndef STANDALONE
76 #include "xlock.h"
77 #endif
78
79 #ifdef USE_GL
80
81 #ifdef STANDALONE
82 #include <GL/glx.h>
83 #endif
84
85 #include <math.h>
86 #include "atlantis.h"
87 /* *INDENT-OFF* */
88 static float N001[3] = {-0.005937 ,-0.101998 ,-0.994767};
89 static float N002[3] = {0.936780 ,-0.200803 ,0.286569};
90 static float N003[3] = {-0.233062 ,0.972058 ,0.028007};
91 #if 0
92 static float N004[3] = {0.000000 ,1.000000 ,0.000000};
93 #endif
94 static float N005[3] = {0.898117 ,0.360171 ,0.252315};
95 static float N006[3] = {-0.915437 ,0.348456 ,0.201378};
96 static float N007[3] = {0.602263 ,-0.777527 ,0.180920};
97 static float N008[3] = {-0.906912 ,-0.412015 ,0.088061};
98 #if 0
99 static float N009[3] = {-0.015623 ,0.999878 ,0.000000};
100 static float N010[3] = {0.000000 ,-0.992278 ,0.124035};
101 static float N011[3] = {0.000000 ,-0.936329 ,-0.351123};
102 #endif
103 static float N012[3] = {0.884408 ,-0.429417 ,-0.182821};
104 static float N013[3] = {0.921121 ,0.311084 ,-0.234016};
105 static float N014[3] = {0.382635 ,0.877882 ,-0.287948};
106 static float N015[3] = {-0.380046 ,0.888166 ,-0.258316};
107 static float N016[3] = {-0.891515 ,0.392238 ,-0.226607};
108 static float N017[3] = {-0.901419 ,-0.382002 ,-0.203763};
109 static float N018[3] = {-0.367225 ,-0.911091 ,-0.187243};
110 static float N019[3] = {0.339539 ,-0.924846 ,-0.171388};
111 static float N020[3] = {0.914706 ,-0.378617 ,-0.141290};
112 static float N021[3] = {0.950662 ,0.262713 ,-0.164994};
113 static float N022[3] = {0.546359 ,0.801460 ,-0.243218};
114 static float N023[3] = {-0.315796 ,0.917068 ,-0.243431};
115 static float N024[3] = {-0.825687 ,0.532277 ,-0.186875};
116 static float N025[3] = {-0.974763 ,-0.155232 ,-0.160435};
117 static float N026[3] = {-0.560596 ,-0.816658 ,-0.137119};
118 static float N027[3] = {0.380210 ,-0.910817 ,-0.160786};
119 static float N028[3] = {0.923772 ,-0.358322 ,-0.135093};
120 static float N029[3] = {0.951202 ,0.275053 ,-0.139859};
121 static float N030[3] = {0.686099 ,0.702548 ,-0.188932};
122 static float N031[3] = {-0.521865 ,0.826719 ,-0.210220};
123 static float N032[3] = {-0.923820 ,0.346739 ,-0.162258};
124 static float N033[3] = {-0.902095 ,-0.409995 ,-0.134646};
125 static float N034[3] = {-0.509115 ,-0.848498 ,-0.144404};
126 static float N035[3] = {0.456469 ,-0.880293 ,-0.129305};
127 static float N036[3] = {0.873401 ,-0.475489 ,-0.105266};
128 static float N037[3] = {0.970825 ,0.179861 ,-0.158584};
129 static float N038[3] = {0.675609 ,0.714187 ,-0.183004};
130 static float N039[3] = {-0.523574 ,0.830212 ,-0.191360};
131 static float N040[3] = {-0.958895 ,0.230808 ,-0.165071};
132 static float N041[3] = {-0.918285 ,-0.376803 ,-0.121542};
133 static float N042[3] = {-0.622467 ,-0.774167 ,-0.114888};
134 static float N043[3] = {0.404497 ,-0.908807 ,-0.102231};
135 static float N044[3] = {0.930538 ,-0.365155 ,-0.027588};
136 static float N045[3] = {0.921920 ,0.374157 ,-0.100345};
137 static float N046[3] = {0.507346 ,0.860739 ,0.041562};
138 static float N047[3] = {-0.394646 ,0.918815 ,-0.005730};
139 static float N048[3] = {-0.925411 ,0.373024 ,-0.066837};
140 static float N049[3] = {-0.945337 ,-0.322309 ,-0.049551};
141 static float N050[3] = {-0.660437 ,-0.750557 ,-0.022072};
142 static float N051[3] = {0.488835 ,-0.871950 ,-0.027261};
143 static float N052[3] = {0.902599 ,-0.421397 ,0.087969};
144 static float N053[3] = {0.938636 ,0.322606 ,0.122020};
145 static float N054[3] = {0.484605 ,0.871078 ,0.079878};
146 static float N055[3] = {-0.353607 ,0.931559 ,0.084619};
147 static float N056[3] = {-0.867759 ,0.478564 ,0.134054};
148 static float N057[3] = {-0.951583 ,-0.296030 ,0.082794};
149 static float N058[3] = {-0.672355 ,-0.730209 ,0.121384};
150 static float N059[3] = {0.528336 ,-0.842452 ,0.105525};
151 static float N060[3] = {0.786913 ,-0.564760 ,0.248627};
152 #if 0
153 static float N061[3] = {0.000000 ,1.000000 ,0.000000};
154 #endif
155 static float N062[3] = {0.622098 ,0.765230 ,0.165584};
156 static float N063[3] = {-0.631711 ,0.767816 ,0.106773};
157 static float N064[3] = {-0.687886 ,0.606351 ,0.398938};
158 static float N065[3] = {-0.946327 ,-0.281623 ,0.158598};
159 static float N066[3] = {-0.509549 ,-0.860437 ,0.002776};
160 static float N067[3] = {0.462594 ,-0.876692 ,0.131977};
161 #if 0
162 static float N068[3] = {0.000000 ,-0.992278 ,0.124035};
163 static float N069[3] = {0.000000 ,-0.970143 ,-0.242536};
164 static float N070[3] = {0.015502 ,0.992159 ,-0.124020};
165 #endif
166 static float N071[3] = {0.000000 ,1.000000 ,0.000000};
167 #if 0
168 static float N072[3] = {0.000000 ,1.000000 ,0.000000};
169 static float N073[3] = {0.000000 ,1.000000 ,0.000000};
170 static float N074[3] = {0.000000 ,-1.000000 ,0.000000};
171 static float N075[3] = {-0.242536 ,0.000000 ,-0.970143};
172 static float N076[3] = {-0.010336 ,-0.992225 ,-0.124028};
173 #endif
174 static float N077[3] = {-0.880770 ,0.461448 ,0.106351};
175 static float N078[3] = {-0.880770 ,0.461448 ,0.106351};
176 static float N079[3] = {-0.880770 ,0.461448 ,0.106351};
177 static float N080[3] = {-0.880770 ,0.461448 ,0.106351};
178 static float N081[3] = {-0.571197 ,0.816173 ,0.087152};
179 static float N082[3] = {-0.880770 ,0.461448 ,0.106351};
180 static float N083[3] = {-0.571197 ,0.816173 ,0.087152};
181 static float N084[3] = {-0.571197 ,0.816173 ,0.087152};
182 static float N085[3] = {-0.880770 ,0.461448 ,0.106351};
183 static float N086[3] = {-0.571197 ,0.816173 ,0.087152};
184 static float N087[3] = {-0.880770 ,0.461448 ,0.106351};
185 static float N088[3] = {-0.880770 ,0.461448 ,0.106351};
186 static float N089[3] = {-0.880770 ,0.461448 ,0.106351};
187 static float N090[3] = {-0.880770 ,0.461448 ,0.106351};
188 static float N091[3] = {0.000000 ,1.000000 ,0.000000};
189 static float N092[3] = {0.000000 ,1.000000 ,0.000000};
190 static float N093[3] = {0.000000 ,1.000000 ,0.000000};
191 static float N094[3] = {1.000000 ,0.000000 ,0.000000};
192 static float N095[3] = {-1.000000 ,0.000000 ,0.000000};
193 #if 0
194 static float N096[3] = {0.000000 ,1.000000 ,0.000000};
195 #endif
196 static float N097[3] = {-0.697296 ,0.702881 ,0.140491};
197 static float N098[3] = {0.918864 ,0.340821 ,0.198819};
198 static float N099[3] = {-0.932737 ,0.201195 ,0.299202};
199 static float N100[3] = {0.029517 ,0.981679 ,0.188244};
200 #if 0
201 static float N101[3] = {0.000000 ,1.000000 ,0.000000};
202 #endif
203 static float N102[3] = {0.813521 ,-0.204936 ,0.544229};
204 #if 0
205 static float N103[3] = {0.000000 ,1.000000 ,0.000000};
206 static float N104[3] = {0.000000 ,1.000000 ,0.000000};
207 static float N105[3] = {0.000000 ,1.000000 ,0.000000};
208 static float N106[3] = {0.000000 ,1.000000 ,0.000000};
209 static float N107[3] = {0.000000 ,1.000000 ,0.000000};
210 static float N108[3] = {0.000000 ,1.000000 ,0.000000};
211 static float N109[3] = {0.000000 ,1.000000 ,0.000000};
212 #endif
213 static float N110[3] = {-0.781480 ,-0.384779 ,0.491155};
214 static float N111[3] = {-0.722243 ,0.384927 ,0.574627};
215 static float N112[3] = {-0.752278 ,0.502679 ,0.425901};
216 static float N113[3] = {0.547257 ,0.367910 ,0.751766};
217 static float N114[3] = {0.725949 ,-0.232568 ,0.647233};
218 static float N115[3] = {-0.747182 ,-0.660786 ,0.071280};
219 static float N116[3] = {0.931519 ,0.200748 ,0.303270};
220 static float N117[3] = {-0.828928 ,0.313757 ,0.463071};
221 static float N118[3] = {0.902554 ,-0.370967 ,0.218587};
222 static float N119[3] = {-0.879257 ,-0.441851 ,0.177973};
223 static float N120[3] = {0.642327 ,0.611901 ,0.461512};
224 static float N121[3] = {0.964817 ,-0.202322 ,0.167910};
225 static float N122[3] = {0.000000 ,1.000000 ,0.000000};
226 #if 0
227 static float N123[3] = {-0.980734 ,0.041447 ,0.190900};
228 static float N124[3] = {-0.980734 ,0.041447 ,0.190900};
229 static float N125[3] = {-0.980734 ,0.041447 ,0.190900};
230 static float N126[3] = {0.000000 ,1.000000 ,0.000000};
231 static float N127[3] = {0.000000 ,1.000000 ,0.000000};
232 static float N128[3] = {0.000000 ,1.000000 ,0.000000};
233 static float N129[3] = {0.963250 ,0.004839 ,0.268565};
234 static float N130[3] = {0.963250 ,0.004839 ,0.268565};
235 static float N131[3] = {0.963250 ,0.004839 ,0.268565};
236 static float N132[3] = {0.000000 ,1.000000 ,0.000000};
237 static float N133[3] = {0.000000 ,1.000000 ,0.000000};
238 static float N134[3] = {0.000000 ,1.000000 ,0.000000};
239 #endif
240 static float P001[3] = {5.68, -300.95, 1324.70};
241 static float P002[3] = {338.69, -219.63, 9677.03};
242 static float P003[3] = {12.18, 474.59, 9138.14};
243 #if 0
244 static float P004[3] = {-7.49, -388.91, 10896.74};
245 #endif
246 static float P005[3] = {487.51, 198.05, 9350.78};
247 static float P006[3] = {-457.61, 68.74, 9427.85};
248 static float P007[3] = {156.52, -266.72, 10311.68};
249 static float P008[3] = {-185.56, -266.51, 10310.47};
250 static float P009[3] = {124.39, -261.46, 1942.34};
251 static float P010[3] = {-130.05, -261.46, 1946.03};
252 static float P011[3] = {141.07, -320.11, 1239.38};
253 static float P012[3] = {156.48, -360.12, 2073.41};
254 static float P013[3] = {162.00, -175.88, 2064.44};
255 static float P014[3] = {88.16, -87.72, 2064.02};
256 static float P015[3] = {-65.21, -96.13, 2064.02};
257 static float P016[3] = {-156.48, -180.96, 2064.44};
258 static float P017[3] = {-162.00, -368.93, 2082.39};
259 static float P018[3] = {-88.16, -439.22, 2082.39};
260 static float P019[3] = {65.21, -440.32, 2083.39};
261 static float P020[3] = {246.87, -356.02, 2576.95};
262 static float P021[3] = {253.17, -111.15, 2567.15};
263 static float P022[3] = {132.34, 51.41, 2559.84};
264 static float P023[3] = {-97.88, 40.44, 2567.15};
265 static float P024[3] = {-222.97, -117.49, 2567.15};
266 static float P025[3] = {-252.22, -371.53, 2569.92};
267 static float P026[3] = {-108.44, -518.19, 2586.75};
268 static float P027[3] = {97.88, -524.79, 2586.75};
269 static float P028[3] = {370.03, -421.19, 3419.70};
270 static float P029[3] = {351.15, -16.98, 3423.17};
271 static float P030[3] = {200.66, 248.46, 3430.37};
272 static float P031[3] = {-148.42, 235.02, 3417.91};
273 static float P032[3] = {-360.21, -30.27, 3416.84};
274 static float P033[3] = {-357.90, -414.89, 3407.04};
275 static float P034[3] = {-148.88, -631.35, 3409.90};
276 static float P035[3] = {156.38, -632.59, 3419.70};
277 static float P036[3] = {462.61, -469.21, 4431.51};
278 static float P037[3] = {466.60, 102.25, 4434.98};
279 static float P038[3] = {243.05, 474.34, 4562.02};
280 static float P039[3] = {-191.23, 474.40, 4554.42};
281 static float P040[3] = {-476.12, 111.05, 4451.11};
282 static float P041[3] = {-473.36, -470.74, 4444.78};
283 static float P042[3] = {-266.95, -748.41, 4447.78};
284 static float P043[3] = {211.14, -749.91, 4429.73};
285 static float P044[3] = {680.57, -370.27, 5943.46};
286 static float P045[3] = {834.01, 363.09, 6360.63};
287 static float P046[3] = {371.29, 804.51, 6486.26};
288 static float P047[3] = {-291.43, 797.22, 6494.28};
289 static float P048[3] = {-784.13, 370.75, 6378.01};
290 static float P049[3] = {-743.29, -325.82, 5943.46};
291 static float P050[3] = {-383.24, -804.77, 5943.46};
292 static float P051[3] = {283.47, -846.09, 5943.46};
293 static float iP001[3] = {5.68, -300.95, 1324.70};
294 #if 0
295 static float iP002[3] = {338.69, -219.63, 9677.03};
296 static float iP003[3] = {12.18, 624.93, 8956.39};
297 static float iP004[3] = {-7.49, -388.91, 10896.74};
298 static float iP005[3] = {487.51, 198.05, 9350.78};
299 static float iP006[3] = {-457.61, 199.04, 9353.01};
300 static float iP007[3] = {156.52, -266.72, 10311.68};
301 static float iP008[3] = {-185.56, -266.51, 10310.47};
302 #endif
303 static float iP009[3] = {124.39, -261.46, 1942.34};
304 static float iP010[3] = {-130.05, -261.46, 1946.03};
305 static float iP011[3] = {141.07, -320.11, 1239.38};
306 static float iP012[3] = {156.48, -360.12, 2073.41};
307 static float iP013[3] = {162.00, -175.88, 2064.44};
308 static float iP014[3] = {88.16, -87.72, 2064.02};
309 static float iP015[3] = {-65.21, -96.13, 2064.02};
310 static float iP016[3] = {-156.48, -180.96, 2064.44};
311 static float iP017[3] = {-162.00, -368.93, 2082.39};
312 static float iP018[3] = {-88.16, -439.22, 2082.39};
313 static float iP019[3] = {65.21, -440.32, 2083.39};
314 static float iP020[3] = {246.87, -356.02, 2576.95};
315 static float iP021[3] = {253.17, -111.15, 2567.15};
316 static float iP022[3] = {132.34, 51.41, 2559.84};
317 static float iP023[3] = {-97.88, 40.44, 2567.15};
318 static float iP024[3] = {-222.97, -117.49, 2567.15};
319 static float iP025[3] = {-252.22, -371.53, 2569.92};
320 static float iP026[3] = {-108.44, -518.19, 2586.75};
321 static float iP027[3] = {97.88, -524.79, 2586.75};
322 static float iP028[3] = {370.03, -421.19, 3419.70};
323 static float iP029[3] = {351.15, -16.98, 3423.17};
324 static float iP030[3] = {200.66, 248.46, 3430.37};
325 static float iP031[3] = {-148.42, 235.02, 3417.91};
326 static float iP032[3] = {-360.21, -30.27, 3416.84};
327 static float iP033[3] = {-357.90, -414.89, 3407.04};
328 static float iP034[3] = {-148.88, -631.35, 3409.90};
329 static float iP035[3] = {156.38, -632.59, 3419.70};
330 static float iP036[3] = {462.61, -469.21, 4431.51};
331 static float iP037[3] = {466.60, 102.25, 4434.98};
332 static float iP038[3] = {243.05, 474.34, 4562.02};
333 static float iP039[3] = {-191.23, 474.40, 4554.42};
334 static float iP040[3] = {-476.12, 111.05, 4451.11};
335 static float iP041[3] = {-473.36, -470.74, 4444.78};
336 static float iP042[3] = {-266.95, -748.41, 4447.78};
337 static float iP043[3] = {211.14, -749.91, 4429.73};
338 static float iP044[3] = {680.57, -370.27, 5943.46};
339 static float iP045[3] = {834.01, 363.09, 6360.63};
340 static float iP046[3] = {371.29, 804.51, 6486.26};
341 static float iP047[3] = {-291.43, 797.22, 6494.28};
342 static float iP048[3] = {-784.13, 370.75, 6378.01};
343 static float iP049[3] = {-743.29, -325.82, 5943.46};
344 static float iP050[3] = {-383.24, -804.77, 5943.46};
345 static float iP051[3] = {283.47, -846.09, 5943.46};
346 static float P052[3] = {599.09, -300.15, 7894.03};
347 static float P053[3] = {735.48, 306.26, 7911.92};
348 static float P054[3] = {246.22, 558.53, 8460.50};
349 static float P055[3] = {-230.41, 559.84, 8473.23};
350 static float P056[3] = {-698.66, 320.83, 7902.59};
351 static float P057[3] = {-643.29, -299.16, 7902.59};
352 static float P058[3] = {-341.47, -719.30, 7902.59};
353 static float P059[3] = {252.57, -756.12, 7902.59};
354 static float P060[3] = {458.39, -265.31, 9355.44};
355 #if 0
356 static float P061[3] = {433.38, -161.90, 9503.03};
357 #endif
358 static float P062[3] = {224.04, 338.75, 9450.30};
359 static float P063[3] = {-165.71, 341.04, 9462.35};
360 static float P064[3] = {-298.11, 110.13, 10180.37};
361 static float P065[3] = {-473.99, -219.71, 9355.44};
362 static float P066[3] = {-211.97, -479.87, 9355.44};
363 static float P067[3] = {192.86, -491.45, 9348.73};
364 static float P068[3] = {-136.29, -319.84, 1228.73};
365 static float P069[3] = {1111.17, -314.14, 1314.19};
366 static float P070[3] = {-1167.34, -321.61, 1319.45};
367 static float P071[3] = {1404.86, -306.66, 1235.45};
368 static float P072[3] = {-1409.73, -314.14, 1247.66};
369 static float P073[3] = {1254.01, -296.87, 1544.58};
370 static float P074[3] = {-1262.09, -291.70, 1504.26};
371 static float P075[3] = {965.71, -269.26, 1742.65};
372 static float P076[3] = {-900.97, -276.74, 1726.07};
373 static float iP068[3] = {-136.29, -319.84, 1228.73};
374 static float iP069[3] = {1111.17, -314.14, 1314.19};
375 static float iP070[3] = {-1167.34, -321.61, 1319.45};
376 static float iP071[3] = {1404.86, -306.66, 1235.45};
377 static float iP072[3] = {-1409.73, -314.14, 1247.66};
378 static float iP073[3] = {1254.01, -296.87, 1544.58};
379 static float iP074[3] = {-1262.09, -291.70, 1504.26};
380 static float iP075[3] = {965.71, -269.26, 1742.65};
381 static float iP076[3] = {-900.97, -276.74, 1726.07};
382 static float P077[3] = {1058.00, -448.81, 8194.66};
383 static float P078[3] = {-1016.51, -456.43, 8190.62};
384 static float P079[3] = {-1515.96, -676.45, 7754.93};
385 static float P080[3] = {1856.75, -830.34, 7296.56};
386 static float P081[3] = {1472.16, -497.38, 7399.68};
387 static float P082[3] = {-1775.26, -829.51, 7298.46};
388 static float P083[3] = {911.09, -252.51, 7510.99};
389 static float P084[3] = {-1451.94, -495.62, 7384.30};
390 static float P085[3] = {1598.75, -669.26, 7769.90};
391 static float P086[3] = {-836.53, -250.08, 7463.25};
392 static float P087[3] = {722.87, -158.18, 8006.41};
393 static float P088[3] = {-688.86, -162.28, 7993.89};
394 static float P089[3] = {-626.92, -185.30, 8364.98};
395 static float P090[3] = {647.72, -189.46, 8354.99};
396 static float P091[3] = {0.00, 835.01, 5555.62};
397 static float P092[3] = {0.00, 1350.18, 5220.86};
398 static float P093[3] = {0.00, 1422.94, 5285.27};
399 static float P094[3] = {0.00, 1296.75, 5650.19};
400 static float P095[3] = {0.00, 795.63, 6493.88};
401 static float iP091[3] = {0.00, 835.01, 5555.62};
402 static float iP092[3] = {0.00, 1350.18, 5220.86};
403 static float iP093[3] = {0.00, 1422.94, 5285.27};
404 static float iP094[3] = {0.00, 1296.75, 5650.19};
405 static float iP095[3] = {0.00, 795.63, 6493.88};
406 #if 0
407 static float P096[3] = {-447.38, -165.99, 9499.60};
408 #endif
409 static float P097[3] = {-194.91, -357.14, 10313.32};
410 static float P098[3] = {135.35, -357.66, 10307.94};
411 static float iP097[3] = {-194.91, -357.14, 10313.32};
412 static float iP098[3] = {135.35, -357.66, 10307.94};
413 static float P099[3] = {-380.53, -221.14, 9677.98};
414 static float P100[3] = {0.00, 412.99, 9629.33};
415 #if 0
416 static float P101[3] = {5.70, 567.00, 7862.98};
417 #endif
418 static float P102[3] = {59.51, -412.55, 10677.58};
419 static float iP102[3] = {59.51, -412.55, 10677.58};
420 static float P103[3] = {6.50, 484.74, 9009.94};
421 #if 0
422 static float P104[3] = {-9.86, 567.62, 7858.65};
423 #endif
424 static float P105[3] = {-41.86, 476.51, 9078.17};
425 #if 0
426 static float P106[3] = {22.75, 568.13, 7782.83};
427 static float P107[3] = {58.93, 568.42, 7775.94};
428 #endif
429 static float P108[3] = {49.20, 476.83, 9078.24};
430 #if 0
431 static float P109[3] = {99.21, 566.00, 7858.65};
432 #endif
433 static float P110[3] = {-187.62, -410.04, 10674.12};
434 static float iP110[3] = {-187.62, -410.04, 10674.12};
435 static float P111[3] = {-184.25, -318.70, 10723.88};
436 static float iP111[3] = {-184.25, -318.70, 10723.88};
437 static float P112[3] = {-179.61, -142.81, 10670.26};
438 static float P113[3] = {57.43, -147.94, 10675.26};
439 static float P114[3] = {54.06, -218.90, 10712.44};
440 static float P115[3] = {-186.35, -212.09, 10713.76};
441 static float P116[3] = {205.90, -84.61, 10275.97};
442 static float P117[3] = {-230.96, -83.26, 10280.09};
443 static float iP118[3] = {216.78, -509.17, 10098.94};
444 static float iP119[3] = {-313.21, -510.79, 10102.62};
445 static float P118[3] = {216.78, -509.17, 10098.94};
446 static float P119[3] = {-313.21, -510.79, 10102.62};
447 static float P120[3] = {217.95, 96.34, 10161.62};
448 static float P121[3] = {71.99, -319.74, 10717.70};
449 static float iP121[3] = {71.99, -319.74, 10717.70};
450 static float P122[3] = {0.00, 602.74, 5375.84};
451 static float iP122[3] = {0.00, 602.74, 5375.84};
452 static float P123[3] = {-448.94, -203.14, 9499.60};
453 static float P124[3] = {-442.64, -185.20, 9528.07};
454 static float P125[3] = {-441.07, -148.05, 9528.07};
455 static float P126[3] = {-443.43, -128.84, 9499.60};
456 static float P127[3] = {-456.87, -146.78, 9466.67};
457 static float P128[3] = {-453.68, -183.93, 9466.67};
458 static float P129[3] = {428.43, -124.08, 9503.03};
459 static float P130[3] = {419.73, -142.14, 9534.56};
460 static float P131[3] = {419.92, -179.96, 9534.56};
461 static float P132[3] = {431.20, -199.73, 9505.26};
462 static float P133[3] = {442.28, -181.67, 9475.96};
463 static float P134[3] = {442.08, -143.84, 9475.96};
464 /* *INDENT-ON* */
465
466 static void
467 Dolphin001(void)
468 {
469     glNormal3fv(N071);
470     glBegin(GL_POLYGON);
471     glVertex3fv(P001);
472     glVertex3fv(P068);
473     glVertex3fv(P010);
474     glEnd();
475     glBegin(GL_POLYGON);
476     glVertex3fv(P068);
477     glVertex3fv(P076);
478     glVertex3fv(P010);
479     glEnd();
480     glBegin(GL_POLYGON);
481     glVertex3fv(P068);
482     glVertex3fv(P070);
483     glVertex3fv(P076);
484     glEnd();
485     glBegin(GL_POLYGON);
486     glVertex3fv(P076);
487     glVertex3fv(P070);
488     glVertex3fv(P074);
489     glEnd();
490     glBegin(GL_POLYGON);
491     glVertex3fv(P070);
492     glVertex3fv(P072);
493     glVertex3fv(P074);
494     glEnd();
495     glNormal3fv(N119);
496     glBegin(GL_POLYGON);
497     glVertex3fv(P072);
498     glVertex3fv(P070);
499     glVertex3fv(P074);
500     glEnd();
501     glBegin(GL_POLYGON);
502     glVertex3fv(P074);
503     glVertex3fv(P070);
504     glVertex3fv(P076);
505     glEnd();
506     glBegin(GL_POLYGON);
507     glVertex3fv(P070);
508     glVertex3fv(P068);
509     glVertex3fv(P076);
510     glEnd();
511     glBegin(GL_POLYGON);
512     glVertex3fv(P076);
513     glVertex3fv(P068);
514     glVertex3fv(P010);
515     glEnd();
516     glBegin(GL_POLYGON);
517     glVertex3fv(P068);
518     glVertex3fv(P001);
519     glVertex3fv(P010);
520     glEnd();
521 }
522
523 static void
524 Dolphin002(void)
525 {
526     glNormal3fv(N071);
527     glBegin(GL_POLYGON);
528     glVertex3fv(P011);
529     glVertex3fv(P001);
530     glVertex3fv(P009);
531     glEnd();
532     glBegin(GL_POLYGON);
533     glVertex3fv(P075);
534     glVertex3fv(P011);
535     glVertex3fv(P009);
536     glEnd();
537     glBegin(GL_POLYGON);
538     glVertex3fv(P069);
539     glVertex3fv(P011);
540     glVertex3fv(P075);
541     glEnd();
542     glBegin(GL_POLYGON);
543     glVertex3fv(P069);
544     glVertex3fv(P075);
545     glVertex3fv(P073);
546     glEnd();
547     glBegin(GL_POLYGON);
548     glVertex3fv(P071);
549     glVertex3fv(P069);
550     glVertex3fv(P073);
551     glEnd();
552     glNormal3fv(N119);
553     glBegin(GL_POLYGON);
554     glVertex3fv(P001);
555     glVertex3fv(P011);
556     glVertex3fv(P009);
557     glEnd();
558     glBegin(GL_POLYGON);
559     glVertex3fv(P009);
560     glVertex3fv(P011);
561     glVertex3fv(P075);
562     glEnd();
563     glBegin(GL_POLYGON);
564     glVertex3fv(P011);
565     glVertex3fv(P069);
566     glVertex3fv(P075);
567     glEnd();
568     glBegin(GL_POLYGON);
569     glVertex3fv(P069);
570     glVertex3fv(P073);
571     glVertex3fv(P075);
572     glEnd();
573     glBegin(GL_POLYGON);
574     glVertex3fv(P069);
575     glVertex3fv(P071);
576     glVertex3fv(P073);
577     glEnd();
578 }
579
580 static void
581 Dolphin003(void)
582 {
583     glBegin(GL_POLYGON);
584     glNormal3fv(N018);
585     glVertex3fv(P018);
586     glNormal3fv(N001);
587     glVertex3fv(P001);
588     glNormal3fv(N019);
589     glVertex3fv(P019);
590     glEnd();
591     glBegin(GL_POLYGON);
592     glNormal3fv(N019);
593     glVertex3fv(P019);
594     glNormal3fv(N001);
595     glVertex3fv(P001);
596     glNormal3fv(N012);
597     glVertex3fv(P012);
598     glEnd();
599     glBegin(GL_POLYGON);
600     glNormal3fv(N017);
601     glVertex3fv(P017);
602     glNormal3fv(N001);
603     glVertex3fv(P001);
604     glNormal3fv(N018);
605     glVertex3fv(P018);
606     glEnd();
607     glBegin(GL_POLYGON);
608     glNormal3fv(N001);
609     glVertex3fv(P001);
610     glNormal3fv(N017);
611     glVertex3fv(P017);
612     glNormal3fv(N016);
613     glVertex3fv(P016);
614     glEnd();
615     glBegin(GL_POLYGON);
616     glNormal3fv(N001);
617     glVertex3fv(P001);
618     glNormal3fv(N013);
619     glVertex3fv(P013);
620     glNormal3fv(N012);
621     glVertex3fv(P012);
622     glEnd();
623     glBegin(GL_POLYGON);
624     glNormal3fv(N001);
625     glVertex3fv(P001);
626     glNormal3fv(N016);
627     glVertex3fv(P016);
628     glNormal3fv(N015);
629     glVertex3fv(P015);
630     glEnd();
631     glBegin(GL_POLYGON);
632     glNormal3fv(N001);
633     glVertex3fv(P001);
634     glNormal3fv(N014);
635     glVertex3fv(P014);
636     glNormal3fv(N013);
637     glVertex3fv(P013);
638     glEnd();
639     glBegin(GL_POLYGON);
640     glNormal3fv(N001);
641     glVertex3fv(P001);
642     glNormal3fv(N015);
643     glVertex3fv(P015);
644     glNormal3fv(N014);
645     glVertex3fv(P014);
646     glEnd();
647 }
648
649 static void
650 Dolphin004(void)
651 {
652     glBegin(GL_POLYGON);
653     glNormal3fv(N014);
654     glVertex3fv(P014);
655     glNormal3fv(N015);
656     glVertex3fv(P015);
657     glNormal3fv(N023);
658     glVertex3fv(P023);
659     glNormal3fv(N022);
660     glVertex3fv(P022);
661     glEnd();
662     glBegin(GL_POLYGON);
663     glNormal3fv(N015);
664     glVertex3fv(P015);
665     glNormal3fv(N016);
666     glVertex3fv(P016);
667     glNormal3fv(N024);
668     glVertex3fv(P024);
669     glNormal3fv(N023);
670     glVertex3fv(P023);
671     glEnd();
672     glBegin(GL_POLYGON);
673     glNormal3fv(N016);
674     glVertex3fv(P016);
675     glNormal3fv(N017);
676     glVertex3fv(P017);
677     glNormal3fv(N025);
678     glVertex3fv(P025);
679     glNormal3fv(N024);
680     glVertex3fv(P024);
681     glEnd();
682     glBegin(GL_POLYGON);
683     glNormal3fv(N017);
684     glVertex3fv(P017);
685     glNormal3fv(N018);
686     glVertex3fv(P018);
687     glNormal3fv(N026);
688     glVertex3fv(P026);
689     glNormal3fv(N025);
690     glVertex3fv(P025);
691     glEnd();
692     glBegin(GL_POLYGON);
693     glNormal3fv(N013);
694     glVertex3fv(P013);
695     glNormal3fv(N014);
696     glVertex3fv(P014);
697     glNormal3fv(N022);
698     glVertex3fv(P022);
699     glNormal3fv(N021);
700     glVertex3fv(P021);
701     glEnd();
702     glBegin(GL_POLYGON);
703     glNormal3fv(N012);
704     glVertex3fv(P012);
705     glNormal3fv(N013);
706     glVertex3fv(P013);
707     glNormal3fv(N021);
708     glVertex3fv(P021);
709     glNormal3fv(N020);
710     glVertex3fv(P020);
711     glEnd();
712     glBegin(GL_POLYGON);
713     glNormal3fv(N018);
714     glVertex3fv(P018);
715     glNormal3fv(N019);
716     glVertex3fv(P019);
717     glNormal3fv(N027);
718     glVertex3fv(P027);
719     glNormal3fv(N026);
720     glVertex3fv(P026);
721     glEnd();
722     glBegin(GL_POLYGON);
723     glNormal3fv(N019);
724     glVertex3fv(P019);
725     glNormal3fv(N012);
726     glVertex3fv(P012);
727     glNormal3fv(N020);
728     glVertex3fv(P020);
729     glNormal3fv(N027);
730     glVertex3fv(P027);
731     glEnd();
732 }
733
734 static void
735 Dolphin005(void)
736 {
737     glBegin(GL_POLYGON);
738     glNormal3fv(N022);
739     glVertex3fv(P022);
740     glNormal3fv(N023);
741     glVertex3fv(P023);
742     glNormal3fv(N031);
743     glVertex3fv(P031);
744     glNormal3fv(N030);
745     glVertex3fv(P030);
746     glEnd();
747     glBegin(GL_POLYGON);
748     glNormal3fv(N021);
749     glVertex3fv(P021);
750     glNormal3fv(N022);
751     glVertex3fv(P022);
752     glNormal3fv(N030);
753     glVertex3fv(P030);
754     glEnd();
755     glBegin(GL_POLYGON);
756     glNormal3fv(N021);
757     glVertex3fv(P021);
758     glNormal3fv(N030);
759     glVertex3fv(P030);
760     glNormal3fv(N029);
761     glVertex3fv(P029);
762     glEnd();
763     glBegin(GL_POLYGON);
764     glNormal3fv(N023);
765     glVertex3fv(P023);
766     glNormal3fv(N024);
767     glVertex3fv(P024);
768     glNormal3fv(N031);
769     glVertex3fv(P031);
770     glEnd();
771     glBegin(GL_POLYGON);
772     glNormal3fv(N024);
773     glVertex3fv(P024);
774     glNormal3fv(N032);
775     glVertex3fv(P032);
776     glNormal3fv(N031);
777     glVertex3fv(P031);
778     glEnd();
779     glBegin(GL_POLYGON);
780     glNormal3fv(N024);
781     glVertex3fv(P024);
782     glNormal3fv(N025);
783     glVertex3fv(P025);
784     glNormal3fv(N032);
785     glVertex3fv(P032);
786     glEnd();
787     glBegin(GL_POLYGON);
788     glNormal3fv(N025);
789     glVertex3fv(P025);
790     glNormal3fv(N033);
791     glVertex3fv(P033);
792     glNormal3fv(N032);
793     glVertex3fv(P032);
794     glEnd();
795     glBegin(GL_POLYGON);
796     glNormal3fv(N020);
797     glVertex3fv(P020);
798     glNormal3fv(N021);
799     glVertex3fv(P021);
800     glNormal3fv(N029);
801     glVertex3fv(P029);
802     glEnd();
803     glBegin(GL_POLYGON);
804     glNormal3fv(N020);
805     glVertex3fv(P020);
806     glNormal3fv(N029);
807     glVertex3fv(P029);
808     glNormal3fv(N028);
809     glVertex3fv(P028);
810     glEnd();
811     glBegin(GL_POLYGON);
812     glNormal3fv(N027);
813     glVertex3fv(P027);
814     glNormal3fv(N020);
815     glVertex3fv(P020);
816     glNormal3fv(N028);
817     glVertex3fv(P028);
818     glEnd();
819     glBegin(GL_POLYGON);
820     glNormal3fv(N027);
821     glVertex3fv(P027);
822     glNormal3fv(N028);
823     glVertex3fv(P028);
824     glNormal3fv(N035);
825     glVertex3fv(P035);
826     glEnd();
827     glBegin(GL_POLYGON);
828     glNormal3fv(N025);
829     glVertex3fv(P025);
830     glNormal3fv(N026);
831     glVertex3fv(P026);
832     glNormal3fv(N033);
833     glVertex3fv(P033);
834     glEnd();
835     glBegin(GL_POLYGON);
836     glNormal3fv(N033);
837     glVertex3fv(P033);
838     glNormal3fv(N026);
839     glVertex3fv(P026);
840     glNormal3fv(N034);
841     glVertex3fv(P034);
842     glEnd();
843     glBegin(GL_POLYGON);
844     glNormal3fv(N026);
845     glVertex3fv(P026);
846     glNormal3fv(N027);
847     glVertex3fv(P027);
848     glNormal3fv(N035);
849     glVertex3fv(P035);
850     glNormal3fv(N034);
851     glVertex3fv(P034);
852     glEnd();
853 }
854
855 static void
856 Dolphin006(void)
857 {
858     glBegin(GL_POLYGON);
859     glNormal3fv(N092);
860     glVertex3fv(P092);
861     glNormal3fv(N093);
862     glVertex3fv(P093);
863     glNormal3fv(N094);
864     glVertex3fv(P094);
865     glEnd();
866     glBegin(GL_POLYGON);
867     glNormal3fv(N093);
868     glVertex3fv(P093);
869     glNormal3fv(N092);
870     glVertex3fv(P092);
871     glNormal3fv(N094);
872     glVertex3fv(P094);
873     glEnd();
874     glBegin(GL_POLYGON);
875     glNormal3fv(N092);
876     glVertex3fv(P092);
877     glNormal3fv(N091);
878     glVertex3fv(P091);
879     glNormal3fv(N095);
880     glVertex3fv(P095);
881     glNormal3fv(N094);
882     glVertex3fv(P094);
883     glEnd();
884     glBegin(GL_POLYGON);
885     glNormal3fv(N091);
886     glVertex3fv(P091);
887     glNormal3fv(N092);
888     glVertex3fv(P092);
889     glNormal3fv(N094);
890     glVertex3fv(P094);
891     glNormal3fv(N095);
892     glVertex3fv(P095);
893     glEnd();
894     glBegin(GL_POLYGON);
895     glNormal3fv(N122);
896     glVertex3fv(P122);
897     glNormal3fv(N095);
898     glVertex3fv(P095);
899     glNormal3fv(N091);
900     glVertex3fv(P091);
901     glEnd();
902     glBegin(GL_POLYGON);
903     glNormal3fv(N122);
904     glVertex3fv(P122);
905     glNormal3fv(N091);
906     glVertex3fv(P091);
907     glNormal3fv(N095);
908     glVertex3fv(P095);
909     glEnd();
910 }
911
912 static void
913 Dolphin007(void)
914 {
915     glBegin(GL_POLYGON);
916     glNormal3fv(N030);
917     glVertex3fv(P030);
918     glNormal3fv(N031);
919     glVertex3fv(P031);
920     glNormal3fv(N039);
921     glVertex3fv(P039);
922     glNormal3fv(N038);
923     glVertex3fv(P038);
924     glEnd();
925     glBegin(GL_POLYGON);
926     glNormal3fv(N029);
927     glVertex3fv(P029);
928     glNormal3fv(N030);
929     glVertex3fv(P030);
930     glNormal3fv(N038);
931     glVertex3fv(P038);
932     glEnd();
933     glBegin(GL_POLYGON);
934     glNormal3fv(N029);
935     glVertex3fv(P029);
936     glNormal3fv(N038);
937     glVertex3fv(P038);
938     glNormal3fv(N037);
939     glVertex3fv(P037);
940     glEnd();
941     glBegin(GL_POLYGON);
942     glNormal3fv(N028);
943     glVertex3fv(P028);
944     glNormal3fv(N029);
945     glVertex3fv(P029);
946     glNormal3fv(N037);
947     glVertex3fv(P037);
948     glEnd();
949     glBegin(GL_POLYGON);
950     glNormal3fv(N028);
951     glVertex3fv(P028);
952     glNormal3fv(N037);
953     glVertex3fv(P037);
954     glNormal3fv(N036);
955     glVertex3fv(P036);
956     glEnd();
957     glBegin(GL_POLYGON);
958     glNormal3fv(N035);
959     glVertex3fv(P035);
960     glNormal3fv(N028);
961     glVertex3fv(P028);
962     glNormal3fv(N036);
963     glVertex3fv(P036);
964     glEnd();
965     glBegin(GL_POLYGON);
966     glNormal3fv(N035);
967     glVertex3fv(P035);
968     glNormal3fv(N036);
969     glVertex3fv(P036);
970     glNormal3fv(N043);
971     glVertex3fv(P043);
972     glEnd();
973     glBegin(GL_POLYGON);
974     glNormal3fv(N034);
975     glVertex3fv(P034);
976     glNormal3fv(N035);
977     glVertex3fv(P035);
978     glNormal3fv(N043);
979     glVertex3fv(P043);
980     glNormal3fv(N042);
981     glVertex3fv(P042);
982     glEnd();
983     glBegin(GL_POLYGON);
984     glNormal3fv(N033);
985     glVertex3fv(P033);
986     glNormal3fv(N034);
987     glVertex3fv(P034);
988     glNormal3fv(N042);
989     glVertex3fv(P042);
990     glEnd();
991     glBegin(GL_POLYGON);
992     glNormal3fv(N033);
993     glVertex3fv(P033);
994     glNormal3fv(N042);
995     glVertex3fv(P042);
996     glNormal3fv(N041);
997     glVertex3fv(P041);
998     glEnd();
999     glBegin(GL_POLYGON);
1000     glNormal3fv(N031);
1001     glVertex3fv(P031);
1002     glNormal3fv(N032);
1003     glVertex3fv(P032);
1004     glNormal3fv(N039);
1005     glVertex3fv(P039);
1006     glEnd();
1007     glBegin(GL_POLYGON);
1008     glNormal3fv(N039);
1009     glVertex3fv(P039);
1010     glNormal3fv(N032);
1011     glVertex3fv(P032);
1012     glNormal3fv(N040);
1013     glVertex3fv(P040);
1014     glEnd();
1015     glBegin(GL_POLYGON);
1016     glNormal3fv(N032);
1017     glVertex3fv(P032);
1018     glNormal3fv(N033);
1019     glVertex3fv(P033);
1020     glNormal3fv(N040);
1021     glVertex3fv(P040);
1022     glEnd();
1023     glBegin(GL_POLYGON);
1024     glNormal3fv(N040);
1025     glVertex3fv(P040);
1026     glNormal3fv(N033);
1027     glVertex3fv(P033);
1028     glNormal3fv(N041);
1029     glVertex3fv(P041);
1030     glEnd();
1031 }
1032
1033 static void
1034 Dolphin008(void)
1035 {
1036     glBegin(GL_POLYGON);
1037     glNormal3fv(N042);
1038     glVertex3fv(P042);
1039     glNormal3fv(N043);
1040     glVertex3fv(P043);
1041     glNormal3fv(N051);
1042     glVertex3fv(P051);
1043     glNormal3fv(N050);
1044     glVertex3fv(P050);
1045     glEnd();
1046     glBegin(GL_POLYGON);
1047     glNormal3fv(N043);
1048     glVertex3fv(P043);
1049     glNormal3fv(N036);
1050     glVertex3fv(P036);
1051     glNormal3fv(N051);
1052     glVertex3fv(P051);
1053     glEnd();
1054     glBegin(GL_POLYGON);
1055     glNormal3fv(N051);
1056     glVertex3fv(P051);
1057     glNormal3fv(N036);
1058     glVertex3fv(P036);
1059     glNormal3fv(N044);
1060     glVertex3fv(P044);
1061     glEnd();
1062     glBegin(GL_POLYGON);
1063     glNormal3fv(N041);
1064     glVertex3fv(P041);
1065     glNormal3fv(N042);
1066     glVertex3fv(P042);
1067     glNormal3fv(N050);
1068     glVertex3fv(P050);
1069     glEnd();
1070     glBegin(GL_POLYGON);
1071     glNormal3fv(N041);
1072     glVertex3fv(P041);
1073     glNormal3fv(N050);
1074     glVertex3fv(P050);
1075     glNormal3fv(N049);
1076     glVertex3fv(P049);
1077     glEnd();
1078     glBegin(GL_POLYGON);
1079     glNormal3fv(N036);
1080     glVertex3fv(P036);
1081     glNormal3fv(N037);
1082     glVertex3fv(P037);
1083     glNormal3fv(N044);
1084     glVertex3fv(P044);
1085     glEnd();
1086     glBegin(GL_POLYGON);
1087     glNormal3fv(N044);
1088     glVertex3fv(P044);
1089     glNormal3fv(N037);
1090     glVertex3fv(P037);
1091     glNormal3fv(N045);
1092     glVertex3fv(P045);
1093     glEnd();
1094     glBegin(GL_POLYGON);
1095     glNormal3fv(N040);
1096     glVertex3fv(P040);
1097     glNormal3fv(N041);
1098     glVertex3fv(P041);
1099     glNormal3fv(N049);
1100     glVertex3fv(P049);
1101     glEnd();
1102     glBegin(GL_POLYGON);
1103     glNormal3fv(N040);
1104     glVertex3fv(P040);
1105     glNormal3fv(N049);
1106     glVertex3fv(P049);
1107     glNormal3fv(N048);
1108     glVertex3fv(P048);
1109     glEnd();
1110     glBegin(GL_POLYGON);
1111     glNormal3fv(N039);
1112     glVertex3fv(P039);
1113     glNormal3fv(N040);
1114     glVertex3fv(P040);
1115     glNormal3fv(N048);
1116     glVertex3fv(P048);
1117     glEnd();
1118     glBegin(GL_POLYGON);
1119     glNormal3fv(N039);
1120     glVertex3fv(P039);
1121     glNormal3fv(N048);
1122     glVertex3fv(P048);
1123     glNormal3fv(N047);
1124     glVertex3fv(P047);
1125     glEnd();
1126     glBegin(GL_POLYGON);
1127     glNormal3fv(N037);
1128     glVertex3fv(P037);
1129     glNormal3fv(N038);
1130     glVertex3fv(P038);
1131     glNormal3fv(N045);
1132     glVertex3fv(P045);
1133     glEnd();
1134     glBegin(GL_POLYGON);
1135     glNormal3fv(N038);
1136     glVertex3fv(P038);
1137     glNormal3fv(N046);
1138     glVertex3fv(P046);
1139     glNormal3fv(N045);
1140     glVertex3fv(P045);
1141     glEnd();
1142     glBegin(GL_POLYGON);
1143     glNormal3fv(N038);
1144     glVertex3fv(P038);
1145     glNormal3fv(N039);
1146     glVertex3fv(P039);
1147     glNormal3fv(N047);
1148     glVertex3fv(P047);
1149     glNormal3fv(N046);
1150     glVertex3fv(P046);
1151     glEnd();
1152 }
1153
1154 static void
1155 Dolphin009(void)
1156 {
1157     glBegin(GL_POLYGON);
1158     glNormal3fv(N050);
1159     glVertex3fv(P050);
1160     glNormal3fv(N051);
1161     glVertex3fv(P051);
1162     glNormal3fv(N059);
1163     glVertex3fv(P059);
1164     glNormal3fv(N058);
1165     glVertex3fv(P058);
1166     glEnd();
1167     glBegin(GL_POLYGON);
1168     glNormal3fv(N051);
1169     glVertex3fv(P051);
1170     glNormal3fv(N044);
1171     glVertex3fv(P044);
1172     glNormal3fv(N059);
1173     glVertex3fv(P059);
1174     glEnd();
1175     glBegin(GL_POLYGON);
1176     glNormal3fv(N059);
1177     glVertex3fv(P059);
1178     glNormal3fv(N044);
1179     glVertex3fv(P044);
1180     glNormal3fv(N052);
1181     glVertex3fv(P052);
1182     glEnd();
1183     glBegin(GL_POLYGON);
1184     glNormal3fv(N044);
1185     glVertex3fv(P044);
1186     glNormal3fv(N045);
1187     glVertex3fv(P045);
1188     glNormal3fv(N053);
1189     glVertex3fv(P053);
1190     glEnd();
1191     glBegin(GL_POLYGON);
1192     glNormal3fv(N044);
1193     glVertex3fv(P044);
1194     glNormal3fv(N053);
1195     glVertex3fv(P053);
1196     glNormal3fv(N052);
1197     glVertex3fv(P052);
1198     glEnd();
1199     glBegin(GL_POLYGON);
1200     glNormal3fv(N049);
1201     glVertex3fv(P049);
1202     glNormal3fv(N050);
1203     glVertex3fv(P050);
1204     glNormal3fv(N058);
1205     glVertex3fv(P058);
1206     glEnd();
1207     glBegin(GL_POLYGON);
1208     glNormal3fv(N049);
1209     glVertex3fv(P049);
1210     glNormal3fv(N058);
1211     glVertex3fv(P058);
1212     glNormal3fv(N057);
1213     glVertex3fv(P057);
1214     glEnd();
1215     glBegin(GL_POLYGON);
1216     glNormal3fv(N048);
1217     glVertex3fv(P048);
1218     glNormal3fv(N049);
1219     glVertex3fv(P049);
1220     glNormal3fv(N057);
1221     glVertex3fv(P057);
1222     glEnd();
1223     glBegin(GL_POLYGON);
1224     glNormal3fv(N048);
1225     glVertex3fv(P048);
1226     glNormal3fv(N057);
1227     glVertex3fv(P057);
1228     glNormal3fv(N056);
1229     glVertex3fv(P056);
1230     glEnd();
1231     glBegin(GL_POLYGON);
1232     glNormal3fv(N047);
1233     glVertex3fv(P047);
1234     glNormal3fv(N048);
1235     glVertex3fv(P048);
1236     glNormal3fv(N056);
1237     glVertex3fv(P056);
1238     glEnd();
1239     glBegin(GL_POLYGON);
1240     glNormal3fv(N047);
1241     glVertex3fv(P047);
1242     glNormal3fv(N056);
1243     glVertex3fv(P056);
1244     glNormal3fv(N055);
1245     glVertex3fv(P055);
1246     glEnd();
1247     glBegin(GL_POLYGON);
1248     glNormal3fv(N045);
1249     glVertex3fv(P045);
1250     glNormal3fv(N046);
1251     glVertex3fv(P046);
1252     glNormal3fv(N053);
1253     glVertex3fv(P053);
1254     glEnd();
1255     glBegin(GL_POLYGON);
1256     glNormal3fv(N046);
1257     glVertex3fv(P046);
1258     glNormal3fv(N054);
1259     glVertex3fv(P054);
1260     glNormal3fv(N053);
1261     glVertex3fv(P053);
1262     glEnd();
1263     glBegin(GL_POLYGON);
1264     glNormal3fv(N046);
1265     glVertex3fv(P046);
1266     glNormal3fv(N047);
1267     glVertex3fv(P047);
1268     glNormal3fv(N055);
1269     glVertex3fv(P055);
1270     glNormal3fv(N054);
1271     glVertex3fv(P054);
1272     glEnd();
1273 }
1274
1275 static void
1276 Dolphin010(void)
1277 {
1278     glBegin(GL_POLYGON);
1279     glNormal3fv(N080);
1280     glVertex3fv(P080);
1281     glNormal3fv(N081);
1282     glVertex3fv(P081);
1283     glNormal3fv(N085);
1284     glVertex3fv(P085);
1285     glEnd();
1286     glBegin(GL_POLYGON);
1287     glNormal3fv(N081);
1288     glVertex3fv(P081);
1289     glNormal3fv(N083);
1290     glVertex3fv(P083);
1291     glNormal3fv(N085);
1292     glVertex3fv(P085);
1293     glEnd();
1294     glBegin(GL_POLYGON);
1295     glNormal3fv(N085);
1296     glVertex3fv(P085);
1297     glNormal3fv(N083);
1298     glVertex3fv(P083);
1299     glNormal3fv(N077);
1300     glVertex3fv(P077);
1301     glEnd();
1302     glBegin(GL_POLYGON);
1303     glNormal3fv(N083);
1304     glVertex3fv(P083);
1305     glNormal3fv(N087);
1306     glVertex3fv(P087);
1307     glNormal3fv(N077);
1308     glVertex3fv(P077);
1309     glEnd();
1310     glBegin(GL_POLYGON);
1311     glNormal3fv(N077);
1312     glVertex3fv(P077);
1313     glNormal3fv(N087);
1314     glVertex3fv(P087);
1315     glNormal3fv(N090);
1316     glVertex3fv(P090);
1317     glEnd();
1318     glBegin(GL_POLYGON);
1319     glNormal3fv(N081);
1320     glVertex3fv(P081);
1321     glNormal3fv(N080);
1322     glVertex3fv(P080);
1323     glNormal3fv(N085);
1324     glVertex3fv(P085);
1325     glEnd();
1326     glBegin(GL_POLYGON);
1327     glNormal3fv(N083);
1328     glVertex3fv(P083);
1329     glNormal3fv(N081);
1330     glVertex3fv(P081);
1331     glNormal3fv(N085);
1332     glVertex3fv(P085);
1333     glEnd();
1334     glBegin(GL_POLYGON);
1335     glNormal3fv(N083);
1336     glVertex3fv(P083);
1337     glNormal3fv(N085);
1338     glVertex3fv(P085);
1339     glNormal3fv(N077);
1340     glVertex3fv(P077);
1341     glEnd();
1342     glBegin(GL_POLYGON);
1343     glNormal3fv(N087);
1344     glVertex3fv(P087);
1345     glNormal3fv(N083);
1346     glVertex3fv(P083);
1347     glNormal3fv(N077);
1348     glVertex3fv(P077);
1349     glEnd();
1350     glBegin(GL_POLYGON);
1351     glNormal3fv(N087);
1352     glVertex3fv(P087);
1353     glNormal3fv(N077);
1354     glVertex3fv(P077);
1355     glNormal3fv(N090);
1356     glVertex3fv(P090);
1357     glEnd();
1358 }
1359
1360 static void
1361 Dolphin011(void)
1362 {
1363     glBegin(GL_POLYGON);
1364     glNormal3fv(N082);
1365     glVertex3fv(P082);
1366     glNormal3fv(N084);
1367     glVertex3fv(P084);
1368     glNormal3fv(N079);
1369     glVertex3fv(P079);
1370     glEnd();
1371     glBegin(GL_POLYGON);
1372     glNormal3fv(N084);
1373     glVertex3fv(P084);
1374     glNormal3fv(N086);
1375     glVertex3fv(P086);
1376     glNormal3fv(N079);
1377     glVertex3fv(P079);
1378     glEnd();
1379     glBegin(GL_POLYGON);
1380     glNormal3fv(N079);
1381     glVertex3fv(P079);
1382     glNormal3fv(N086);
1383     glVertex3fv(P086);
1384     glNormal3fv(N078);
1385     glVertex3fv(P078);
1386     glEnd();
1387     glBegin(GL_POLYGON);
1388     glNormal3fv(N086);
1389     glVertex3fv(P086);
1390     glNormal3fv(N088);
1391     glVertex3fv(P088);
1392     glNormal3fv(N078);
1393     glVertex3fv(P078);
1394     glEnd();
1395     glBegin(GL_POLYGON);
1396     glNormal3fv(N078);
1397     glVertex3fv(P078);
1398     glNormal3fv(N088);
1399     glVertex3fv(P088);
1400     glNormal3fv(N089);
1401     glVertex3fv(P089);
1402     glEnd();
1403     glBegin(GL_POLYGON);
1404     glNormal3fv(N088);
1405     glVertex3fv(P088);
1406     glNormal3fv(N086);
1407     glVertex3fv(P086);
1408     glNormal3fv(N089);
1409     glVertex3fv(P089);
1410     glEnd();
1411     glBegin(GL_POLYGON);
1412     glNormal3fv(N089);
1413     glVertex3fv(P089);
1414     glNormal3fv(N086);
1415     glVertex3fv(P086);
1416     glNormal3fv(N078);
1417     glVertex3fv(P078);
1418     glEnd();
1419     glBegin(GL_POLYGON);
1420     glNormal3fv(N086);
1421     glVertex3fv(P086);
1422     glNormal3fv(N084);
1423     glVertex3fv(P084);
1424     glNormal3fv(N078);
1425     glVertex3fv(P078);
1426     glEnd();
1427     glBegin(GL_POLYGON);
1428     glNormal3fv(N078);
1429     glVertex3fv(P078);
1430     glNormal3fv(N084);
1431     glVertex3fv(P084);
1432     glNormal3fv(N079);
1433     glVertex3fv(P079);
1434     glEnd();
1435     glBegin(GL_POLYGON);
1436     glNormal3fv(N084);
1437     glVertex3fv(P084);
1438     glNormal3fv(N082);
1439     glVertex3fv(P082);
1440     glNormal3fv(N079);
1441     glVertex3fv(P079);
1442     glEnd();
1443 }
1444
1445 static void
1446 Dolphin012(void)
1447 {
1448     glBegin(GL_POLYGON);
1449     glNormal3fv(N058);
1450     glVertex3fv(P058);
1451     glNormal3fv(N059);
1452     glVertex3fv(P059);
1453     glNormal3fv(N067);
1454     glVertex3fv(P067);
1455     glNormal3fv(N066);
1456     glVertex3fv(P066);
1457     glEnd();
1458     glBegin(GL_POLYGON);
1459     glNormal3fv(N059);
1460     glVertex3fv(P059);
1461     glNormal3fv(N052);
1462     glVertex3fv(P052);
1463     glNormal3fv(N060);
1464     glVertex3fv(P060);
1465     glEnd();
1466     glBegin(GL_POLYGON);
1467     glNormal3fv(N059);
1468     glVertex3fv(P059);
1469     glNormal3fv(N060);
1470     glVertex3fv(P060);
1471     glNormal3fv(N067);
1472     glVertex3fv(P067);
1473     glEnd();
1474     glBegin(GL_POLYGON);
1475     glNormal3fv(N058);
1476     glVertex3fv(P058);
1477     glNormal3fv(N066);
1478     glVertex3fv(P066);
1479     glNormal3fv(N065);
1480     glVertex3fv(P065);
1481     glEnd();
1482     glBegin(GL_POLYGON);
1483     glNormal3fv(N058);
1484     glVertex3fv(P058);
1485     glNormal3fv(N065);
1486     glVertex3fv(P065);
1487     glNormal3fv(N057);
1488     glVertex3fv(P057);
1489     glEnd();
1490     glBegin(GL_POLYGON);
1491     glNormal3fv(N056);
1492     glVertex3fv(P056);
1493     glNormal3fv(N057);
1494     glVertex3fv(P057);
1495     glNormal3fv(N065);
1496     glVertex3fv(P065);
1497     glEnd();
1498     glBegin(GL_POLYGON);
1499     glNormal3fv(N056);
1500     glVertex3fv(P056);
1501     glNormal3fv(N065);
1502     glVertex3fv(P065);
1503     glNormal3fv(N006);
1504     glVertex3fv(P006);
1505     glEnd();
1506     glBegin(GL_POLYGON);
1507     glNormal3fv(N056);
1508     glVertex3fv(P056);
1509     glNormal3fv(N006);
1510     glVertex3fv(P006);
1511     glNormal3fv(N063);
1512     glVertex3fv(P063);
1513     glEnd();
1514     glBegin(GL_POLYGON);
1515     glNormal3fv(N056);
1516     glVertex3fv(P056);
1517     glNormal3fv(N063);
1518     glVertex3fv(P063);
1519     glNormal3fv(N055);
1520     glVertex3fv(P055);
1521     glEnd();
1522     glBegin(GL_POLYGON);
1523     glNormal3fv(N054);
1524     glVertex3fv(P054);
1525     glNormal3fv(N062);
1526     glVertex3fv(P062);
1527     glNormal3fv(N005);
1528     glVertex3fv(P005);
1529     glEnd();
1530     glBegin(GL_POLYGON);
1531     glNormal3fv(N054);
1532     glVertex3fv(P054);
1533     glNormal3fv(N005);
1534     glVertex3fv(P005);
1535     glNormal3fv(N053);
1536     glVertex3fv(P053);
1537     glEnd();
1538     glBegin(GL_POLYGON);
1539     glNormal3fv(N052);
1540     glVertex3fv(P052);
1541     glNormal3fv(N053);
1542     glVertex3fv(P053);
1543     glNormal3fv(N005);
1544     glVertex3fv(P005);
1545     glNormal3fv(N060);
1546     glVertex3fv(P060);
1547     glEnd();
1548 }
1549
1550 static void
1551 Dolphin013(void)
1552 {
1553     glBegin(GL_POLYGON);
1554     glNormal3fv(N116);
1555     glVertex3fv(P116);
1556     glNormal3fv(N117);
1557     glVertex3fv(P117);
1558     glNormal3fv(N112);
1559     glVertex3fv(P112);
1560     glNormal3fv(N113);
1561     glVertex3fv(P113);
1562     glEnd();
1563     glBegin(GL_POLYGON);
1564     glNormal3fv(N114);
1565     glVertex3fv(P114);
1566     glNormal3fv(N113);
1567     glVertex3fv(P113);
1568     glNormal3fv(N112);
1569     glVertex3fv(P112);
1570     glNormal3fv(N115);
1571     glVertex3fv(P115);
1572     glEnd();
1573     glBegin(GL_POLYGON);
1574     glNormal3fv(N114);
1575     glVertex3fv(P114);
1576     glNormal3fv(N116);
1577     glVertex3fv(P116);
1578     glNormal3fv(N113);
1579     glVertex3fv(P113);
1580     glEnd();
1581     glBegin(GL_POLYGON);
1582     glNormal3fv(N114);
1583     glVertex3fv(P114);
1584     glNormal3fv(N007);
1585     glVertex3fv(P007);
1586     glNormal3fv(N116);
1587     glVertex3fv(P116);
1588     glEnd();
1589     glBegin(GL_POLYGON);
1590     glNormal3fv(N007);
1591     glVertex3fv(P007);
1592     glNormal3fv(N002);
1593     glVertex3fv(P002);
1594     glNormal3fv(N116);
1595     glVertex3fv(P116);
1596     glEnd();
1597     glBegin(GL_POLYGON);
1598     glVertex3fv(P002);
1599     glVertex3fv(P007);
1600     glVertex3fv(P008);
1601     glVertex3fv(P099);
1602     glEnd();
1603     glBegin(GL_POLYGON);
1604     glVertex3fv(P007);
1605     glVertex3fv(P114);
1606     glVertex3fv(P115);
1607     glVertex3fv(P008);
1608     glEnd();
1609     glBegin(GL_POLYGON);
1610     glNormal3fv(N117);
1611     glVertex3fv(P117);
1612     glNormal3fv(N099);
1613     glVertex3fv(P099);
1614     glNormal3fv(N008);
1615     glVertex3fv(P008);
1616     glEnd();
1617     glBegin(GL_POLYGON);
1618     glNormal3fv(N117);
1619     glVertex3fv(P117);
1620     glNormal3fv(N008);
1621     glVertex3fv(P008);
1622     glNormal3fv(N112);
1623     glVertex3fv(P112);
1624     glEnd();
1625     glBegin(GL_POLYGON);
1626     glNormal3fv(N112);
1627     glVertex3fv(P112);
1628     glNormal3fv(N008);
1629     glVertex3fv(P008);
1630     glNormal3fv(N115);
1631     glVertex3fv(P115);
1632     glEnd();
1633 }
1634
1635 static void
1636 Dolphin014(void)
1637 {
1638     glBegin(GL_POLYGON);
1639     glNormal3fv(N111);
1640     glVertex3fv(P111);
1641     glNormal3fv(N110);
1642     glVertex3fv(P110);
1643     glNormal3fv(N102);
1644     glVertex3fv(P102);
1645     glNormal3fv(N121);
1646     glVertex3fv(P121);
1647     glEnd();
1648     glBegin(GL_POLYGON);
1649     glNormal3fv(N111);
1650     glVertex3fv(P111);
1651     glNormal3fv(N097);
1652     glVertex3fv(P097);
1653     glNormal3fv(N110);
1654     glVertex3fv(P110);
1655     glEnd();
1656     glBegin(GL_POLYGON);
1657     glNormal3fv(N097);
1658     glVertex3fv(P097);
1659     glNormal3fv(N119);
1660     glVertex3fv(P119);
1661     glNormal3fv(N110);
1662     glVertex3fv(P110);
1663     glEnd();
1664     glBegin(GL_POLYGON);
1665     glNormal3fv(N097);
1666     glVertex3fv(P097);
1667     glNormal3fv(N099);
1668     glVertex3fv(P099);
1669     glNormal3fv(N119);
1670     glVertex3fv(P119);
1671     glEnd();
1672     glBegin(GL_POLYGON);
1673     glNormal3fv(N099);
1674     glVertex3fv(P099);
1675     glNormal3fv(N065);
1676     glVertex3fv(P065);
1677     glNormal3fv(N119);
1678     glVertex3fv(P119);
1679     glEnd();
1680     glBegin(GL_POLYGON);
1681     glNormal3fv(N065);
1682     glVertex3fv(P065);
1683     glNormal3fv(N066);
1684     glVertex3fv(P066);
1685     glNormal3fv(N119);
1686     glVertex3fv(P119);
1687     glEnd();
1688     glBegin(GL_POLYGON);
1689     glVertex3fv(P098);
1690     glVertex3fv(P097);
1691     glVertex3fv(P111);
1692     glVertex3fv(P121);
1693     glEnd();
1694     glBegin(GL_POLYGON);
1695     glVertex3fv(P002);
1696     glVertex3fv(P099);
1697     glVertex3fv(P097);
1698     glVertex3fv(P098);
1699     glEnd();
1700     glBegin(GL_POLYGON);
1701     glNormal3fv(N110);
1702     glVertex3fv(P110);
1703     glNormal3fv(N119);
1704     glVertex3fv(P119);
1705     glNormal3fv(N118);
1706     glVertex3fv(P118);
1707     glNormal3fv(N102);
1708     glVertex3fv(P102);
1709     glEnd();
1710     glBegin(GL_POLYGON);
1711     glNormal3fv(N119);
1712     glVertex3fv(P119);
1713     glNormal3fv(N066);
1714     glVertex3fv(P066);
1715     glNormal3fv(N067);
1716     glVertex3fv(P067);
1717     glNormal3fv(N118);
1718     glVertex3fv(P118);
1719     glEnd();
1720     glBegin(GL_POLYGON);
1721     glNormal3fv(N067);
1722     glVertex3fv(P067);
1723     glNormal3fv(N060);
1724     glVertex3fv(P060);
1725     glNormal3fv(N002);
1726     glVertex3fv(P002);
1727     glEnd();
1728     glBegin(GL_POLYGON);
1729     glNormal3fv(N067);
1730     glVertex3fv(P067);
1731     glNormal3fv(N002);
1732     glVertex3fv(P002);
1733     glNormal3fv(N118);
1734     glVertex3fv(P118);
1735     glEnd();
1736     glBegin(GL_POLYGON);
1737     glNormal3fv(N118);
1738     glVertex3fv(P118);
1739     glNormal3fv(N002);
1740     glVertex3fv(P002);
1741     glNormal3fv(N098);
1742     glVertex3fv(P098);
1743     glEnd();
1744     glBegin(GL_POLYGON);
1745     glNormal3fv(N118);
1746     glVertex3fv(P118);
1747     glNormal3fv(N098);
1748     glVertex3fv(P098);
1749     glNormal3fv(N102);
1750     glVertex3fv(P102);
1751     glEnd();
1752     glBegin(GL_POLYGON);
1753     glNormal3fv(N102);
1754     glVertex3fv(P102);
1755     glNormal3fv(N098);
1756     glVertex3fv(P098);
1757     glNormal3fv(N121);
1758     glVertex3fv(P121);
1759     glEnd();
1760 }
1761
1762 static void
1763 Dolphin015(void)
1764 {
1765     glBegin(GL_POLYGON);
1766     glNormal3fv(N055);
1767     glVertex3fv(P055);
1768     glNormal3fv(N003);
1769     glVertex3fv(P003);
1770     glNormal3fv(N054);
1771     glVertex3fv(P054);
1772     glEnd();
1773     glBegin(GL_POLYGON);
1774     glNormal3fv(N003);
1775     glVertex3fv(P003);
1776     glNormal3fv(N055);
1777     glVertex3fv(P055);
1778     glNormal3fv(N063);
1779     glVertex3fv(P063);
1780     glEnd();
1781     glBegin(GL_POLYGON);
1782     glNormal3fv(N003);
1783     glVertex3fv(P003);
1784     glNormal3fv(N063);
1785     glVertex3fv(P063);
1786     glNormal3fv(N100);
1787     glVertex3fv(P100);
1788     glEnd();
1789     glBegin(GL_POLYGON);
1790     glNormal3fv(N003);
1791     glVertex3fv(P003);
1792     glNormal3fv(N100);
1793     glVertex3fv(P100);
1794     glNormal3fv(N054);
1795     glVertex3fv(P054);
1796     glEnd();
1797     glBegin(GL_POLYGON);
1798     glNormal3fv(N054);
1799     glVertex3fv(P054);
1800     glNormal3fv(N100);
1801     glVertex3fv(P100);
1802     glNormal3fv(N062);
1803     glVertex3fv(P062);
1804     glEnd();
1805     glBegin(GL_POLYGON);
1806     glNormal3fv(N100);
1807     glVertex3fv(P100);
1808     glNormal3fv(N064);
1809     glVertex3fv(P064);
1810     glNormal3fv(N120);
1811     glVertex3fv(P120);
1812     glEnd();
1813     glBegin(GL_POLYGON);
1814     glNormal3fv(N100);
1815     glVertex3fv(P100);
1816     glNormal3fv(N063);
1817     glVertex3fv(P063);
1818     glNormal3fv(N064);
1819     glVertex3fv(P064);
1820     glEnd();
1821     glBegin(GL_POLYGON);
1822     glNormal3fv(N063);
1823     glVertex3fv(P063);
1824     glNormal3fv(N006);
1825     glVertex3fv(P006);
1826     glNormal3fv(N064);
1827     glVertex3fv(P064);
1828     glEnd();
1829     glBegin(GL_POLYGON);
1830     glNormal3fv(N064);
1831     glVertex3fv(P064);
1832     glNormal3fv(N006);
1833     glVertex3fv(P006);
1834     glNormal3fv(N099);
1835     glVertex3fv(P099);
1836     glEnd();
1837     glBegin(GL_POLYGON);
1838     glNormal3fv(N064);
1839     glVertex3fv(P064);
1840     glNormal3fv(N099);
1841     glVertex3fv(P099);
1842     glNormal3fv(N117);
1843     glVertex3fv(P117);
1844     glEnd();
1845     glBegin(GL_POLYGON);
1846     glNormal3fv(N120);
1847     glVertex3fv(P120);
1848     glNormal3fv(N064);
1849     glVertex3fv(P064);
1850     glNormal3fv(N117);
1851     glVertex3fv(P117);
1852     glNormal3fv(N116);
1853     glVertex3fv(P116);
1854     glEnd();
1855     glBegin(GL_POLYGON);
1856     glNormal3fv(N006);
1857     glVertex3fv(P006);
1858     glNormal3fv(N065);
1859     glVertex3fv(P065);
1860     glNormal3fv(N099);
1861     glVertex3fv(P099);
1862     glEnd();
1863     glBegin(GL_POLYGON);
1864     glNormal3fv(N062);
1865     glVertex3fv(P062);
1866     glNormal3fv(N100);
1867     glVertex3fv(P100);
1868     glNormal3fv(N120);
1869     glVertex3fv(P120);
1870     glEnd();
1871     glBegin(GL_POLYGON);
1872     glNormal3fv(N005);
1873     glVertex3fv(P005);
1874     glNormal3fv(N062);
1875     glVertex3fv(P062);
1876     glNormal3fv(N120);
1877     glVertex3fv(P120);
1878     glEnd();
1879     glBegin(GL_POLYGON);
1880     glNormal3fv(N005);
1881     glVertex3fv(P005);
1882     glNormal3fv(N120);
1883     glVertex3fv(P120);
1884     glNormal3fv(N002);
1885     glVertex3fv(P002);
1886     glEnd();
1887     glBegin(GL_POLYGON);
1888     glNormal3fv(N002);
1889     glVertex3fv(P002);
1890     glNormal3fv(N120);
1891     glVertex3fv(P120);
1892     glNormal3fv(N116);
1893     glVertex3fv(P116);
1894     glEnd();
1895     glBegin(GL_POLYGON);
1896     glNormal3fv(N060);
1897     glVertex3fv(P060);
1898     glNormal3fv(N005);
1899     glVertex3fv(P005);
1900     glNormal3fv(N002);
1901     glVertex3fv(P002);
1902     glEnd();
1903 }
1904
1905 static void
1906 Dolphin016(void)
1907 {
1908
1909     glDisable(GL_DEPTH_TEST);
1910     glBegin(GL_POLYGON);
1911     glVertex3fv(P123);
1912     glVertex3fv(P124);
1913     glVertex3fv(P125);
1914     glVertex3fv(P126);
1915     glVertex3fv(P127);
1916     glVertex3fv(P128);
1917     glEnd();
1918     glBegin(GL_POLYGON);
1919     glVertex3fv(P129);
1920     glVertex3fv(P130);
1921     glVertex3fv(P131);
1922     glVertex3fv(P132);
1923     glVertex3fv(P133);
1924     glVertex3fv(P134);
1925     glEnd();
1926     glBegin(GL_POLYGON);
1927     glVertex3fv(P103);
1928     glVertex3fv(P105);
1929     glVertex3fv(P108);
1930     glEnd();
1931     glEnable(GL_DEPTH_TEST);
1932 }
1933
1934 void
1935 DrawDolphin(fishRec * fish)
1936 {
1937     float seg0, seg1, seg2, seg3, seg4, seg5, seg6, seg7;
1938     float pitch, thrash, chomp;
1939
1940     fish->htail = (int) (fish->htail - (int) (10.0 * fish->v)) % 360;
1941
1942     thrash = 70.0 * fish->v;
1943
1944     seg0 = 1.0 * thrash * sin((fish->htail) * RRAD);
1945     seg3 = 1.0 * thrash * sin((fish->htail) * RRAD);
1946     seg1 = 2.0 * thrash * sin((fish->htail + 4.0) * RRAD);
1947     seg2 = 3.0 * thrash * sin((fish->htail + 6.0) * RRAD);
1948     seg4 = 4.0 * thrash * sin((fish->htail + 10.0) * RRAD);
1949     seg5 = 4.5 * thrash * sin((fish->htail + 15.0) * RRAD);
1950     seg6 = 5.0 * thrash * sin((fish->htail + 20.0) * RRAD);
1951     seg7 = 6.0 * thrash * sin((fish->htail + 30.0) * RRAD);
1952
1953     pitch = fish->v * sin((fish->htail + 180.0) * RRAD);
1954
1955     if (fish->v > 2.0) {
1956         chomp = -(fish->v - 2.0) * 200.0;
1957     }
1958     chomp = 100.0;
1959
1960     P012[1] = iP012[1] + seg5;
1961     P013[1] = iP013[1] + seg5;
1962     P014[1] = iP014[1] + seg5;
1963     P015[1] = iP015[1] + seg5;
1964     P016[1] = iP016[1] + seg5;
1965     P017[1] = iP017[1] + seg5;
1966     P018[1] = iP018[1] + seg5;
1967     P019[1] = iP019[1] + seg5;
1968
1969     P020[1] = iP020[1] + seg4;
1970     P021[1] = iP021[1] + seg4;
1971     P022[1] = iP022[1] + seg4;
1972     P023[1] = iP023[1] + seg4;
1973     P024[1] = iP024[1] + seg4;
1974     P025[1] = iP025[1] + seg4;
1975     P026[1] = iP026[1] + seg4;
1976     P027[1] = iP027[1] + seg4;
1977
1978     P028[1] = iP028[1] + seg2;
1979     P029[1] = iP029[1] + seg2;
1980     P030[1] = iP030[1] + seg2;
1981     P031[1] = iP031[1] + seg2;
1982     P032[1] = iP032[1] + seg2;
1983     P033[1] = iP033[1] + seg2;
1984     P034[1] = iP034[1] + seg2;
1985     P035[1] = iP035[1] + seg2;
1986
1987     P036[1] = iP036[1] + seg1;
1988     P037[1] = iP037[1] + seg1;
1989     P038[1] = iP038[1] + seg1;
1990     P039[1] = iP039[1] + seg1;
1991     P040[1] = iP040[1] + seg1;
1992     P041[1] = iP041[1] + seg1;
1993     P042[1] = iP042[1] + seg1;
1994     P043[1] = iP043[1] + seg1;
1995
1996     P044[1] = iP044[1] + seg0;
1997     P045[1] = iP045[1] + seg0;
1998     P046[1] = iP046[1] + seg0;
1999     P047[1] = iP047[1] + seg0;
2000     P048[1] = iP048[1] + seg0;
2001     P049[1] = iP049[1] + seg0;
2002     P050[1] = iP050[1] + seg0;
2003     P051[1] = iP051[1] + seg0;
2004
2005     P009[1] = iP009[1] + seg6;
2006     P010[1] = iP010[1] + seg6;
2007     P075[1] = iP075[1] + seg6;
2008     P076[1] = iP076[1] + seg6;
2009
2010     P001[1] = iP001[1] + seg7;
2011     P011[1] = iP011[1] + seg7;
2012     P068[1] = iP068[1] + seg7;
2013     P069[1] = iP069[1] + seg7;
2014     P070[1] = iP070[1] + seg7;
2015     P071[1] = iP071[1] + seg7;
2016     P072[1] = iP072[1] + seg7;
2017     P073[1] = iP073[1] + seg7;
2018     P074[1] = iP074[1] + seg7;
2019
2020     P091[1] = iP091[1] + seg3;
2021     P092[1] = iP092[1] + seg3;
2022     P093[1] = iP093[1] + seg3;
2023     P094[1] = iP094[1] + seg3;
2024     P095[1] = iP095[1] + seg3;
2025     P122[1] = iP122[1] + seg3 * 1.5;
2026
2027     P097[1] = iP097[1] + chomp;
2028     P098[1] = iP098[1] + chomp;
2029     P102[1] = iP102[1] + chomp;
2030     P110[1] = iP110[1] + chomp;
2031     P111[1] = iP111[1] + chomp;
2032     P121[1] = iP121[1] + chomp;
2033     P118[1] = iP118[1] + chomp;
2034     P119[1] = iP119[1] + chomp;
2035
2036     glPushMatrix();
2037
2038     glRotatef(pitch, 1.0, 0.0, 0.0);
2039
2040     glTranslatef(0.0, 0.0, 7000.0);
2041
2042     glRotatef(180.0, 0.0, 1.0, 0.0);
2043
2044     glEnable(GL_CULL_FACE);
2045     Dolphin014();
2046     Dolphin010();
2047     Dolphin009();
2048     Dolphin012();
2049     Dolphin013();
2050     Dolphin006();
2051     Dolphin002();
2052     Dolphin001();
2053     Dolphin003();
2054     Dolphin015();
2055     Dolphin004();
2056     Dolphin005();
2057     Dolphin007();
2058     Dolphin008();
2059     Dolphin011();
2060     Dolphin016();
2061     glDisable(GL_CULL_FACE);
2062
2063     glPopMatrix();
2064 }
2065 #endif