1/**
2 * (c) Copyright 1993, 1994, Silicon Graphics, Inc.
3 * ALL RIGHTS RESERVED
4 * Permission to use, copy, modify, and distribute this software for
5 * any purpose and without fee is hereby granted, provided that the above
6 * copyright notice appear in all copies and that both the copyright notice
7 * and this permission notice appear in supporting documentation, and that
8 * the name of Silicon Graphics, Inc. not be used in advertising
9 * or publicity pertaining to distribution of the software without specific,
10 * written prior permission.
11 *
12 * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS"
13 * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE,
14 * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR
15 * FITNESS FOR A PARTICULAR PURPOSE.  IN NO EVENT SHALL SILICON
16 * GRAPHICS, INC.  BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT,
17 * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY
18 * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION,
19 * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF
20 * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC.  HAS BEEN
21 * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON
22 * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE
23 * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE.
24 *
25 * US Government Users Restricted Rights
26 * Use, duplication, or disclosure by the Government is subject to
27 * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph
28 * (c)(1)(ii) of the Rights in Technical Data and Computer Software
29 * clause at DFARS 252.227-7013 and/or in similar or successor
30 * clauses in the FAR or the DOD or NASA FAR Supplement.
31 * Unpublished-- rights reserved under the copyright laws of the
32 * United States.  Contractor/manufacturer is Silicon Graphics,
33 * Inc., 2011 N.  Shoreline Blvd., Mountain View, CA 94039-7311.
34 *
35 * OpenGL(TM) is a trademark of Silicon Graphics, Inc.
36 */
37#include <GLUT/glut.h>
38#include <math.h>
39#include "atlantis.h"
40/* *INDENT-OFF* */
41static float N001[3] = {0.019249 ,0.011340 ,-0.999750};
42static float N002[3] = {-0.132579 ,0.954547 ,0.266952};
43static float N003[3] = {-0.196061 ,0.980392 ,-0.019778};
44static float N004[3] = {0.695461 ,0.604704 ,0.388158};
45static float N005[3] = {0.870600 ,0.425754 ,0.246557};
46static float N006[3] = {-0.881191 ,0.392012 ,0.264251};
47static float N008[3] = {-0.341437 ,0.887477 ,0.309523};
48static float N009[3] = {0.124035 ,-0.992278 ,0.000000};
49static float N010[3] = {0.242536 ,0.000000 ,-0.970143};
50static float N011[3] = {0.588172 ,0.000000 ,0.808736};
51static float N012[3] = {0.929824 ,-0.340623 ,-0.139298};
52static float N013[3] = {0.954183 ,0.267108 ,-0.134865};
53static float N014[3] = {0.495127 ,0.855436 ,-0.151914};
54static float N015[3] = {-0.390199 ,0.906569 ,-0.160867};
55static float N016[3] = {-0.923605 ,0.354581 ,-0.145692};
56static float N017[3] = {-0.955796 ,-0.260667 ,-0.136036};
57static float N018[3] = {-0.501283 ,-0.853462 ,-0.142540};
58static float N019[3] = {0.405300 ,-0.901974 ,-0.148913};
59static float N020[3] = {0.909913 ,-0.392746 ,-0.133451};
60static float N021[3] = {0.936494 ,0.331147 ,-0.115414};
61static float N022[3] = {0.600131 ,0.793724 ,-0.099222};
62static float N023[3] = {-0.231556 ,0.968361 ,-0.093053};
63static float N024[3] = {-0.844369 ,0.525330 ,-0.105211};
64static float N025[3] = {-0.982725 ,-0.136329 ,-0.125164};
65static float N026[3] = {-0.560844 ,-0.822654 ,-0.093241};
66static float N027[3] = {0.263884 ,-0.959981 ,-0.093817};
67static float N028[3] = {0.842057 ,-0.525192 ,-0.122938};
68static float N029[3] = {0.921620 ,0.367565 ,-0.124546};
69static float N030[3] = {0.613927 ,0.784109 ,-0.090918};
70static float N031[3] = {-0.448754 ,0.888261 ,-0.098037};
71static float N032[3] = {-0.891865 ,0.434376 ,-0.126077};
72static float N033[3] = {-0.881447 ,-0.448017 ,-0.149437};
73static float N034[3] = {-0.345647 ,-0.922057 ,-0.174183};
74static float N035[3] = {0.307998 ,-0.941371 ,-0.137688};
75static float N036[3] = {0.806316 ,-0.574647 ,-0.140124};
76static float N037[3] = {0.961346 ,0.233646 ,-0.145681};
77static float N038[3] = {0.488451 ,0.865586 ,-0.110351};
78static float N039[3] = {-0.374290 ,0.921953 ,-0.099553};
79static float N040[3] = {-0.928504 ,0.344533 ,-0.138485};
80static float N041[3] = {-0.918419 ,-0.371792 ,-0.135189};
81static float N042[3] = {-0.520666 ,-0.833704 ,-0.183968};
82static float N043[3] = {0.339204 ,-0.920273 ,-0.195036};
83static float N044[3] = {0.921475 ,-0.387382 ,-0.028636};
84static float N045[3] = {0.842465 ,0.533335 ,-0.076204};
85static float N046[3] = {0.380110 ,0.924939 ,0.002073};
86static float N047[3] = {-0.276128 ,0.961073 ,-0.009579};
87static float N048[3] = {-0.879684 ,0.473001 ,-0.049250};
88static float N049[3] = {-0.947184 ,-0.317614 ,-0.044321};
89static float N050[3] = {-0.642059 ,-0.764933 ,-0.051363};
90static float N051[3] = {0.466794 ,-0.880921 ,-0.077990};
91static float N052[3] = {0.898509 ,-0.432277 ,0.076279};
92static float N053[3] = {0.938985 ,0.328141 ,0.103109};
93static float N054[3] = {0.442420 ,0.895745 ,0.043647};
94static float N055[3] = {-0.255163 ,0.966723 ,0.018407};
95static float N056[3] = {-0.833769 ,0.540650 ,0.111924};
96static float N057[3] = {-0.953653 ,-0.289939 ,0.080507};
97static float N058[3] = {-0.672357 ,-0.730524 ,0.119461};
98static float N059[3] = {0.522249 ,-0.846652 ,0.102157};
99static float N060[3] = {0.885868 ,-0.427631 ,0.179914};
100static float N062[3] = {0.648942 ,0.743116 ,0.163255};
101static float N063[3] = {-0.578967 ,0.807730 ,0.111219};
102static float N065[3] = {-0.909864 ,-0.352202 ,0.219321};
103static float N066[3] = {-0.502541 ,-0.818090 ,0.279610};
104static float N067[3] = {0.322919 ,-0.915358 ,0.240504};
105static float N068[3] = {0.242536 ,0.000000 ,-0.970143};
106static float N069[3] = {0.000000 ,1.000000 ,0.000000};
107static float N070[3] = {0.000000 ,1.000000 ,0.000000};
108static float N071[3] = {0.000000 ,1.000000 ,0.000000};
109static float N072[3] = {0.000000 ,1.000000 ,0.000000};
110static float N073[3] = {0.000000 ,1.000000 ,0.000000};
111static float N074[3] = {0.000000 ,1.000000 ,0.000000};
112static float N075[3] = {0.031220 ,0.999025 ,-0.031220};
113static float N076[3] = {0.000000 ,1.000000 ,0.000000};
114static float N077[3] = {0.446821 ,0.893642 ,0.041889};
115static float N078[3] = {0.863035 ,-0.100980 ,0.494949};
116static float N079[3] = {0.585597 ,-0.808215 ,0.062174};
117static float N080[3] = {0.000000 ,1.000000 ,0.000000};
118static float N081[3] = {1.000000 ,0.000000 ,0.000000};
119static float N082[3] = {0.000000 ,1.000000 ,0.000000};
120static float N083[3] = {-1.000000 ,0.000000 ,0.000000};
121static float N084[3] = {-0.478893 ,0.837129 ,-0.264343};
122static float N085[3] = {0.000000 ,1.000000 ,0.000000};
123static float N086[3] = {0.763909 ,0.539455 ,-0.354163};
124static float N087[3] = {0.446821 ,0.893642 ,0.041889};
125static float N088[3] = {0.385134 ,-0.908288 ,0.163352};
126static float N089[3] = {-0.605952 ,0.779253 ,-0.159961};
127static float N090[3] = {0.000000 ,1.000000 ,0.000000};
128static float N091[3] = {0.000000 ,1.000000 ,0.000000};
129static float N092[3] = {0.000000 ,1.000000 ,0.000000};
130static float N093[3] = {0.000000 ,1.000000 ,0.000000};
131static float N094[3] = {1.000000 ,0.000000 ,0.000000};
132static float N095[3] = {-1.000000 ,0.000000 ,0.000000};
133static float N096[3] = {0.644444 ,-0.621516 ,0.445433};
134static float N097[3] = {-0.760896 ,-0.474416 ,0.442681};
135static float N098[3] = {0.636888 ,-0.464314 ,0.615456};
136static float N099[3] = {-0.710295 ,0.647038 ,0.277168};
137static float N100[3] = {0.009604 ,0.993655 ,0.112063};
138static float iP001[3] = {18.74, 13.19, 3.76};
139static float P001[3] = {18.74, 13.19, 3.76};
140static float P002[3] = {0.00, 390.42, 10292.57};
141static float P003[3] = {55.80, 622.31, 8254.35};
142static float P004[3] = {20.80, 247.66, 10652.13};
143static float P005[3] = {487.51, 198.05, 9350.78};
144static float P006[3] = {-457.61, 199.04, 9353.01};
145static float P008[3] = {-34.67, 247.64, 10663.71};
146static float iP009[3] = {97.46, 67.63, 593.82};
147static float iP010[3] = {-84.33, 67.63, 588.18};
148static float iP011[3] = {118.69, 8.98, -66.91};
149static float P009[3] = {97.46, 67.63, 593.82};
150static float P010[3] = {-84.33, 67.63, 588.18};
151static float P011[3] = {118.69, 8.98, -66.91};
152static float iP012[3] = {156.48, -31.95, 924.54};
153static float iP013[3] = {162.00, 110.22, 924.54};
154static float iP014[3] = {88.16, 221.65, 924.54};
155static float iP015[3] = {-65.21, 231.16, 924.54};
156static float iP016[3] = {-156.48, 121.97, 924.54};
157static float iP017[3] = {-162.00, -23.93, 924.54};
158static float iP018[3] = {-88.16, -139.10, 924.54};
159static float iP019[3] = {65.21, -148.61, 924.54};
160static float iP020[3] = {246.87, -98.73, 1783.04};
161static float iP021[3] = {253.17, 127.76, 1783.04};
162static float iP022[3] = {132.34, 270.77, 1783.04};
163static float iP023[3] = {-97.88, 285.04, 1783.04};
164static float iP024[3] = {-222.97, 139.80, 1783.04};
165static float iP025[3] = {-225.29, -86.68, 1783.04};
166static float iP026[3] = {-108.44, -224.15, 1783.04};
167static float iP027[3] = {97.88, -221.56, 1783.04};
168static float iP028[3] = {410.55, -200.66, 3213.87};
169static float iP029[3] = {432.19, 148.42, 3213.87};
170static float iP030[3] = {200.66, 410.55, 3213.87};
171static float iP031[3] = {-148.42, 432.19, 3213.87};
172static float iP032[3] = {-407.48, 171.88, 3213.87};
173static float iP033[3] = {-432.19, -148.42, 3213.87};
174static float iP034[3] = {-148.88, -309.74, 3213.87};
175static float iP035[3] = {156.38, -320.17, 3213.87};
176static float iP036[3] = {523.39, -303.81, 4424.57};
177static float iP037[3] = {574.66, 276.84, 4424.57};
178static float iP038[3] = {243.05, 492.50, 4424.57};
179static float iP039[3] = {-191.23, 520.13, 4424.57};
180static float iP040[3] = {-523.39, 304.01, 4424.57};
181static float iP041[3] = {-574.66, -231.83, 4424.57};
182static float iP042[3] = {-266.95, -578.17, 4424.57};
183static float iP043[3] = {211.14, -579.67, 4424.57};
184static float iP044[3] = {680.57, -370.27, 5943.46};
185static float iP045[3] = {834.01, 363.09, 5943.46};
186static float iP046[3] = {371.29, 614.13, 5943.46};
187static float iP047[3] = {-291.43, 621.86, 5943.46};
188static float iP048[3] = {-784.13, 362.60, 5943.46};
189static float iP049[3] = {-743.29, -325.82, 5943.46};
190static float iP050[3] = {-383.24, -804.77, 5943.46};
191static float iP051[3] = {283.47, -846.09, 5943.46};
192static float P012[3] = {156.48, -31.95, 924.54};
193static float P013[3] = {162.00, 110.22, 924.54};
194static float P014[3] = {88.16, 221.65, 924.54};
195static float P015[3] = {-65.21, 231.16, 924.54};
196static float P016[3] = {-156.48, 121.97, 924.54};
197static float P017[3] = {-162.00, -23.93, 924.54};
198static float P018[3] = {-88.16, -139.10, 924.54};
199static float P019[3] = {65.21, -148.61, 924.54};
200static float P020[3] = {246.87, -98.73, 1783.04};
201static float P021[3] = {253.17, 127.76, 1783.04};
202static float P022[3] = {132.34, 270.77, 1783.04};
203static float P023[3] = {-97.88, 285.04, 1783.04};
204static float P024[3] = {-222.97, 139.80, 1783.04};
205static float P025[3] = {-225.29, -86.68, 1783.04};
206static float P026[3] = {-108.44, -224.15, 1783.04};
207static float P027[3] = {97.88, -221.56, 1783.04};
208static float P028[3] = {410.55, -200.66, 3213.87};
209static float P029[3] = {432.19, 148.42, 3213.87};
210static float P030[3] = {200.66, 410.55, 3213.87};
211static float P031[3] = {-148.42, 432.19, 3213.87};
212static float P032[3] = {-407.48, 171.88, 3213.87};
213static float P033[3] = {-432.19, -148.42, 3213.87};
214static float P034[3] = {-148.88, -309.74, 3213.87};
215static float P035[3] = {156.38, -320.17, 3213.87};
216static float P036[3] = {523.39, -303.81, 4424.57};
217static float P037[3] = {574.66, 276.84, 4424.57};
218static float P038[3] = {243.05, 492.50, 4424.57};
219static float P039[3] = {-191.23, 520.13, 4424.57};
220static float P040[3] = {-523.39, 304.01, 4424.57};
221static float P041[3] = {-574.66, -231.83, 4424.57};
222static float P042[3] = {-266.95, -578.17, 4424.57};
223static float P043[3] = {211.14, -579.67, 4424.57};
224static float P044[3] = {680.57, -370.27, 5943.46};
225static float P045[3] = {834.01, 363.09, 5943.46};
226static float P046[3] = {371.29, 614.13, 5943.46};
227static float P047[3] = {-291.43, 621.86, 5943.46};
228static float P048[3] = {-784.13, 362.60, 5943.46};
229static float P049[3] = {-743.29, -325.82, 5943.46};
230static float P050[3] = {-383.24, -804.77, 5943.46};
231static float P051[3] = {283.47, -846.09, 5943.46};
232static float P052[3] = {599.09, -332.24, 7902.59};
233static float P053[3] = {735.48, 306.26, 7911.92};
234static float P054[3] = {321.55, 558.53, 7902.59};
235static float P055[3] = {-260.54, 559.84, 7902.59};
236static float P056[3] = {-698.66, 320.83, 7902.59};
237static float P057[3] = {-643.29, -299.16, 7902.59};
238static float P058[3] = {-341.47, -719.30, 7902.59};
239static float P059[3] = {252.57, -756.12, 7902.59};
240static float P060[3] = {458.39, -265.31, 9355.44};
241static float P062[3] = {224.04, 438.98, 9364.77};
242static float P063[3] = {-165.71, 441.27, 9355.44};
243static float P065[3] = {-473.99, -219.71, 9355.44};
244static float P066[3] = {-211.97, -479.87, 9355.44};
245static float P067[3] = {192.86, -504.03, 9355.44};
246static float iP068[3] = {-112.44, 9.25, -64.42};
247static float iP069[3] = {1155.63, 0.00, -182.46};
248static float iP070[3] = {-1143.13, 0.00, -181.54};
249static float iP071[3] = {1424.23, 0.00, -322.09};
250static float iP072[3] = {-1368.01, 0.00, -310.38};
251static float iP073[3] = {1255.57, 2.31, 114.05};
252static float iP074[3] = {-1149.38, 0.00, 117.12};
253static float iP075[3] = {718.36, 0.00, 433.36};
254static float iP076[3] = {-655.90, 0.00, 433.36};
255static float P068[3] = {-112.44, 9.25, -64.42};
256static float P069[3] = {1155.63, 0.00, -182.46};
257static float P070[3] = {-1143.13, 0.00, -181.54};
258static float P071[3] = {1424.23, 0.00, -322.09};
259static float P072[3] = {-1368.01, 0.00, -310.38};
260static float P073[3] = {1255.57, 2.31, 114.05};
261static float P074[3] = {-1149.38, 0.00, 117.12};
262static float P075[3] = {718.36, 0.00, 433.36};
263static float P076[3] = {-655.90, 0.00, 433.36};
264static float P077[3] = {1058.00, -2.66, 7923.51};
265static float P078[3] = {-1016.51, -15.47, 7902.87};
266static float P079[3] = {-1363.99, -484.50, 7593.38};
267static float P080[3] = {1478.09, -861.47, 7098.12};
268static float P081[3] = {1338.06, -284.68, 7024.15};
269static float P082[3] = {-1545.51, -860.64, 7106.60};
270static float P083[3] = {1063.19, -70.46, 7466.60};
271static float P084[3] = {-1369.18, -288.11, 7015.34};
272static float P085[3] = {1348.44, -482.50, 7591.41};
273static float P086[3] = {-1015.45, -96.80, 7474.86};
274static float P087[3] = {731.04, 148.38, 7682.58};
275static float P088[3] = {-697.03, 151.82, 7668.81};
276static float P089[3] = {-686.82, 157.09, 7922.29};
277static float P090[3] = {724.73, 147.75, 7931.39};
278static float iP091[3] = {0.00, 327.10, 2346.55};
279static float iP092[3] = {0.00, 552.28, 2311.31};
280static float iP093[3] = {0.00, 721.16, 2166.41};
281static float iP094[3] = {0.00, 693.42, 2388.80};
282static float iP095[3] = {0.00, 389.44, 2859.97};
283static float P091[3] = {0.00, 327.10, 2346.55};
284static float P092[3] = {0.00, 552.28, 2311.31};
285static float P093[3] = {0.00, 721.16, 2166.41};
286static float P094[3] = {0.00, 693.42, 2388.80};
287static float P095[3] = {0.00, 389.44, 2859.97};
288static float iP096[3] = {222.02, -183.67, 10266.89};
289static float iP097[3] = {-128.90, -182.70, 10266.89};
290static float iP098[3] = {41.04, 88.31, 10659.36};
291static float iP099[3] = {-48.73, 88.30, 10659.36};
292static float P096[3] = {222.02, -183.67, 10266.89};
293static float P097[3] = {-128.90, -182.70, 10266.89};
294static float P098[3] = {41.04, 88.31, 10659.36};
295static float P099[3] = {-48.73, 88.30, 10659.36};
296static float P100[3] = {0.00, 603.42, 9340.68};
297static float P104[3] = {-9.86, 567.62, 7858.65};
298static float P105[3] = {31.96, 565.27, 7908.46};
299static float P106[3] = {22.75, 568.13, 7782.83};
300static float P107[3] = {58.93, 568.42, 7775.94};
301static float P108[3] = {55.91, 565.59, 7905.86};
302static float P109[3] = {99.21, 566.00, 7858.65};
303static float P110[3] = {-498.83, 148.14, 9135.10};
304static float P111[3] = {-495.46, 133.24, 9158.48};
305static float P112[3] = {-490.82, 146.23, 9182.76};
306static float P113[3] = {-489.55, 174.11, 9183.66};
307static float P114[3] = {-492.92, 189.00, 9160.28};
308static float P115[3] = {-497.56, 176.02, 9136.00};
309static float P116[3] = {526.54, 169.68, 9137.70};
310static float P117[3] = {523.49, 184.85, 9161.42};
311static float P118[3] = {518.56, 171.78, 9186.06};
312static float P119[3] = {516.68, 143.53, 9186.98};
313static float P120[3] = {519.73, 128.36, 9163.26};
314static float P121[3] = {524.66, 141.43, 9138.62};
315/* *INDENT-ON* */
316
317void
318Whale001(void)
319{
320
321    glBegin(GL_POLYGON);
322    glNormal3fv(N001);
323    glVertex3fv(P001);
324    glNormal3fv(N068);
325    glVertex3fv(P068);
326    glNormal3fv(N010);
327    glVertex3fv(P010);
328    glEnd();
329    glBegin(GL_POLYGON);
330    glNormal3fv(N068);
331    glVertex3fv(P068);
332    glNormal3fv(N076);
333    glVertex3fv(P076);
334    glNormal3fv(N010);
335    glVertex3fv(P010);
336    glEnd();
337    glBegin(GL_POLYGON);
338    glNormal3fv(N068);
339    glVertex3fv(P068);
340    glNormal3fv(N070);
341    glVertex3fv(P070);
342    glNormal3fv(N076);
343    glVertex3fv(P076);
344    glEnd();
345    glBegin(GL_POLYGON);
346    glNormal3fv(N076);
347    glVertex3fv(P076);
348    glNormal3fv(N070);
349    glVertex3fv(P070);
350    glNormal3fv(N074);
351    glVertex3fv(P074);
352    glEnd();
353    glBegin(GL_POLYGON);
354    glNormal3fv(N070);
355    glVertex3fv(P070);
356    glNormal3fv(N072);
357    glVertex3fv(P072);
358    glNormal3fv(N074);
359    glVertex3fv(P074);
360    glEnd();
361    glBegin(GL_POLYGON);
362    glNormal3fv(N072);
363    glVertex3fv(P072);
364    glNormal3fv(N070);
365    glVertex3fv(P070);
366    glNormal3fv(N074);
367    glVertex3fv(P074);
368    glEnd();
369    glBegin(GL_POLYGON);
370    glNormal3fv(N074);
371    glVertex3fv(P074);
372    glNormal3fv(N070);
373    glVertex3fv(P070);
374    glNormal3fv(N076);
375    glVertex3fv(P076);
376    glEnd();
377    glBegin(GL_POLYGON);
378    glNormal3fv(N070);
379    glVertex3fv(P070);
380    glNormal3fv(N068);
381    glVertex3fv(P068);
382    glNormal3fv(N076);
383    glVertex3fv(P076);
384    glEnd();
385    glBegin(GL_POLYGON);
386    glNormal3fv(N076);
387    glVertex3fv(P076);
388    glNormal3fv(N068);
389    glVertex3fv(P068);
390    glNormal3fv(N010);
391    glVertex3fv(P010);
392    glEnd();
393    glBegin(GL_POLYGON);
394    glNormal3fv(N068);
395    glVertex3fv(P068);
396    glNormal3fv(N001);
397    glVertex3fv(P001);
398    glNormal3fv(N010);
399    glVertex3fv(P010);
400    glEnd();
401}
402
403void
404Whale002(void)
405{
406    glBegin(GL_POLYGON);
407    glNormal3fv(N011);
408    glVertex3fv(P011);
409    glNormal3fv(N001);
410    glVertex3fv(P001);
411    glNormal3fv(N009);
412    glVertex3fv(P009);
413    glEnd();
414    glBegin(GL_POLYGON);
415    glNormal3fv(N075);
416    glVertex3fv(P075);
417    glNormal3fv(N011);
418    glVertex3fv(P011);
419    glNormal3fv(N009);
420    glVertex3fv(P009);
421    glEnd();
422    glBegin(GL_POLYGON);
423    glNormal3fv(N069);
424    glVertex3fv(P069);
425    glNormal3fv(N011);
426    glVertex3fv(P011);
427    glNormal3fv(N075);
428    glVertex3fv(P075);
429    glEnd();
430    glBegin(GL_POLYGON);
431    glNormal3fv(N069);
432    glVertex3fv(P069);
433    glNormal3fv(N075);
434    glVertex3fv(P075);
435    glNormal3fv(N073);
436    glVertex3fv(P073);
437    glEnd();
438    glBegin(GL_POLYGON);
439    glNormal3fv(N071);
440    glVertex3fv(P071);
441    glNormal3fv(N069);
442    glVertex3fv(P069);
443    glNormal3fv(N073);
444    glVertex3fv(P073);
445    glEnd();
446    glBegin(GL_POLYGON);
447    glNormal3fv(N001);
448    glVertex3fv(P001);
449    glNormal3fv(N011);
450    glVertex3fv(P011);
451    glNormal3fv(N009);
452    glVertex3fv(P009);
453    glEnd();
454    glBegin(GL_POLYGON);
455    glNormal3fv(N009);
456    glVertex3fv(P009);
457    glNormal3fv(N011);
458    glVertex3fv(P011);
459    glNormal3fv(N075);
460    glVertex3fv(P075);
461    glEnd();
462    glBegin(GL_POLYGON);
463    glNormal3fv(N011);
464    glVertex3fv(P011);
465    glNormal3fv(N069);
466    glVertex3fv(P069);
467    glNormal3fv(N075);
468    glVertex3fv(P075);
469    glEnd();
470    glBegin(GL_POLYGON);
471    glNormal3fv(N069);
472    glVertex3fv(P069);
473    glNormal3fv(N073);
474    glVertex3fv(P073);
475    glNormal3fv(N075);
476    glVertex3fv(P075);
477    glEnd();
478    glBegin(GL_POLYGON);
479    glNormal3fv(N069);
480    glVertex3fv(P069);
481    glNormal3fv(N071);
482    glVertex3fv(P071);
483    glNormal3fv(N073);
484    glVertex3fv(P073);
485    glEnd();
486}
487
488void
489Whale003(void)
490{
491    glBegin(GL_POLYGON);
492    glNormal3fv(N018);
493    glVertex3fv(P018);
494    glNormal3fv(N001);
495    glVertex3fv(P001);
496    glNormal3fv(N019);
497    glVertex3fv(P019);
498    glEnd();
499    glBegin(GL_POLYGON);
500    glNormal3fv(N019);
501    glVertex3fv(P019);
502    glNormal3fv(N001);
503    glVertex3fv(P001);
504    glNormal3fv(N012);
505    glVertex3fv(P012);
506    glEnd();
507    glBegin(GL_POLYGON);
508    glNormal3fv(N017);
509    glVertex3fv(P017);
510    glNormal3fv(N001);
511    glVertex3fv(P001);
512    glNormal3fv(N018);
513    glVertex3fv(P018);
514    glEnd();
515    glBegin(GL_POLYGON);
516    glNormal3fv(N001);
517    glVertex3fv(P001);
518    glNormal3fv(N017);
519    glVertex3fv(P017);
520    glNormal3fv(N016);
521    glVertex3fv(P016);
522    glEnd();
523    glBegin(GL_POLYGON);
524    glNormal3fv(N001);
525    glVertex3fv(P001);
526    glNormal3fv(N013);
527    glVertex3fv(P013);
528    glNormal3fv(N012);
529    glVertex3fv(P012);
530    glEnd();
531    glBegin(GL_POLYGON);
532    glNormal3fv(N001);
533    glVertex3fv(P001);
534    glNormal3fv(N016);
535    glVertex3fv(P016);
536    glNormal3fv(N015);
537    glVertex3fv(P015);
538    glEnd();
539    glBegin(GL_POLYGON);
540    glNormal3fv(N001);
541    glVertex3fv(P001);
542    glNormal3fv(N014);
543    glVertex3fv(P014);
544    glNormal3fv(N013);
545    glVertex3fv(P013);
546    glEnd();
547    glBegin(GL_POLYGON);
548    glNormal3fv(N001);
549    glVertex3fv(P001);
550    glNormal3fv(N015);
551    glVertex3fv(P015);
552    glNormal3fv(N014);
553    glVertex3fv(P014);
554    glEnd();
555}
556
557void
558Whale004(void)
559{
560    glBegin(GL_POLYGON);
561    glNormal3fv(N014);
562    glVertex3fv(P014);
563    glNormal3fv(N015);
564    glVertex3fv(P015);
565    glNormal3fv(N023);
566    glVertex3fv(P023);
567    glNormal3fv(N022);
568    glVertex3fv(P022);
569    glEnd();
570    glBegin(GL_POLYGON);
571    glNormal3fv(N015);
572    glVertex3fv(P015);
573    glNormal3fv(N016);
574    glVertex3fv(P016);
575    glNormal3fv(N024);
576    glVertex3fv(P024);
577    glNormal3fv(N023);
578    glVertex3fv(P023);
579    glEnd();
580    glBegin(GL_POLYGON);
581    glNormal3fv(N016);
582    glVertex3fv(P016);
583    glNormal3fv(N017);
584    glVertex3fv(P017);
585    glNormal3fv(N025);
586    glVertex3fv(P025);
587    glNormal3fv(N024);
588    glVertex3fv(P024);
589    glEnd();
590    glBegin(GL_POLYGON);
591    glNormal3fv(N017);
592    glVertex3fv(P017);
593    glNormal3fv(N018);
594    glVertex3fv(P018);
595    glNormal3fv(N026);
596    glVertex3fv(P026);
597    glNormal3fv(N025);
598    glVertex3fv(P025);
599    glEnd();
600    glBegin(GL_POLYGON);
601    glNormal3fv(N013);
602    glVertex3fv(P013);
603    glNormal3fv(N014);
604    glVertex3fv(P014);
605    glNormal3fv(N022);
606    glVertex3fv(P022);
607    glNormal3fv(N021);
608    glVertex3fv(P021);
609    glEnd();
610    glBegin(GL_POLYGON);
611    glNormal3fv(N012);
612    glVertex3fv(P012);
613    glNormal3fv(N013);
614    glVertex3fv(P013);
615    glNormal3fv(N021);
616    glVertex3fv(P021);
617    glNormal3fv(N020);
618    glVertex3fv(P020);
619    glEnd();
620    glBegin(GL_POLYGON);
621    glNormal3fv(N018);
622    glVertex3fv(P018);
623    glNormal3fv(N019);
624    glVertex3fv(P019);
625    glNormal3fv(N027);
626    glVertex3fv(P027);
627    glNormal3fv(N026);
628    glVertex3fv(P026);
629    glEnd();
630    glBegin(GL_POLYGON);
631    glNormal3fv(N019);
632    glVertex3fv(P019);
633    glNormal3fv(N012);
634    glVertex3fv(P012);
635    glNormal3fv(N020);
636    glVertex3fv(P020);
637    glNormal3fv(N027);
638    glVertex3fv(P027);
639    glEnd();
640}
641
642void
643Whale005(void)
644{
645    glBegin(GL_POLYGON);
646    glNormal3fv(N022);
647    glVertex3fv(P022);
648    glNormal3fv(N023);
649    glVertex3fv(P023);
650    glNormal3fv(N031);
651    glVertex3fv(P031);
652    glNormal3fv(N030);
653    glVertex3fv(P030);
654    glEnd();
655    glBegin(GL_POLYGON);
656    glNormal3fv(N021);
657    glVertex3fv(P021);
658    glNormal3fv(N022);
659    glVertex3fv(P022);
660    glNormal3fv(N030);
661    glVertex3fv(P030);
662    glEnd();
663    glBegin(GL_POLYGON);
664    glNormal3fv(N021);
665    glVertex3fv(P021);
666    glNormal3fv(N030);
667    glVertex3fv(P030);
668    glNormal3fv(N029);
669    glVertex3fv(P029);
670    glEnd();
671    glBegin(GL_POLYGON);
672    glNormal3fv(N023);
673    glVertex3fv(P023);
674    glNormal3fv(N024);
675    glVertex3fv(P024);
676    glNormal3fv(N031);
677    glVertex3fv(P031);
678    glEnd();
679    glBegin(GL_POLYGON);
680    glNormal3fv(N024);
681    glVertex3fv(P024);
682    glNormal3fv(N032);
683    glVertex3fv(P032);
684    glNormal3fv(N031);
685    glVertex3fv(P031);
686    glEnd();
687    glBegin(GL_POLYGON);
688    glNormal3fv(N024);
689    glVertex3fv(P024);
690    glNormal3fv(N025);
691    glVertex3fv(P025);
692    glNormal3fv(N032);
693    glVertex3fv(P032);
694    glEnd();
695    glBegin(GL_POLYGON);
696    glNormal3fv(N025);
697    glVertex3fv(P025);
698    glNormal3fv(N033);
699    glVertex3fv(P033);
700    glNormal3fv(N032);
701    glVertex3fv(P032);
702    glEnd();
703    glBegin(GL_POLYGON);
704    glNormal3fv(N020);
705    glVertex3fv(P020);
706    glNormal3fv(N021);
707    glVertex3fv(P021);
708    glNormal3fv(N029);
709    glVertex3fv(P029);
710    glEnd();
711    glBegin(GL_POLYGON);
712    glNormal3fv(N020);
713    glVertex3fv(P020);
714    glNormal3fv(N029);
715    glVertex3fv(P029);
716    glNormal3fv(N028);
717    glVertex3fv(P028);
718    glEnd();
719    glBegin(GL_POLYGON);
720    glNormal3fv(N027);
721    glVertex3fv(P027);
722    glNormal3fv(N020);
723    glVertex3fv(P020);
724    glNormal3fv(N028);
725    glVertex3fv(P028);
726    glEnd();
727    glBegin(GL_POLYGON);
728    glNormal3fv(N027);
729    glVertex3fv(P027);
730    glNormal3fv(N028);
731    glVertex3fv(P028);
732    glNormal3fv(N035);
733    glVertex3fv(P035);
734    glEnd();
735    glBegin(GL_POLYGON);
736    glNormal3fv(N025);
737    glVertex3fv(P025);
738    glNormal3fv(N026);
739    glVertex3fv(P026);
740    glNormal3fv(N033);
741    glVertex3fv(P033);
742    glEnd();
743    glBegin(GL_POLYGON);
744    glNormal3fv(N033);
745    glVertex3fv(P033);
746    glNormal3fv(N026);
747    glVertex3fv(P026);
748    glNormal3fv(N034);
749    glVertex3fv(P034);
750    glEnd();
751    glBegin(GL_POLYGON);
752    glNormal3fv(N026);
753    glVertex3fv(P026);
754    glNormal3fv(N027);
755    glVertex3fv(P027);
756    glNormal3fv(N035);
757    glVertex3fv(P035);
758    glNormal3fv(N034);
759    glVertex3fv(P034);
760    glEnd();
761}
762
763void
764Whale006(void)
765{
766    glBegin(GL_POLYGON);
767    glNormal3fv(N092);
768    glVertex3fv(P092);
769    glNormal3fv(N093);
770    glVertex3fv(P093);
771    glNormal3fv(N094);
772    glVertex3fv(P094);
773    glEnd();
774    glBegin(GL_POLYGON);
775    glNormal3fv(N093);
776    glVertex3fv(P093);
777    glNormal3fv(N092);
778    glVertex3fv(P092);
779    glNormal3fv(N094);
780    glVertex3fv(P094);
781    glEnd();
782    glBegin(GL_POLYGON);
783    glNormal3fv(N092);
784    glVertex3fv(P092);
785    glNormal3fv(N091);
786    glVertex3fv(P091);
787    glNormal3fv(N095);
788    glVertex3fv(P095);
789    glNormal3fv(N094);
790    glVertex3fv(P094);
791    glEnd();
792    glBegin(GL_POLYGON);
793    glNormal3fv(N091);
794    glVertex3fv(P091);
795    glNormal3fv(N092);
796    glVertex3fv(P092);
797    glNormal3fv(N094);
798    glVertex3fv(P094);
799    glNormal3fv(N095);
800    glVertex3fv(P095);
801    glEnd();
802}
803
804void
805Whale007(void)
806{
807    glBegin(GL_POLYGON);
808    glNormal3fv(N030);
809    glVertex3fv(P030);
810    glNormal3fv(N031);
811    glVertex3fv(P031);
812    glNormal3fv(N039);
813    glVertex3fv(P039);
814    glNormal3fv(N038);
815    glVertex3fv(P038);
816    glEnd();
817    glBegin(GL_POLYGON);
818    glNormal3fv(N029);
819    glVertex3fv(P029);
820    glNormal3fv(N030);
821    glVertex3fv(P030);
822    glNormal3fv(N038);
823    glVertex3fv(P038);
824    glEnd();
825    glBegin(GL_POLYGON);
826    glNormal3fv(N029);
827    glVertex3fv(P029);
828    glNormal3fv(N038);
829    glVertex3fv(P038);
830    glNormal3fv(N037);
831    glVertex3fv(P037);
832    glEnd();
833    glBegin(GL_POLYGON);
834    glNormal3fv(N028);
835    glVertex3fv(P028);
836    glNormal3fv(N029);
837    glVertex3fv(P029);
838    glNormal3fv(N037);
839    glVertex3fv(P037);
840    glEnd();
841    glBegin(GL_POLYGON);
842    glNormal3fv(N028);
843    glVertex3fv(P028);
844    glNormal3fv(N037);
845    glVertex3fv(P037);
846    glNormal3fv(N036);
847    glVertex3fv(P036);
848    glEnd();
849    glBegin(GL_POLYGON);
850    glNormal3fv(N035);
851    glVertex3fv(P035);
852    glNormal3fv(N028);
853    glVertex3fv(P028);
854    glNormal3fv(N036);
855    glVertex3fv(P036);
856    glEnd();
857    glBegin(GL_POLYGON);
858    glNormal3fv(N035);
859    glVertex3fv(P035);
860    glNormal3fv(N036);
861    glVertex3fv(P036);
862    glNormal3fv(N043);
863    glVertex3fv(P043);
864    glEnd();
865    glBegin(GL_POLYGON);
866    glNormal3fv(N034);
867    glVertex3fv(P034);
868    glNormal3fv(N035);
869    glVertex3fv(P035);
870    glNormal3fv(N043);
871    glVertex3fv(P043);
872    glNormal3fv(N042);
873    glVertex3fv(P042);
874    glEnd();
875    glBegin(GL_POLYGON);
876    glNormal3fv(N033);
877    glVertex3fv(P033);
878    glNormal3fv(N034);
879    glVertex3fv(P034);
880    glNormal3fv(N042);
881    glVertex3fv(P042);
882    glEnd();
883    glBegin(GL_POLYGON);
884    glNormal3fv(N033);
885    glVertex3fv(P033);
886    glNormal3fv(N042);
887    glVertex3fv(P042);
888    glNormal3fv(N041);
889    glVertex3fv(P041);
890    glEnd();
891    glBegin(GL_POLYGON);
892    glNormal3fv(N031);
893    glVertex3fv(P031);
894    glNormal3fv(N032);
895    glVertex3fv(P032);
896    glNormal3fv(N039);
897    glVertex3fv(P039);
898    glEnd();
899    glBegin(GL_POLYGON);
900    glNormal3fv(N039);
901    glVertex3fv(P039);
902    glNormal3fv(N032);
903    glVertex3fv(P032);
904    glNormal3fv(N040);
905    glVertex3fv(P040);
906    glEnd();
907    glBegin(GL_POLYGON);
908    glNormal3fv(N032);
909    glVertex3fv(P032);
910    glNormal3fv(N033);
911    glVertex3fv(P033);
912    glNormal3fv(N040);
913    glVertex3fv(P040);
914    glEnd();
915    glBegin(GL_POLYGON);
916    glNormal3fv(N040);
917    glVertex3fv(P040);
918    glNormal3fv(N033);
919    glVertex3fv(P033);
920    glNormal3fv(N041);
921    glVertex3fv(P041);
922    glEnd();
923}
924
925void
926Whale008(void)
927{
928    glBegin(GL_POLYGON);
929    glNormal3fv(N042);
930    glVertex3fv(P042);
931    glNormal3fv(N043);
932    glVertex3fv(P043);
933    glNormal3fv(N051);
934    glVertex3fv(P051);
935    glNormal3fv(N050);
936    glVertex3fv(P050);
937    glEnd();
938    glBegin(GL_POLYGON);
939    glNormal3fv(N043);
940    glVertex3fv(P043);
941    glNormal3fv(N036);
942    glVertex3fv(P036);
943    glNormal3fv(N051);
944    glVertex3fv(P051);
945    glEnd();
946    glBegin(GL_POLYGON);
947    glNormal3fv(N051);
948    glVertex3fv(P051);
949    glNormal3fv(N036);
950    glVertex3fv(P036);
951    glNormal3fv(N044);
952    glVertex3fv(P044);
953    glEnd();
954    glBegin(GL_POLYGON);
955    glNormal3fv(N041);
956    glVertex3fv(P041);
957    glNormal3fv(N042);
958    glVertex3fv(P042);
959    glNormal3fv(N050);
960    glVertex3fv(P050);
961    glEnd();
962    glBegin(GL_POLYGON);
963    glNormal3fv(N041);
964    glVertex3fv(P041);
965    glNormal3fv(N050);
966    glVertex3fv(P050);
967    glNormal3fv(N049);
968    glVertex3fv(P049);
969    glEnd();
970    glBegin(GL_POLYGON);
971    glNormal3fv(N036);
972    glVertex3fv(P036);
973    glNormal3fv(N037);
974    glVertex3fv(P037);
975    glNormal3fv(N044);
976    glVertex3fv(P044);
977    glEnd();
978    glBegin(GL_POLYGON);
979    glNormal3fv(N044);
980    glVertex3fv(P044);
981    glNormal3fv(N037);
982    glVertex3fv(P037);
983    glNormal3fv(N045);
984    glVertex3fv(P045);
985    glEnd();
986    glBegin(GL_POLYGON);
987    glNormal3fv(N040);
988    glVertex3fv(P040);
989    glNormal3fv(N041);
990    glVertex3fv(P041);
991    glNormal3fv(N049);
992    glVertex3fv(P049);
993    glEnd();
994    glBegin(GL_POLYGON);
995    glNormal3fv(N040);
996    glVertex3fv(P040);
997    glNormal3fv(N049);
998    glVertex3fv(P049);
999    glNormal3fv(N048);
1000    glVertex3fv(P048);
1001    glEnd();
1002    glBegin(GL_POLYGON);
1003    glNormal3fv(N039);
1004    glVertex3fv(P039);
1005    glNormal3fv(N040);
1006    glVertex3fv(P040);
1007    glNormal3fv(N048);
1008    glVertex3fv(P048);
1009    glEnd();
1010    glBegin(GL_POLYGON);
1011    glNormal3fv(N039);
1012    glVertex3fv(P039);
1013    glNormal3fv(N048);
1014    glVertex3fv(P048);
1015    glNormal3fv(N047);
1016    glVertex3fv(P047);
1017    glEnd();
1018    glBegin(GL_POLYGON);
1019    glNormal3fv(N037);
1020    glVertex3fv(P037);
1021    glNormal3fv(N038);
1022    glVertex3fv(P038);
1023    glNormal3fv(N045);
1024    glVertex3fv(P045);
1025    glEnd();
1026    glBegin(GL_POLYGON);
1027    glNormal3fv(N038);
1028    glVertex3fv(P038);
1029    glNormal3fv(N046);
1030    glVertex3fv(P046);
1031    glNormal3fv(N045);
1032    glVertex3fv(P045);
1033    glEnd();
1034    glBegin(GL_POLYGON);
1035    glNormal3fv(N038);
1036    glVertex3fv(P038);
1037    glNormal3fv(N039);
1038    glVertex3fv(P039);
1039    glNormal3fv(N047);
1040    glVertex3fv(P047);
1041    glNormal3fv(N046);
1042    glVertex3fv(P046);
1043    glEnd();
1044}
1045
1046void
1047Whale009(void)
1048{
1049    glBegin(GL_POLYGON);
1050    glNormal3fv(N050);
1051    glVertex3fv(P050);
1052    glNormal3fv(N051);
1053    glVertex3fv(P051);
1054    glNormal3fv(N059);
1055    glVertex3fv(P059);
1056    glNormal3fv(N058);
1057    glVertex3fv(P058);
1058    glEnd();
1059    glBegin(GL_POLYGON);
1060    glNormal3fv(N051);
1061    glVertex3fv(P051);
1062    glNormal3fv(N044);
1063    glVertex3fv(P044);
1064    glNormal3fv(N059);
1065    glVertex3fv(P059);
1066    glEnd();
1067    glBegin(GL_POLYGON);
1068    glNormal3fv(N059);
1069    glVertex3fv(P059);
1070    glNormal3fv(N044);
1071    glVertex3fv(P044);
1072    glNormal3fv(N052);
1073    glVertex3fv(P052);
1074    glEnd();
1075    glBegin(GL_POLYGON);
1076    glNormal3fv(N044);
1077    glVertex3fv(P044);
1078    glNormal3fv(N045);
1079    glVertex3fv(P045);
1080    glNormal3fv(N053);
1081    glVertex3fv(P053);
1082    glEnd();
1083    glBegin(GL_POLYGON);
1084    glNormal3fv(N044);
1085    glVertex3fv(P044);
1086    glNormal3fv(N053);
1087    glVertex3fv(P053);
1088    glNormal3fv(N052);
1089    glVertex3fv(P052);
1090    glEnd();
1091    glBegin(GL_POLYGON);
1092    glNormal3fv(N049);
1093    glVertex3fv(P049);
1094    glNormal3fv(N050);
1095    glVertex3fv(P050);
1096    glNormal3fv(N058);
1097    glVertex3fv(P058);
1098    glEnd();
1099    glBegin(GL_POLYGON);
1100    glNormal3fv(N049);
1101    glVertex3fv(P049);
1102    glNormal3fv(N058);
1103    glVertex3fv(P058);
1104    glNormal3fv(N057);
1105    glVertex3fv(P057);
1106    glEnd();
1107    glBegin(GL_POLYGON);
1108    glNormal3fv(N048);
1109    glVertex3fv(P048);
1110    glNormal3fv(N049);
1111    glVertex3fv(P049);
1112    glNormal3fv(N057);
1113    glVertex3fv(P057);
1114    glEnd();
1115    glBegin(GL_POLYGON);
1116    glNormal3fv(N048);
1117    glVertex3fv(P048);
1118    glNormal3fv(N057);
1119    glVertex3fv(P057);
1120    glNormal3fv(N056);
1121    glVertex3fv(P056);
1122    glEnd();
1123    glBegin(GL_POLYGON);
1124    glNormal3fv(N047);
1125    glVertex3fv(P047);
1126    glNormal3fv(N048);
1127    glVertex3fv(P048);
1128    glNormal3fv(N056);
1129    glVertex3fv(P056);
1130    glEnd();
1131    glBegin(GL_POLYGON);
1132    glNormal3fv(N047);
1133    glVertex3fv(P047);
1134    glNormal3fv(N056);
1135    glVertex3fv(P056);
1136    glNormal3fv(N055);
1137    glVertex3fv(P055);
1138    glEnd();
1139    glBegin(GL_POLYGON);
1140    glNormal3fv(N045);
1141    glVertex3fv(P045);
1142    glNormal3fv(N046);
1143    glVertex3fv(P046);
1144    glNormal3fv(N053);
1145    glVertex3fv(P053);
1146    glEnd();
1147    glBegin(GL_POLYGON);
1148    glNormal3fv(N046);
1149    glVertex3fv(P046);
1150    glNormal3fv(N054);
1151    glVertex3fv(P054);
1152    glNormal3fv(N053);
1153    glVertex3fv(P053);
1154    glEnd();
1155    glBegin(GL_POLYGON);
1156    glNormal3fv(N046);
1157    glVertex3fv(P046);
1158    glNormal3fv(N047);
1159    glVertex3fv(P047);
1160    glNormal3fv(N055);
1161    glVertex3fv(P055);
1162    glNormal3fv(N054);
1163    glVertex3fv(P054);
1164    glEnd();
1165}
1166
1167void
1168Whale010(void)
1169{
1170    glBegin(GL_POLYGON);
1171    glNormal3fv(N080);
1172    glVertex3fv(P080);
1173    glNormal3fv(N081);
1174    glVertex3fv(P081);
1175    glNormal3fv(N085);
1176    glVertex3fv(P085);
1177    glEnd();
1178    glBegin(GL_POLYGON);
1179    glNormal3fv(N081);
1180    glVertex3fv(P081);
1181    glNormal3fv(N083);
1182    glVertex3fv(P083);
1183    glNormal3fv(N085);
1184    glVertex3fv(P085);
1185    glEnd();
1186    glBegin(GL_POLYGON);
1187    glNormal3fv(N085);
1188    glVertex3fv(P085);
1189    glNormal3fv(N083);
1190    glVertex3fv(P083);
1191    glNormal3fv(N077);
1192    glVertex3fv(P077);
1193    glEnd();
1194    glBegin(GL_POLYGON);
1195    glNormal3fv(N083);
1196    glVertex3fv(P083);
1197    glNormal3fv(N087);
1198    glVertex3fv(P087);
1199    glNormal3fv(N077);
1200    glVertex3fv(P077);
1201    glEnd();
1202    glBegin(GL_POLYGON);
1203    glNormal3fv(N077);
1204    glVertex3fv(P077);
1205    glNormal3fv(N087);
1206    glVertex3fv(P087);
1207    glNormal3fv(N090);
1208    glVertex3fv(P090);
1209    glEnd();
1210    glBegin(GL_POLYGON);
1211    glNormal3fv(N081);
1212    glVertex3fv(P081);
1213    glNormal3fv(N080);
1214    glVertex3fv(P080);
1215    glNormal3fv(N085);
1216    glVertex3fv(P085);
1217    glEnd();
1218    glBegin(GL_POLYGON);
1219    glNormal3fv(N083);
1220    glVertex3fv(P083);
1221    glNormal3fv(N081);
1222    glVertex3fv(P081);
1223    glNormal3fv(N085);
1224    glVertex3fv(P085);
1225    glEnd();
1226    glBegin(GL_POLYGON);
1227    glNormal3fv(N083);
1228    glVertex3fv(P083);
1229    glNormal3fv(N085);
1230    glVertex3fv(P085);
1231    glNormal3fv(N077);
1232    glVertex3fv(P077);
1233    glEnd();
1234    glBegin(GL_POLYGON);
1235    glNormal3fv(N087);
1236    glVertex3fv(P087);
1237    glNormal3fv(N083);
1238    glVertex3fv(P083);
1239    glNormal3fv(N077);
1240    glVertex3fv(P077);
1241    glEnd();
1242    glBegin(GL_POLYGON);
1243    glNormal3fv(N087);
1244    glVertex3fv(P087);
1245    glNormal3fv(N077);
1246    glVertex3fv(P077);
1247    glNormal3fv(N090);
1248    glVertex3fv(P090);
1249    glEnd();
1250}
1251
1252void
1253Whale011(void)
1254{
1255    glBegin(GL_POLYGON);
1256    glNormal3fv(N082);
1257    glVertex3fv(P082);
1258    glNormal3fv(N084);
1259    glVertex3fv(P084);
1260    glNormal3fv(N079);
1261    glVertex3fv(P079);
1262    glEnd();
1263    glBegin(GL_POLYGON);
1264    glNormal3fv(N084);
1265    glVertex3fv(P084);
1266    glNormal3fv(N086);
1267    glVertex3fv(P086);
1268    glNormal3fv(N079);
1269    glVertex3fv(P079);
1270    glEnd();
1271    glBegin(GL_POLYGON);
1272    glNormal3fv(N079);
1273    glVertex3fv(P079);
1274    glNormal3fv(N086);
1275    glVertex3fv(P086);
1276    glNormal3fv(N078);
1277    glVertex3fv(P078);
1278    glEnd();
1279    glBegin(GL_POLYGON);
1280    glNormal3fv(N086);
1281    glVertex3fv(P086);
1282    glNormal3fv(N088);
1283    glVertex3fv(P088);
1284    glNormal3fv(N078);
1285    glVertex3fv(P078);
1286    glEnd();
1287    glBegin(GL_POLYGON);
1288    glNormal3fv(N078);
1289    glVertex3fv(P078);
1290    glNormal3fv(N088);
1291    glVertex3fv(P088);
1292    glNormal3fv(N089);
1293    glVertex3fv(P089);
1294    glEnd();
1295    glBegin(GL_POLYGON);
1296    glNormal3fv(N088);
1297    glVertex3fv(P088);
1298    glNormal3fv(N086);
1299    glVertex3fv(P086);
1300    glNormal3fv(N089);
1301    glVertex3fv(P089);
1302    glEnd();
1303    glBegin(GL_POLYGON);
1304    glNormal3fv(N089);
1305    glVertex3fv(P089);
1306    glNormal3fv(N086);
1307    glVertex3fv(P086);
1308    glNormal3fv(N078);
1309    glVertex3fv(P078);
1310    glEnd();
1311    glBegin(GL_POLYGON);
1312    glNormal3fv(N086);
1313    glVertex3fv(P086);
1314    glNormal3fv(N084);
1315    glVertex3fv(P084);
1316    glNormal3fv(N078);
1317    glVertex3fv(P078);
1318    glEnd();
1319    glBegin(GL_POLYGON);
1320    glNormal3fv(N078);
1321    glVertex3fv(P078);
1322    glNormal3fv(N084);
1323    glVertex3fv(P084);
1324    glNormal3fv(N079);
1325    glVertex3fv(P079);
1326    glEnd();
1327    glBegin(GL_POLYGON);
1328    glNormal3fv(N084);
1329    glVertex3fv(P084);
1330    glNormal3fv(N082);
1331    glVertex3fv(P082);
1332    glNormal3fv(N079);
1333    glVertex3fv(P079);
1334    glEnd();
1335}
1336
1337void
1338Whale012(void)
1339{
1340    glBegin(GL_POLYGON);
1341    glNormal3fv(N058);
1342    glVertex3fv(P058);
1343    glNormal3fv(N059);
1344    glVertex3fv(P059);
1345    glNormal3fv(N067);
1346    glVertex3fv(P067);
1347    glNormal3fv(N066);
1348    glVertex3fv(P066);
1349    glEnd();
1350    glBegin(GL_POLYGON);
1351    glNormal3fv(N059);
1352    glVertex3fv(P059);
1353    glNormal3fv(N052);
1354    glVertex3fv(P052);
1355    glNormal3fv(N060);
1356    glVertex3fv(P060);
1357    glEnd();
1358    glBegin(GL_POLYGON);
1359    glNormal3fv(N059);
1360    glVertex3fv(P059);
1361    glNormal3fv(N060);
1362    glVertex3fv(P060);
1363    glNormal3fv(N067);
1364    glVertex3fv(P067);
1365    glEnd();
1366    glBegin(GL_POLYGON);
1367    glNormal3fv(N058);
1368    glVertex3fv(P058);
1369    glNormal3fv(N066);
1370    glVertex3fv(P066);
1371    glNormal3fv(N065);
1372    glVertex3fv(P065);
1373    glEnd();
1374    glBegin(GL_POLYGON);
1375    glNormal3fv(N058);
1376    glVertex3fv(P058);
1377    glNormal3fv(N065);
1378    glVertex3fv(P065);
1379    glNormal3fv(N057);
1380    glVertex3fv(P057);
1381    glEnd();
1382    glBegin(GL_POLYGON);
1383    glNormal3fv(N056);
1384    glVertex3fv(P056);
1385    glNormal3fv(N057);
1386    glVertex3fv(P057);
1387    glNormal3fv(N065);
1388    glVertex3fv(P065);
1389    glEnd();
1390    glBegin(GL_POLYGON);
1391    glNormal3fv(N056);
1392    glVertex3fv(P056);
1393    glNormal3fv(N065);
1394    glVertex3fv(P065);
1395    glNormal3fv(N006);
1396    glVertex3fv(P006);
1397    glEnd();
1398    glBegin(GL_POLYGON);
1399    glNormal3fv(N056);
1400    glVertex3fv(P056);
1401    glNormal3fv(N006);
1402    glVertex3fv(P006);
1403    glNormal3fv(N063);
1404    glVertex3fv(P063);
1405    glEnd();
1406    glBegin(GL_POLYGON);
1407    glNormal3fv(N056);
1408    glVertex3fv(P056);
1409    glNormal3fv(N063);
1410    glVertex3fv(P063);
1411    glNormal3fv(N055);
1412    glVertex3fv(P055);
1413    glEnd();
1414    glBegin(GL_POLYGON);
1415    glNormal3fv(N054);
1416    glVertex3fv(P054);
1417    glNormal3fv(N062);
1418    glVertex3fv(P062);
1419    glNormal3fv(N005);
1420    glVertex3fv(P005);
1421    glEnd();
1422    glBegin(GL_POLYGON);
1423    glNormal3fv(N054);
1424    glVertex3fv(P054);
1425    glNormal3fv(N005);
1426    glVertex3fv(P005);
1427    glNormal3fv(N053);
1428    glVertex3fv(P053);
1429    glEnd();
1430    glBegin(GL_POLYGON);
1431    glNormal3fv(N053);
1432    glVertex3fv(P053);
1433    glNormal3fv(N005);
1434    glVertex3fv(P005);
1435    glNormal3fv(N060);
1436    glVertex3fv(P060);
1437    glEnd();
1438    glBegin(GL_POLYGON);
1439    glNormal3fv(N053);
1440    glVertex3fv(P053);
1441    glNormal3fv(N060);
1442    glVertex3fv(P060);
1443    glNormal3fv(N052);
1444    glVertex3fv(P052);
1445    glEnd();
1446}
1447
1448void
1449Whale013(void)
1450{
1451    glBegin(GL_POLYGON);
1452    glNormal3fv(N066);
1453    glVertex3fv(P066);
1454    glNormal3fv(N067);
1455    glVertex3fv(P067);
1456    glNormal3fv(N096);
1457    glVertex3fv(P096);
1458    glNormal3fv(N097);
1459    glVertex3fv(P097);
1460    glEnd();
1461    glBegin(GL_POLYGON);
1462    glNormal3fv(N097);
1463    glVertex3fv(P097);
1464    glNormal3fv(N096);
1465    glVertex3fv(P096);
1466    glNormal3fv(N098);
1467    glVertex3fv(P098);
1468    glNormal3fv(N099);
1469    glVertex3fv(P099);
1470    glEnd();
1471    glBegin(GL_POLYGON);
1472    glNormal3fv(N065);
1473    glVertex3fv(P065);
1474    glNormal3fv(N066);
1475    glVertex3fv(P066);
1476    glNormal3fv(N097);
1477    glVertex3fv(P097);
1478    glEnd();
1479    glBegin(GL_POLYGON);
1480    glNormal3fv(N067);
1481    glVertex3fv(P067);
1482    glNormal3fv(N060);
1483    glVertex3fv(P060);
1484    glNormal3fv(N096);
1485    glVertex3fv(P096);
1486    glEnd();
1487    glBegin(GL_POLYGON);
1488    glNormal3fv(N060);
1489    glVertex3fv(P060);
1490    glNormal3fv(N005);
1491    glVertex3fv(P005);
1492    glNormal3fv(N096);
1493    glVertex3fv(P096);
1494    glEnd();
1495    glBegin(GL_POLYGON);
1496    glNormal3fv(N096);
1497    glVertex3fv(P096);
1498    glNormal3fv(N005);
1499    glVertex3fv(P005);
1500    glNormal3fv(N098);
1501    glVertex3fv(P098);
1502    glEnd();
1503    glBegin(GL_POLYGON);
1504    glNormal3fv(N006);
1505    glVertex3fv(P006);
1506    glNormal3fv(N065);
1507    glVertex3fv(P065);
1508    glNormal3fv(N097);
1509    glVertex3fv(P097);
1510    glEnd();
1511    glBegin(GL_POLYGON);
1512    glNormal3fv(N006);
1513    glVertex3fv(P006);
1514    glNormal3fv(N097);
1515    glVertex3fv(P097);
1516    glNormal3fv(N099);
1517    glVertex3fv(P099);
1518    glEnd();
1519    glBegin(GL_POLYGON);
1520    glVertex3fv(P005);
1521    glVertex3fv(P006);
1522    glVertex3fv(P099);
1523    glVertex3fv(P098);
1524    glEnd();
1525}
1526
1527void
1528Whale014(void)
1529{
1530    glBegin(GL_POLYGON);
1531    glNormal3fv(N062);
1532    glVertex3fv(P062);
1533    glNormal3fv(N004);
1534    glVertex3fv(P004);
1535    glNormal3fv(N005);
1536    glVertex3fv(P005);
1537    glEnd();
1538    glBegin(GL_POLYGON);
1539    glVertex3fv(P006);
1540    glVertex3fv(P005);
1541    glVertex3fv(P004);
1542    glVertex3fv(P008);
1543    glEnd();
1544    glBegin(GL_POLYGON);
1545    glNormal3fv(N063);
1546    glVertex3fv(P063);
1547    glNormal3fv(N006);
1548    glVertex3fv(P006);
1549    glNormal3fv(N002);
1550    glVertex3fv(P002);
1551    glEnd();
1552    glBegin(GL_POLYGON);
1553    glNormal3fv(N002);
1554    glVertex3fv(P002);
1555    glNormal3fv(N006);
1556    glVertex3fv(P006);
1557    glNormal3fv(N008);
1558    glVertex3fv(P008);
1559    glEnd();
1560    glBegin(GL_POLYGON);
1561    glNormal3fv(N002);
1562    glVertex3fv(P002);
1563    glNormal3fv(N008);
1564    glVertex3fv(P008);
1565    glNormal3fv(N004);
1566    glVertex3fv(P004);
1567    glEnd();
1568    glBegin(GL_POLYGON);
1569    glNormal3fv(N062);
1570    glVertex3fv(P062);
1571    glNormal3fv(N002);
1572    glVertex3fv(P002);
1573    glNormal3fv(N004);
1574    glVertex3fv(P004);
1575    glEnd();
1576}
1577
1578void
1579Whale015(void)
1580{
1581    glBegin(GL_POLYGON);
1582    glNormal3fv(N055);
1583    glVertex3fv(P055);
1584    glNormal3fv(N003);
1585    glVertex3fv(P003);
1586    glNormal3fv(N054);
1587    glVertex3fv(P054);
1588    glEnd();
1589    glBegin(GL_POLYGON);
1590    glNormal3fv(N003);
1591    glVertex3fv(P003);
1592    glNormal3fv(N055);
1593    glVertex3fv(P055);
1594    glNormal3fv(N063);
1595    glVertex3fv(P063);
1596    glEnd();
1597    glBegin(GL_POLYGON);
1598    glNormal3fv(N003);
1599    glVertex3fv(P003);
1600    glNormal3fv(N063);
1601    glVertex3fv(P063);
1602    glNormal3fv(N100);
1603    glVertex3fv(P100);
1604    glEnd();
1605    glBegin(GL_POLYGON);
1606    glNormal3fv(N003);
1607    glVertex3fv(P003);
1608    glNormal3fv(N100);
1609    glVertex3fv(P100);
1610    glNormal3fv(N054);
1611    glVertex3fv(P054);
1612    glEnd();
1613    glBegin(GL_POLYGON);
1614    glNormal3fv(N054);
1615    glVertex3fv(P054);
1616    glNormal3fv(N100);
1617    glVertex3fv(P100);
1618    glNormal3fv(N062);
1619    glVertex3fv(P062);
1620    glEnd();
1621    glBegin(GL_POLYGON);
1622    glNormal3fv(N100);
1623    glVertex3fv(P100);
1624    glNormal3fv(N063);
1625    glVertex3fv(P063);
1626    glNormal3fv(N002);
1627    glVertex3fv(P002);
1628    glEnd();
1629    glBegin(GL_POLYGON);
1630    glNormal3fv(N100);
1631    glVertex3fv(P100);
1632    glNormal3fv(N002);
1633    glVertex3fv(P002);
1634    glNormal3fv(N062);
1635    glVertex3fv(P062);
1636    glEnd();
1637}
1638
1639void
1640Whale016(void)
1641{
1642    glBegin(GL_POLYGON);
1643    glVertex3fv(P104);
1644    glVertex3fv(P105);
1645    glVertex3fv(P106);
1646    glEnd();
1647    glBegin(GL_POLYGON);
1648    glVertex3fv(P107);
1649    glVertex3fv(P108);
1650    glVertex3fv(P109);
1651    glEnd();
1652    glBegin(GL_POLYGON);
1653    glVertex3fv(P110);
1654    glVertex3fv(P111);
1655    glVertex3fv(P112);
1656    glVertex3fv(P113);
1657    glVertex3fv(P114);
1658    glVertex3fv(P115);
1659    glEnd();
1660    glBegin(GL_POLYGON);
1661    glVertex3fv(P116);
1662    glVertex3fv(P117);
1663    glVertex3fv(P118);
1664    glVertex3fv(P119);
1665    glVertex3fv(P120);
1666    glVertex3fv(P121);
1667    glEnd();
1668}
1669
1670void
1671DrawWhale(fishRec * fish)
1672{
1673    float seg0, seg1, seg2, seg3, seg4, seg5, seg6, seg7;
1674    float pitch, thrash, chomp;
1675
1676    fish->htail = (int) (fish->htail - (int) (5.0 * fish->v)) % 360;
1677
1678    thrash = 70.0 * fish->v;
1679
1680    seg0 = 1.5 * thrash * sin((fish->htail) * RRAD);
1681    seg1 = 2.5 * thrash * sin((fish->htail + 10.0) * RRAD);
1682    seg2 = 3.7 * thrash * sin((fish->htail + 15.0) * RRAD);
1683    seg3 = 4.8 * thrash * sin((fish->htail + 23.0) * RRAD);
1684    seg4 = 6.0 * thrash * sin((fish->htail + 28.0) * RRAD);
1685    seg5 = 6.5 * thrash * sin((fish->htail + 35.0) * RRAD);
1686    seg6 = 6.5 * thrash * sin((fish->htail + 40.0) * RRAD);
1687    seg7 = 6.5 * thrash * sin((fish->htail + 55.0) * RRAD);
1688
1689    pitch = fish->v * sin((fish->htail - 160.0) * RRAD);
1690
1691    chomp = 0.0;
1692    if (fish->v > 2.0) {
1693        chomp = -(fish->v - 2.0) * 200.0;
1694    }
1695    P012[1] = iP012[1] + seg5;
1696    P013[1] = iP013[1] + seg5;
1697    P014[1] = iP014[1] + seg5;
1698    P015[1] = iP015[1] + seg5;
1699    P016[1] = iP016[1] + seg5;
1700    P017[1] = iP017[1] + seg5;
1701    P018[1] = iP018[1] + seg5;
1702    P019[1] = iP019[1] + seg5;
1703
1704    P020[1] = iP020[1] + seg4;
1705    P021[1] = iP021[1] + seg4;
1706    P022[1] = iP022[1] + seg4;
1707    P023[1] = iP023[1] + seg4;
1708    P024[1] = iP024[1] + seg4;
1709    P025[1] = iP025[1] + seg4;
1710    P026[1] = iP026[1] + seg4;
1711    P027[1] = iP027[1] + seg4;
1712
1713    P028[1] = iP028[1] + seg2;
1714    P029[1] = iP029[1] + seg2;
1715    P030[1] = iP030[1] + seg2;
1716    P031[1] = iP031[1] + seg2;
1717    P032[1] = iP032[1] + seg2;
1718    P033[1] = iP033[1] + seg2;
1719    P034[1] = iP034[1] + seg2;
1720    P035[1] = iP035[1] + seg2;
1721
1722    P036[1] = iP036[1] + seg1;
1723    P037[1] = iP037[1] + seg1;
1724    P038[1] = iP038[1] + seg1;
1725    P039[1] = iP039[1] + seg1;
1726    P040[1] = iP040[1] + seg1;
1727    P041[1] = iP041[1] + seg1;
1728    P042[1] = iP042[1] + seg1;
1729    P043[1] = iP043[1] + seg1;
1730
1731    P044[1] = iP044[1] + seg0;
1732    P045[1] = iP045[1] + seg0;
1733    P046[1] = iP046[1] + seg0;
1734    P047[1] = iP047[1] + seg0;
1735    P048[1] = iP048[1] + seg0;
1736    P049[1] = iP049[1] + seg0;
1737    P050[1] = iP050[1] + seg0;
1738    P051[1] = iP051[1] + seg0;
1739
1740    P009[1] = iP009[1] + seg6;
1741    P010[1] = iP010[1] + seg6;
1742    P075[1] = iP075[1] + seg6;
1743    P076[1] = iP076[1] + seg6;
1744
1745    P001[1] = iP001[1] + seg7;
1746    P011[1] = iP011[1] + seg7;
1747    P068[1] = iP068[1] + seg7;
1748    P069[1] = iP069[1] + seg7;
1749    P070[1] = iP070[1] + seg7;
1750    P071[1] = iP071[1] + seg7;
1751    P072[1] = iP072[1] + seg7;
1752    P073[1] = iP073[1] + seg7;
1753    P074[1] = iP074[1] + seg7;
1754
1755    P091[1] = iP091[1] + seg3 * 1.1;
1756    P092[1] = iP092[1] + seg3;
1757    P093[1] = iP093[1] + seg3;
1758    P094[1] = iP094[1] + seg3;
1759    P095[1] = iP095[1] + seg3 * 0.9;
1760
1761    P099[1] = iP099[1] + chomp;
1762    P098[1] = iP098[1] + chomp;
1763    P097[1] = iP097[1] + chomp;
1764    P096[1] = iP096[1] + chomp;
1765
1766    glPushMatrix();
1767
1768    glRotatef(pitch, 1.0, 0.0, 0.0);
1769
1770    glTranslatef(0.0, 0.0, 8000.0);
1771
1772    glRotatef(180.0, 0.0, 1.0, 0.0);
1773
1774    glScalef(3.0, 3.0, 3.0);
1775
1776    glEnable(GL_CULL_FACE);
1777
1778    Whale001();
1779    Whale002();
1780    Whale003();
1781    Whale004();
1782    Whale005();
1783    Whale006();
1784    Whale007();
1785    Whale008();
1786    Whale009();
1787    Whale010();
1788    Whale011();
1789    Whale012();
1790    Whale013();
1791    Whale014();
1792    Whale015();
1793    Whale016();
1794
1795    glDisable(GL_CULL_FACE);
1796
1797    glPopMatrix();
1798}
1799