source: trunk/src/testing/app/atlantis-fbo/whale.c @ 4

Revision 4, 47.1 KB checked in by ajaworski, 13 years ago (diff)

Added modified SAGE sources

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