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