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