1 /* atlantis --- Shows moving 3D sea animals */
4 static const char sccsid[] = "@(#)dolphin.c 1.2 98/06/16 xlockmore";
7 /* Copyright (c) E. Lassauge, 1998. */
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.
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.
22 * The original code for this mode was written by Mark J. Kilgard
23 * as a demo for openGL programming.
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.
29 * Thanks goes also to Brian Paul for making it possible and inexpensive
30 * to use OpenGL at home.
32 * My e-mail address is lassauge@sagem.fr
34 * Eric Lassauge (May-13-1998)
39 * (c) Copyright 1993, 1994, Silicon Graphics, Inc.
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.
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.
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.
72 * OpenGL(TM) is a trademark of Silicon Graphics, Inc.
80 static const float N001[3] = {-0.005937, -0.101998, -0.994767};
81 static const float N002[3] = {0.93678, -0.200803, 0.286569};
82 static const float N003[3] = {-0.233062, 0.972058, 0.028007};
84 static const float N004[3] = {0, 1, 0};
86 static const float N005[3] = {0.898117, 0.360171, 0.252315};
87 static const float N006[3] = {-0.915437, 0.348456, 0.201378};
88 static const float N007[3] = {0.602263, -0.777527, 0.18092};
89 static const float N008[3] = {-0.906912, -0.412015, 0.088061};
91 static const float N009[3] = {-0.015623, 0.999878, 0};
92 static const float N010[3] = {0, -0.992278, 0.124035};
93 static const float N011[3] = {0, -0.936329, -0.351123};
95 static const float N012[3] = {0.884408, -0.429417, -0.182821};
96 static const float N013[3] = {0.921121, 0.311084, -0.234016};
97 static const float N014[3] = {0.382635, 0.877882, -0.287948};
98 static const float N015[3] = {-0.380046, 0.888166, -0.258316};
99 static const float N016[3] = {-0.891515, 0.392238, -0.226607};
100 static const float N017[3] = {-0.901419, -0.382002, -0.203763};
101 static const float N018[3] = {-0.367225, -0.911091, -0.187243};
102 static const float N019[3] = {0.339539, -0.924846, -0.171388};
103 static const float N020[3] = {0.914706, -0.378617, -0.14129};
104 static const float N021[3] = {0.950662, 0.262713, -0.164994};
105 static const float N022[3] = {0.546359, 0.80146, -0.243218};
106 static const float N023[3] = {-0.315796, 0.917068, -0.243431};
107 static const float N024[3] = {-0.825687, 0.532277, -0.186875};
108 static const float N025[3] = {-0.974763, -0.155232, -0.160435};
109 static const float N026[3] = {-0.560596, -0.816658, -0.137119};
110 static const float N027[3] = {0.38021, -0.910817, -0.160786};
111 static const float N028[3] = {0.923772, -0.358322, -0.135093};
112 static const float N029[3] = {0.951202, 0.275053, -0.139859};
113 static const float N030[3] = {0.686099, 0.702548, -0.188932};
114 static const float N031[3] = {-0.521865, 0.826719, -0.21022};
115 static const float N032[3] = {-0.92382, 0.346739, -0.162258};
116 static const float N033[3] = {-0.902095, -0.409995, -0.134646};
117 static const float N034[3] = {-0.509115, -0.848498, -0.144404};
118 static const float N035[3] = {0.456469, -0.880293, -0.129305};
119 static const float N036[3] = {0.873401, -0.475489, -0.105266};
120 static const float N037[3] = {0.970825, 0.179861, -0.158584};
121 static const float N038[3] = {0.675609, 0.714187, -0.183004};
122 static const float N039[3] = {-0.523574, 0.830212, -0.19136};
123 static const float N040[3] = {-0.958895, 0.230808, -0.165071};
124 static const float N041[3] = {-0.918285, -0.376803, -0.121542};
125 static const float N042[3] = {-0.622467, -0.774167, -0.114888};
126 static const float N043[3] = {0.404497, -0.908807, -0.102231};
127 static const float N044[3] = {0.930538, -0.365155, -0.027588};
128 static const float N045[3] = {0.92192, 0.374157, -0.100345};
129 static const float N046[3] = {0.507346, 0.860739, 0.041562};
130 static const float N047[3] = {-0.394646, 0.918815, -0.00573};
131 static const float N048[3] = {-0.925411, 0.373024, -0.066837};
132 static const float N049[3] = {-0.945337, -0.322309, -0.049551};
133 static const float N050[3] = {-0.660437, -0.750557, -0.022072};
134 static const float N051[3] = {0.488835, -0.87195, -0.027261};
135 static const float N052[3] = {0.902599, -0.421397, 0.087969};
136 static const float N053[3] = {0.938636, 0.322606, 0.12202};
137 static const float N054[3] = {0.484605, 0.871078, 0.079878};
138 static const float N055[3] = {-0.353607, 0.931559, 0.084619};
139 static const float N056[3] = {-0.867759, 0.478564, 0.134054};
140 static const float N057[3] = {-0.951583, -0.29603, 0.082794};
141 static const float N058[3] = {-0.672355, -0.730209, 0.121384};
142 static const float N059[3] = {0.528336, -0.842452, 0.105525};
143 static const float N060[3] = {0.786913, -0.56476, 0.248627};
145 static const float N061[3] = {0, 1, 0};
147 static const float N062[3] = {0.622098, 0.76523, 0.165584};
148 static const float N063[3] = {-0.631711, 0.767816, 0.106773};
149 static const float N064[3] = {-0.687886, 0.606351, 0.398938};
150 static const float N065[3] = {-0.946327, -0.281623, 0.158598};
151 static const float N066[3] = {-0.509549, -0.860437, 0.002776};
152 static const float N067[3] = {0.462594, -0.876692, 0.131977};
154 static const float N068[3] = {0, -0.992278, 0.124035};
155 static const float N069[3] = {0, -0.970143, -0.242536};
156 static const float N070[3] = {0.015502, 0.992159, -0.12402};
158 static const float N071[3] = {0, 1, 0};
160 static const float N072[3] = {0, 1, 0};
161 static const float N073[3] = {0, 1, 0};
162 static const float N074[3] = {0, -1, 0};
163 static const float N075[3] = {-0.242536, 0, -0.970143};
164 static const float N076[3] = {-0.010336, -0.992225, -0.124028};
166 static const float N077[3] = {-0.88077, 0.461448, 0.106351};
167 static const float N078[3] = {-0.88077, 0.461448, 0.106351};
168 static const float N079[3] = {-0.88077, 0.461448, 0.106351};
169 static const float N080[3] = {-0.88077, 0.461448, 0.106351};
170 static const float N081[3] = {-0.571197, 0.816173, 0.087152};
171 static const float N082[3] = {-0.88077, 0.461448, 0.106351};
172 static const float N083[3] = {-0.571197, 0.816173, 0.087152};
173 static const float N084[3] = {-0.571197, 0.816173, 0.087152};
174 static const float N085[3] = {-0.88077, 0.461448, 0.106351};
175 static const float N086[3] = {-0.571197, 0.816173, 0.087152};
176 static const float N087[3] = {-0.88077, 0.461448, 0.106351};
177 static const float N088[3] = {-0.88077, 0.461448, 0.106351};
178 static const float N089[3] = {-0.88077, 0.461448, 0.106351};
179 static const float N090[3] = {-0.88077, 0.461448, 0.106351};
180 static const float N091[3] = {0, 1, 0};
181 static const float N092[3] = {0, 1, 0};
182 static const float N093[3] = {0, 1, 0};
183 static const float N094[3] = {1, 0, 0};
184 static const float N095[3] = {-1, 0, 0};
186 static const float N096[3] = {0, 1, 0};
188 static const float N097[3] = {-0.697296, 0.702881, 0.140491};
189 static const float N098[3] = {0.918864, 0.340821, 0.198819};
190 static const float N099[3] = {-0.932737, 0.201195, 0.299202};
191 static const float N100[3] = {0.029517, 0.981679, 0.188244};
193 static const float N101[3] = {0, 1, 0};
195 static const float N102[3] = {0.813521, -0.204936, 0.544229};
197 static const float N103[3] = {0, 1, 0};
198 static const float N104[3] = {0, 1, 0};
199 static const float N105[3] = {0, 1, 0};
200 static const float N106[3] = {0, 1, 0};
201 static const float N107[3] = {0, 1, 0};
202 static const float N108[3] = {0, 1, 0};
203 static const float N109[3] = {0, 1, 0};
205 static const float N110[3] = {-0.78148, -0.384779, 0.491155};
206 static const float N111[3] = {-0.722243, 0.384927, 0.574627};
207 static const float N112[3] = {-0.752278, 0.502679, 0.425901};
208 static const float N113[3] = {0.547257, 0.36791, 0.751766};
209 static const float N114[3] = {0.725949, -0.232568, 0.647233};
210 static const float N115[3] = {-0.747182, -0.660786, 0.07128};
211 static const float N116[3] = {0.931519, 0.200748, 0.30327};
212 static const float N117[3] = {-0.828928, 0.313757, 0.463071};
213 static const float N118[3] = {0.902554, -0.370967, 0.218587};
214 static const float N119[3] = {-0.879257, -0.441851, 0.177973};
215 static const float N120[3] = {0.642327, 0.611901, 0.461512};
216 static const float N121[3] = {0.964817, -0.202322, 0.16791};
217 static const float N122[3] = {0, 1, 0};
219 static const float N123[3] = {-0.980734, 0.041447, 0.1909};
220 static const float N124[3] = {-0.980734, 0.041447, 0.1909};
221 static const float N125[3] = {-0.980734, 0.041447, 0.1909};
222 static const float N126[3] = {0, 1, 0};
223 static const float N127[3] = {0, 1, 0};
224 static const float N128[3] = {0, 1, 0};
225 static const float N129[3] = {0.96325, 0.004839, 0.268565};
226 static const float N130[3] = {0.96325, 0.004839, 0.268565};
227 static const float N131[3] = {0.96325, 0.004839, 0.268565};
228 static const float N132[3] = {0, 1, 0};
229 static const float N133[3] = {0, 1, 0};
230 static const float N134[3] = {0, 1, 0};
232 static float P001[3] = {5.68, -300.95, 1324.7};
233 static const float P002[3] = {338.69, -219.63, 9677.03};
234 static const float P003[3] = {12.18, 474.59, 9138.14};
236 static const float P004[3] = {-7.49, -388.91, 10896.74};
238 static const float P005[3] = {487.51, 198.05, 9350.78};
239 static const float P006[3] = {-457.61, 68.74, 9427.85};
240 static const float P007[3] = {156.52, -266.72, 10311.68};
241 static const float P008[3] = {-185.56, -266.51, 10310.47};
242 static float P009[3] = {124.39, -261.46, 1942.34};
243 static float P010[3] = {-130.05, -261.46, 1946.03};
244 static float P011[3] = {141.07, -320.11, 1239.38};
245 static float P012[3] = {156.48, -360.12, 2073.41};
246 static float P013[3] = {162, -175.88, 2064.44};
247 static float P014[3] = {88.16, -87.72, 2064.02};
248 static float P015[3] = {-65.21, -96.13, 2064.02};
249 static float P016[3] = {-156.48, -180.96, 2064.44};
250 static float P017[3] = {-162, -368.93, 2082.39};
251 static float P018[3] = {-88.16, -439.22, 2082.39};
252 static float P019[3] = {65.21, -440.32, 2083.39};
253 static float P020[3] = {246.87, -356.02, 2576.95};
254 static float P021[3] = {253.17, -111.15, 2567.15};
255 static float P022[3] = {132.34, 51.41, 2559.84};
256 static float P023[3] = {-97.88, 40.44, 2567.15};
257 static float P024[3] = {-222.97, -117.49, 2567.15};
258 static float P025[3] = {-252.22, -371.53, 2569.92};
259 static float P026[3] = {-108.44, -518.19, 2586.75};
260 static float P027[3] = {97.88, -524.79, 2586.75};
261 static float P028[3] = {370.03, -421.19, 3419.7};
262 static float P029[3] = {351.15, -16.98, 3423.17};
263 static float P030[3] = {200.66, 248.46, 3430.37};
264 static float P031[3] = {-148.42, 235.02, 3417.91};
265 static float P032[3] = {-360.21, -30.27, 3416.84};
266 static float P033[3] = {-357.9, -414.89, 3407.04};
267 static float P034[3] = {-148.88, -631.35, 3409.9};
268 static float P035[3] = {156.38, -632.59, 3419.7};
269 static float P036[3] = {462.61, -469.21, 4431.51};
270 static float P037[3] = {466.6, 102.25, 4434.98};
271 static float P038[3] = {243.05, 474.34, 4562.02};
272 static float P039[3] = {-191.23, 474.4, 4554.42};
273 static float P040[3] = {-476.12, 111.05, 4451.11};
274 static float P041[3] = {-473.36, -470.74, 4444.78};
275 static float P042[3] = {-266.95, -748.41, 4447.78};
276 static float P043[3] = {211.14, -749.91, 4429.73};
277 static float P044[3] = {680.57, -370.27, 5943.46};
278 static float P045[3] = {834.01, 363.09, 6360.63};
279 static float P046[3] = {371.29, 804.51, 6486.26};
280 static float P047[3] = {-291.43, 797.22, 6494.28};
281 static float P048[3] = {-784.13, 370.75, 6378.01};
282 static float P049[3] = {-743.29, -325.82, 5943.46};
283 static float P050[3] = {-383.24, -804.77, 5943.46};
284 static float P051[3] = {283.47, -846.09, 5943.46};
285 static const float iP001[3] = {5.68, -300.95, 1324.7};
287 static const float iP002[3] = {338.69, -219.63, 9677.03};
288 static const float iP003[3] = {12.18, 624.93, 8956.39};
289 static const float iP004[3] = {-7.49, -388.91, 10896.74};
290 static const float iP005[3] = {487.51, 198.05, 9350.78};
291 static const float iP006[3] = {-457.61, 199.04, 9353.01};
292 static const float iP007[3] = {156.52, -266.72, 10311.68};
293 static const float iP008[3] = {-185.56, -266.51, 10310.47};
295 static const float iP009[3] = {124.39, -261.46, 1942.34};
296 static const float iP010[3] = {-130.05, -261.46, 1946.03};
297 static const float iP011[3] = {141.07, -320.11, 1239.38};
298 static const float iP012[3] = {156.48, -360.12, 2073.41};
299 static const float iP013[3] = {162, -175.88, 2064.44};
300 static const float iP014[3] = {88.16, -87.72, 2064.02};
301 static const float iP015[3] = {-65.21, -96.13, 2064.02};
302 static const float iP016[3] = {-156.48, -180.96, 2064.44};
303 static const float iP017[3] = {-162, -368.93, 2082.39};
304 static const float iP018[3] = {-88.16, -439.22, 2082.39};
305 static const float iP019[3] = {65.21, -440.32, 2083.39};
306 static const float iP020[3] = {246.87, -356.02, 2576.95};
307 static const float iP021[3] = {253.17, -111.15, 2567.15};
308 static const float iP022[3] = {132.34, 51.41, 2559.84};
309 static const float iP023[3] = {-97.88, 40.44, 2567.15};
310 static const float iP024[3] = {-222.97, -117.49, 2567.15};
311 static const float iP025[3] = {-252.22, -371.53, 2569.92};
312 static const float iP026[3] = {-108.44, -518.19, 2586.75};
313 static const float iP027[3] = {97.88, -524.79, 2586.75};
314 static const float iP028[3] = {370.03, -421.19, 3419.7};
315 static const float iP029[3] = {351.15, -16.98, 3423.17};
316 static const float iP030[3] = {200.66, 248.46, 3430.37};
317 static const float iP031[3] = {-148.42, 235.02, 3417.91};
318 static const float iP032[3] = {-360.21, -30.27, 3416.84};
319 static const float iP033[3] = {-357.9, -414.89, 3407.04};
320 static const float iP034[3] = {-148.88, -631.35, 3409.9};
321 static const float iP035[3] = {156.38, -632.59, 3419.7};
322 static const float iP036[3] = {462.61, -469.21, 4431.51};
323 static const float iP037[3] = {466.6, 102.25, 4434.98};
324 static const float iP038[3] = {243.05, 474.34, 4562.02};
325 static const float iP039[3] = {-191.23, 474.4, 4554.42};
326 static const float iP040[3] = {-476.12, 111.05, 4451.11};
327 static const float iP041[3] = {-473.36, -470.74, 4444.78};
328 static const float iP042[3] = {-266.95, -748.41, 4447.78};
329 static const float iP043[3] = {211.14, -749.91, 4429.73};
330 static const float iP044[3] = {680.57, -370.27, 5943.46};
331 static const float iP045[3] = {834.01, 363.09, 6360.63};
332 static const float iP046[3] = {371.29, 804.51, 6486.26};
333 static const float iP047[3] = {-291.43, 797.22, 6494.28};
334 static const float iP048[3] = {-784.13, 370.75, 6378.01};
335 static const float iP049[3] = {-743.29, -325.82, 5943.46};
336 static const float iP050[3] = {-383.24, -804.77, 5943.46};
337 static const float iP051[3] = {283.47, -846.09, 5943.46};
338 static const float P052[3] = {599.09, -300.15, 7894.03};
339 static const float P053[3] = {735.48, 306.26, 7911.92};
340 static const float P054[3] = {246.22, 558.53, 8460.5};
341 static const float P055[3] = {-230.41, 559.84, 8473.23};
342 static const float P056[3] = {-698.66, 320.83, 7902.59};
343 static const float P057[3] = {-643.29, -299.16, 7902.59};
344 static const float P058[3] = {-341.47, -719.3, 7902.59};
345 static const float P059[3] = {252.57, -756.12, 7902.59};
346 static const float P060[3] = {458.39, -265.31, 9355.44};
348 static const float P061[3] = {433.38, -161.9, 9503.03};
350 static const float P062[3] = {224.04, 338.75, 9450.3};
351 static const float P063[3] = {-165.71, 341.04, 9462.35};
352 static const float P064[3] = {-298.11, 110.13, 10180.37};
353 static const float P065[3] = {-473.99, -219.71, 9355.44};
354 static const float P066[3] = {-211.97, -479.87, 9355.44};
355 static const float P067[3] = {192.86, -491.45, 9348.73};
356 static float P068[3] = {-136.29, -319.84, 1228.73};
357 static float P069[3] = {1111.17, -314.14, 1314.19};
358 static float P070[3] = {-1167.34, -321.61, 1319.45};
359 static float P071[3] = {1404.86, -306.66, 1235.45};
360 static float P072[3] = {-1409.73, -314.14, 1247.66};
361 static float P073[3] = {1254.01, -296.87, 1544.58};
362 static float P074[3] = {-1262.09, -291.7, 1504.26};
363 static float P075[3] = {965.71, -269.26, 1742.65};
364 static float P076[3] = {-900.97, -276.74, 1726.07};
365 static const float iP068[3] = {-136.29, -319.84, 1228.73};
366 static const float iP069[3] = {1111.17, -314.14, 1314.19};
367 static const float iP070[3] = {-1167.34, -321.61, 1319.45};
368 static const float iP071[3] = {1404.86, -306.66, 1235.45};
369 static const float iP072[3] = {-1409.73, -314.14, 1247.66};
370 static const float iP073[3] = {1254.01, -296.87, 1544.58};
371 static const float iP074[3] = {-1262.09, -291.7, 1504.26};
372 static const float iP075[3] = {965.71, -269.26, 1742.65};
373 static const float iP076[3] = {-900.97, -276.74, 1726.07};
374 static const float P077[3] = {1058, -448.81, 8194.66};
375 static const float P078[3] = {-1016.51, -456.43, 8190.62};
376 static const float P079[3] = {-1515.96, -676.45, 7754.93};
377 static const float P080[3] = {1856.75, -830.34, 7296.56};
378 static const float P081[3] = {1472.16, -497.38, 7399.68};
379 static const float P082[3] = {-1775.26, -829.51, 7298.46};
380 static const float P083[3] = {911.09, -252.51, 7510.99};
381 static const float P084[3] = {-1451.94, -495.62, 7384.3};
382 static const float P085[3] = {1598.75, -669.26, 7769.9};
383 static const float P086[3] = {-836.53, -250.08, 7463.25};
384 static const float P087[3] = {722.87, -158.18, 8006.41};
385 static const float P088[3] = {-688.86, -162.28, 7993.89};
386 static const float P089[3] = {-626.92, -185.3, 8364.98};
387 static const float P090[3] = {647.72, -189.46, 8354.99};
388 static float P091[3] = {0, 835.01, 5555.62};
389 static float P092[3] = {0, 1350.18, 5220.86};
390 static float P093[3] = {0, 1422.94, 5285.27};
391 static float P094[3] = {0, 1296.75, 5650.19};
392 static float P095[3] = {0, 795.63, 6493.88};
393 static const float iP091[3] = {0, 835.01, 5555.62};
394 static const float iP092[3] = {0, 1350.18, 5220.86};
395 static const float iP093[3] = {0, 1422.94, 5285.27};
396 static const float iP094[3] = {0, 1296.75, 5650.19};
397 static const float iP095[3] = {0, 795.63, 6493.88};
399 static const float P096[3] = {-447.38, -165.99, 9499.6};
401 static float P097[3] = {-194.91, -357.14, 10313.32};
402 static float P098[3] = {135.35, -357.66, 10307.94};
403 static const float iP097[3] = {-194.91, -357.14, 10313.32};
404 static const float iP098[3] = {135.35, -357.66, 10307.94};
405 static const float P099[3] = {-380.53, -221.14, 9677.98};
406 static const float P100[3] = {0, 412.99, 9629.33};
408 static const float P101[3] = {5.7, 567, 7862.98};
410 static float P102[3] = {59.51, -412.55, 10677.58};
411 static const float iP102[3] = {59.51, -412.55, 10677.58};
412 static const float P103[3] = {6.5, 484.74, 9009.94};
414 static const float P104[3] = {-9.86, 567.62, 7858.65};
416 static const float P105[3] = {-41.86, 476.51, 9078.17};
418 static const float P106[3] = {22.75, 568.13, 7782.83};
419 static const float P107[3] = {58.93, 568.42, 7775.94};
421 static const float P108[3] = {49.2, 476.83, 9078.24};
423 static const float P109[3] = {99.21, 566, 7858.65};
425 static float P110[3] = {-187.62, -410.04, 10674.12};
426 static const float iP110[3] = {-187.62, -410.04, 10674.12};
427 static float P111[3] = {-184.25, -318.7, 10723.88};
428 static const float iP111[3] = {-184.25, -318.7, 10723.88};
429 static const float P112[3] = {-179.61, -142.81, 10670.26};
430 static const float P113[3] = {57.43, -147.94, 10675.26};
431 static const float P114[3] = {54.06, -218.9, 10712.44};
432 static const float P115[3] = {-186.35, -212.09, 10713.76};
433 static const float P116[3] = {205.9, -84.61, 10275.97};
434 static const float P117[3] = {-230.96, -83.26, 10280.09};
435 static const float iP118[3] = {216.78, -509.17, 10098.94};
436 static const float iP119[3] = {-313.21, -510.79, 10102.62};
437 static float P118[3] = {216.78, -509.17, 10098.94};
438 static float P119[3] = {-313.21, -510.79, 10102.62};
439 static const float P120[3] = {217.95, 96.34, 10161.62};
440 static float P121[3] = {71.99, -319.74, 10717.7};
441 static const float iP121[3] = {71.99, -319.74, 10717.7};
442 static float P122[3] = {0, 602.74, 5375.84};
443 static const float iP122[3] = {0, 602.74, 5375.84};
444 static const float P123[3] = {-448.94, -203.14, 9499.6};
445 static const float P124[3] = {-442.64, -185.2, 9528.07};
446 static const float P125[3] = {-441.07, -148.05, 9528.07};
447 static const float P126[3] = {-443.43, -128.84, 9499.6};
448 static const float P127[3] = {-456.87, -146.78, 9466.67};
449 static const float P128[3] = {-453.68, -183.93, 9466.67};
450 static const float P129[3] = {428.43, -124.08, 9503.03};
451 static const float P130[3] = {419.73, -142.14, 9534.56};
452 static const float P131[3] = {419.92, -179.96, 9534.56};
453 static const float P132[3] = {431.2, -199.73, 9505.26};
454 static const float P133[3] = {442.28, -181.67, 9475.96};
455 static const float P134[3] = {442.08, -143.84, 9475.96};
461 Dolphin001(GLenum cap)
518 Dolphin002(GLenum cap)
575 Dolphin003(GLenum cap)
644 Dolphin004(GLenum cap)
729 Dolphin005(GLenum cap)
850 Dolphin006(GLenum cap)
907 Dolphin007(GLenum cap)
1028 Dolphin008(GLenum cap)
1149 Dolphin009(GLenum cap)
1270 Dolphin010(GLenum cap)
1355 Dolphin011(GLenum cap)
1440 Dolphin012(GLenum cap)
1545 Dolphin013(GLenum cap)
1630 Dolphin014(GLenum cap)
1757 Dolphin015(GLenum cap)
1900 Dolphin016(GLenum cap)
1903 glDisable(GL_DEPTH_TEST);
1925 glEnable(GL_DEPTH_TEST);
1929 DrawDolphin(fishRec * fish, int wire)
1931 float seg0, seg1, seg2, seg3, seg4, seg5, seg6, seg7;
1932 float pitch, thrash, chomp;
1935 fish->htail = (int) (fish->htail - (int) (10 * fish->v)) % 360;
1937 thrash = 70 * fish->v;
1939 seg0 = 1 * thrash * sin((fish->htail) * RRAD);
1940 seg3 = 1 * thrash * sin((fish->htail) * RRAD);
1941 seg1 = 2 * thrash * sin((fish->htail + 4) * RRAD);
1942 seg2 = 3 * thrash * sin((fish->htail + 6) * RRAD);
1943 seg4 = 4 * thrash * sin((fish->htail + 10) * RRAD);
1944 seg5 = 4.5 * thrash * sin((fish->htail + 15) * RRAD);
1945 seg6 = 5 * thrash * sin((fish->htail + 20) * RRAD);
1946 seg7 = 6 * thrash * sin((fish->htail + 30) * RRAD);
1948 pitch = fish->v * sin((fish->htail + 180) * RRAD);
1951 chomp = -(fish->v - 2) * 200;
1955 P012[1] = iP012[1] + seg5;
1956 P013[1] = iP013[1] + seg5;
1957 P014[1] = iP014[1] + seg5;
1958 P015[1] = iP015[1] + seg5;
1959 P016[1] = iP016[1] + seg5;
1960 P017[1] = iP017[1] + seg5;
1961 P018[1] = iP018[1] + seg5;
1962 P019[1] = iP019[1] + seg5;
1964 P020[1] = iP020[1] + seg4;
1965 P021[1] = iP021[1] + seg4;
1966 P022[1] = iP022[1] + seg4;
1967 P023[1] = iP023[1] + seg4;
1968 P024[1] = iP024[1] + seg4;
1969 P025[1] = iP025[1] + seg4;
1970 P026[1] = iP026[1] + seg4;
1971 P027[1] = iP027[1] + seg4;
1973 P028[1] = iP028[1] + seg2;
1974 P029[1] = iP029[1] + seg2;
1975 P030[1] = iP030[1] + seg2;
1976 P031[1] = iP031[1] + seg2;
1977 P032[1] = iP032[1] + seg2;
1978 P033[1] = iP033[1] + seg2;
1979 P034[1] = iP034[1] + seg2;
1980 P035[1] = iP035[1] + seg2;
1982 P036[1] = iP036[1] + seg1;
1983 P037[1] = iP037[1] + seg1;
1984 P038[1] = iP038[1] + seg1;
1985 P039[1] = iP039[1] + seg1;
1986 P040[1] = iP040[1] + seg1;
1987 P041[1] = iP041[1] + seg1;
1988 P042[1] = iP042[1] + seg1;
1989 P043[1] = iP043[1] + seg1;
1991 P044[1] = iP044[1] + seg0;
1992 P045[1] = iP045[1] + seg0;
1993 P046[1] = iP046[1] + seg0;
1994 P047[1] = iP047[1] + seg0;
1995 P048[1] = iP048[1] + seg0;
1996 P049[1] = iP049[1] + seg0;
1997 P050[1] = iP050[1] + seg0;
1998 P051[1] = iP051[1] + seg0;
2000 P009[1] = iP009[1] + seg6;
2001 P010[1] = iP010[1] + seg6;
2002 P075[1] = iP075[1] + seg6;
2003 P076[1] = iP076[1] + seg6;
2005 P001[1] = iP001[1] + seg7;
2006 P011[1] = iP011[1] + seg7;
2007 P068[1] = iP068[1] + seg7;
2008 P069[1] = iP069[1] + seg7;
2009 P070[1] = iP070[1] + seg7;
2010 P071[1] = iP071[1] + seg7;
2011 P072[1] = iP072[1] + seg7;
2012 P073[1] = iP073[1] + seg7;
2013 P074[1] = iP074[1] + seg7;
2015 P091[1] = iP091[1] + seg3;
2016 P092[1] = iP092[1] + seg3;
2017 P093[1] = iP093[1] + seg3;
2018 P094[1] = iP094[1] + seg3;
2019 P095[1] = iP095[1] + seg3;
2020 P122[1] = iP122[1] + seg3 * 1.5;
2022 P097[1] = iP097[1] + chomp;
2023 P098[1] = iP098[1] + chomp;
2024 P102[1] = iP102[1] + chomp;
2025 P110[1] = iP110[1] + chomp;
2026 P111[1] = iP111[1] + chomp;
2027 P121[1] = iP121[1] + chomp;
2028 P118[1] = iP118[1] + chomp;
2029 P119[1] = iP119[1] + chomp;
2033 glRotatef(pitch, 1, 0, 0);
2035 glTranslatef(0, 0, 7000);
2037 glRotatef(180, 0, 1, 0);
2039 glEnable(GL_CULL_FACE);
2040 cap = wire ? GL_LINE_LOOP : GL_POLYGON;
2057 glDisable(GL_CULL_FACE);