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.
88 static float N001[3] = {-0.005937 ,-0.101998 ,-0.994767};
89 static float N002[3] = {0.936780 ,-0.200803 ,0.286569};
90 static float N003[3] = {-0.233062 ,0.972058 ,0.028007};
92 static float N004[3] = {0.000000 ,1.000000 ,0.000000};
94 static float N005[3] = {0.898117 ,0.360171 ,0.252315};
95 static float N006[3] = {-0.915437 ,0.348456 ,0.201378};
96 static float N007[3] = {0.602263 ,-0.777527 ,0.180920};
97 static float N008[3] = {-0.906912 ,-0.412015 ,0.088061};
99 static float N009[3] = {-0.015623 ,0.999878 ,0.000000};
100 static float N010[3] = {0.000000 ,-0.992278 ,0.124035};
101 static float N011[3] = {0.000000 ,-0.936329 ,-0.351123};
103 static float N012[3] = {0.884408 ,-0.429417 ,-0.182821};
104 static float N013[3] = {0.921121 ,0.311084 ,-0.234016};
105 static float N014[3] = {0.382635 ,0.877882 ,-0.287948};
106 static float N015[3] = {-0.380046 ,0.888166 ,-0.258316};
107 static float N016[3] = {-0.891515 ,0.392238 ,-0.226607};
108 static float N017[3] = {-0.901419 ,-0.382002 ,-0.203763};
109 static float N018[3] = {-0.367225 ,-0.911091 ,-0.187243};
110 static float N019[3] = {0.339539 ,-0.924846 ,-0.171388};
111 static float N020[3] = {0.914706 ,-0.378617 ,-0.141290};
112 static float N021[3] = {0.950662 ,0.262713 ,-0.164994};
113 static float N022[3] = {0.546359 ,0.801460 ,-0.243218};
114 static float N023[3] = {-0.315796 ,0.917068 ,-0.243431};
115 static float N024[3] = {-0.825687 ,0.532277 ,-0.186875};
116 static float N025[3] = {-0.974763 ,-0.155232 ,-0.160435};
117 static float N026[3] = {-0.560596 ,-0.816658 ,-0.137119};
118 static float N027[3] = {0.380210 ,-0.910817 ,-0.160786};
119 static float N028[3] = {0.923772 ,-0.358322 ,-0.135093};
120 static float N029[3] = {0.951202 ,0.275053 ,-0.139859};
121 static float N030[3] = {0.686099 ,0.702548 ,-0.188932};
122 static float N031[3] = {-0.521865 ,0.826719 ,-0.210220};
123 static float N032[3] = {-0.923820 ,0.346739 ,-0.162258};
124 static float N033[3] = {-0.902095 ,-0.409995 ,-0.134646};
125 static float N034[3] = {-0.509115 ,-0.848498 ,-0.144404};
126 static float N035[3] = {0.456469 ,-0.880293 ,-0.129305};
127 static float N036[3] = {0.873401 ,-0.475489 ,-0.105266};
128 static float N037[3] = {0.970825 ,0.179861 ,-0.158584};
129 static float N038[3] = {0.675609 ,0.714187 ,-0.183004};
130 static float N039[3] = {-0.523574 ,0.830212 ,-0.191360};
131 static float N040[3] = {-0.958895 ,0.230808 ,-0.165071};
132 static float N041[3] = {-0.918285 ,-0.376803 ,-0.121542};
133 static float N042[3] = {-0.622467 ,-0.774167 ,-0.114888};
134 static float N043[3] = {0.404497 ,-0.908807 ,-0.102231};
135 static float N044[3] = {0.930538 ,-0.365155 ,-0.027588};
136 static float N045[3] = {0.921920 ,0.374157 ,-0.100345};
137 static float N046[3] = {0.507346 ,0.860739 ,0.041562};
138 static float N047[3] = {-0.394646 ,0.918815 ,-0.005730};
139 static float N048[3] = {-0.925411 ,0.373024 ,-0.066837};
140 static float N049[3] = {-0.945337 ,-0.322309 ,-0.049551};
141 static float N050[3] = {-0.660437 ,-0.750557 ,-0.022072};
142 static float N051[3] = {0.488835 ,-0.871950 ,-0.027261};
143 static float N052[3] = {0.902599 ,-0.421397 ,0.087969};
144 static float N053[3] = {0.938636 ,0.322606 ,0.122020};
145 static float N054[3] = {0.484605 ,0.871078 ,0.079878};
146 static float N055[3] = {-0.353607 ,0.931559 ,0.084619};
147 static float N056[3] = {-0.867759 ,0.478564 ,0.134054};
148 static float N057[3] = {-0.951583 ,-0.296030 ,0.082794};
149 static float N058[3] = {-0.672355 ,-0.730209 ,0.121384};
150 static float N059[3] = {0.528336 ,-0.842452 ,0.105525};
151 static float N060[3] = {0.786913 ,-0.564760 ,0.248627};
153 static float N061[3] = {0.000000 ,1.000000 ,0.000000};
155 static float N062[3] = {0.622098 ,0.765230 ,0.165584};
156 static float N063[3] = {-0.631711 ,0.767816 ,0.106773};
157 static float N064[3] = {-0.687886 ,0.606351 ,0.398938};
158 static float N065[3] = {-0.946327 ,-0.281623 ,0.158598};
159 static float N066[3] = {-0.509549 ,-0.860437 ,0.002776};
160 static float N067[3] = {0.462594 ,-0.876692 ,0.131977};
162 static float N068[3] = {0.000000 ,-0.992278 ,0.124035};
163 static float N069[3] = {0.000000 ,-0.970143 ,-0.242536};
164 static float N070[3] = {0.015502 ,0.992159 ,-0.124020};
166 static float N071[3] = {0.000000 ,1.000000 ,0.000000};
168 static float N072[3] = {0.000000 ,1.000000 ,0.000000};
169 static float N073[3] = {0.000000 ,1.000000 ,0.000000};
170 static float N074[3] = {0.000000 ,-1.000000 ,0.000000};
171 static float N075[3] = {-0.242536 ,0.000000 ,-0.970143};
172 static float N076[3] = {-0.010336 ,-0.992225 ,-0.124028};
174 static float N077[3] = {-0.880770 ,0.461448 ,0.106351};
175 static float N078[3] = {-0.880770 ,0.461448 ,0.106351};
176 static float N079[3] = {-0.880770 ,0.461448 ,0.106351};
177 static float N080[3] = {-0.880770 ,0.461448 ,0.106351};
178 static float N081[3] = {-0.571197 ,0.816173 ,0.087152};
179 static float N082[3] = {-0.880770 ,0.461448 ,0.106351};
180 static float N083[3] = {-0.571197 ,0.816173 ,0.087152};
181 static float N084[3] = {-0.571197 ,0.816173 ,0.087152};
182 static float N085[3] = {-0.880770 ,0.461448 ,0.106351};
183 static float N086[3] = {-0.571197 ,0.816173 ,0.087152};
184 static float N087[3] = {-0.880770 ,0.461448 ,0.106351};
185 static float N088[3] = {-0.880770 ,0.461448 ,0.106351};
186 static float N089[3] = {-0.880770 ,0.461448 ,0.106351};
187 static float N090[3] = {-0.880770 ,0.461448 ,0.106351};
188 static float N091[3] = {0.000000 ,1.000000 ,0.000000};
189 static float N092[3] = {0.000000 ,1.000000 ,0.000000};
190 static float N093[3] = {0.000000 ,1.000000 ,0.000000};
191 static float N094[3] = {1.000000 ,0.000000 ,0.000000};
192 static float N095[3] = {-1.000000 ,0.000000 ,0.000000};
194 static float N096[3] = {0.000000 ,1.000000 ,0.000000};
196 static float N097[3] = {-0.697296 ,0.702881 ,0.140491};
197 static float N098[3] = {0.918864 ,0.340821 ,0.198819};
198 static float N099[3] = {-0.932737 ,0.201195 ,0.299202};
199 static float N100[3] = {0.029517 ,0.981679 ,0.188244};
201 static float N101[3] = {0.000000 ,1.000000 ,0.000000};
203 static float N102[3] = {0.813521 ,-0.204936 ,0.544229};
205 static float N103[3] = {0.000000 ,1.000000 ,0.000000};
206 static float N104[3] = {0.000000 ,1.000000 ,0.000000};
207 static float N105[3] = {0.000000 ,1.000000 ,0.000000};
208 static float N106[3] = {0.000000 ,1.000000 ,0.000000};
209 static float N107[3] = {0.000000 ,1.000000 ,0.000000};
210 static float N108[3] = {0.000000 ,1.000000 ,0.000000};
211 static float N109[3] = {0.000000 ,1.000000 ,0.000000};
213 static float N110[3] = {-0.781480 ,-0.384779 ,0.491155};
214 static float N111[3] = {-0.722243 ,0.384927 ,0.574627};
215 static float N112[3] = {-0.752278 ,0.502679 ,0.425901};
216 static float N113[3] = {0.547257 ,0.367910 ,0.751766};
217 static float N114[3] = {0.725949 ,-0.232568 ,0.647233};
218 static float N115[3] = {-0.747182 ,-0.660786 ,0.071280};
219 static float N116[3] = {0.931519 ,0.200748 ,0.303270};
220 static float N117[3] = {-0.828928 ,0.313757 ,0.463071};
221 static float N118[3] = {0.902554 ,-0.370967 ,0.218587};
222 static float N119[3] = {-0.879257 ,-0.441851 ,0.177973};
223 static float N120[3] = {0.642327 ,0.611901 ,0.461512};
224 static float N121[3] = {0.964817 ,-0.202322 ,0.167910};
225 static float N122[3] = {0.000000 ,1.000000 ,0.000000};
227 static float N123[3] = {-0.980734 ,0.041447 ,0.190900};
228 static float N124[3] = {-0.980734 ,0.041447 ,0.190900};
229 static float N125[3] = {-0.980734 ,0.041447 ,0.190900};
230 static float N126[3] = {0.000000 ,1.000000 ,0.000000};
231 static float N127[3] = {0.000000 ,1.000000 ,0.000000};
232 static float N128[3] = {0.000000 ,1.000000 ,0.000000};
233 static float N129[3] = {0.963250 ,0.004839 ,0.268565};
234 static float N130[3] = {0.963250 ,0.004839 ,0.268565};
235 static float N131[3] = {0.963250 ,0.004839 ,0.268565};
236 static float N132[3] = {0.000000 ,1.000000 ,0.000000};
237 static float N133[3] = {0.000000 ,1.000000 ,0.000000};
238 static float N134[3] = {0.000000 ,1.000000 ,0.000000};
240 static float P001[3] = {5.68, -300.95, 1324.70};
241 static float P002[3] = {338.69, -219.63, 9677.03};
242 static float P003[3] = {12.18, 474.59, 9138.14};
244 static float P004[3] = {-7.49, -388.91, 10896.74};
246 static float P005[3] = {487.51, 198.05, 9350.78};
247 static float P006[3] = {-457.61, 68.74, 9427.85};
248 static float P007[3] = {156.52, -266.72, 10311.68};
249 static float P008[3] = {-185.56, -266.51, 10310.47};
250 static float P009[3] = {124.39, -261.46, 1942.34};
251 static float P010[3] = {-130.05, -261.46, 1946.03};
252 static float P011[3] = {141.07, -320.11, 1239.38};
253 static float P012[3] = {156.48, -360.12, 2073.41};
254 static float P013[3] = {162.00, -175.88, 2064.44};
255 static float P014[3] = {88.16, -87.72, 2064.02};
256 static float P015[3] = {-65.21, -96.13, 2064.02};
257 static float P016[3] = {-156.48, -180.96, 2064.44};
258 static float P017[3] = {-162.00, -368.93, 2082.39};
259 static float P018[3] = {-88.16, -439.22, 2082.39};
260 static float P019[3] = {65.21, -440.32, 2083.39};
261 static float P020[3] = {246.87, -356.02, 2576.95};
262 static float P021[3] = {253.17, -111.15, 2567.15};
263 static float P022[3] = {132.34, 51.41, 2559.84};
264 static float P023[3] = {-97.88, 40.44, 2567.15};
265 static float P024[3] = {-222.97, -117.49, 2567.15};
266 static float P025[3] = {-252.22, -371.53, 2569.92};
267 static float P026[3] = {-108.44, -518.19, 2586.75};
268 static float P027[3] = {97.88, -524.79, 2586.75};
269 static float P028[3] = {370.03, -421.19, 3419.70};
270 static float P029[3] = {351.15, -16.98, 3423.17};
271 static float P030[3] = {200.66, 248.46, 3430.37};
272 static float P031[3] = {-148.42, 235.02, 3417.91};
273 static float P032[3] = {-360.21, -30.27, 3416.84};
274 static float P033[3] = {-357.90, -414.89, 3407.04};
275 static float P034[3] = {-148.88, -631.35, 3409.90};
276 static float P035[3] = {156.38, -632.59, 3419.70};
277 static float P036[3] = {462.61, -469.21, 4431.51};
278 static float P037[3] = {466.60, 102.25, 4434.98};
279 static float P038[3] = {243.05, 474.34, 4562.02};
280 static float P039[3] = {-191.23, 474.40, 4554.42};
281 static float P040[3] = {-476.12, 111.05, 4451.11};
282 static float P041[3] = {-473.36, -470.74, 4444.78};
283 static float P042[3] = {-266.95, -748.41, 4447.78};
284 static float P043[3] = {211.14, -749.91, 4429.73};
285 static float P044[3] = {680.57, -370.27, 5943.46};
286 static float P045[3] = {834.01, 363.09, 6360.63};
287 static float P046[3] = {371.29, 804.51, 6486.26};
288 static float P047[3] = {-291.43, 797.22, 6494.28};
289 static float P048[3] = {-784.13, 370.75, 6378.01};
290 static float P049[3] = {-743.29, -325.82, 5943.46};
291 static float P050[3] = {-383.24, -804.77, 5943.46};
292 static float P051[3] = {283.47, -846.09, 5943.46};
293 static float iP001[3] = {5.68, -300.95, 1324.70};
295 static float iP002[3] = {338.69, -219.63, 9677.03};
296 static float iP003[3] = {12.18, 624.93, 8956.39};
297 static float iP004[3] = {-7.49, -388.91, 10896.74};
298 static float iP005[3] = {487.51, 198.05, 9350.78};
299 static float iP006[3] = {-457.61, 199.04, 9353.01};
300 static float iP007[3] = {156.52, -266.72, 10311.68};
301 static float iP008[3] = {-185.56, -266.51, 10310.47};
303 static float iP009[3] = {124.39, -261.46, 1942.34};
304 static float iP010[3] = {-130.05, -261.46, 1946.03};
305 static float iP011[3] = {141.07, -320.11, 1239.38};
306 static float iP012[3] = {156.48, -360.12, 2073.41};
307 static float iP013[3] = {162.00, -175.88, 2064.44};
308 static float iP014[3] = {88.16, -87.72, 2064.02};
309 static float iP015[3] = {-65.21, -96.13, 2064.02};
310 static float iP016[3] = {-156.48, -180.96, 2064.44};
311 static float iP017[3] = {-162.00, -368.93, 2082.39};
312 static float iP018[3] = {-88.16, -439.22, 2082.39};
313 static float iP019[3] = {65.21, -440.32, 2083.39};
314 static float iP020[3] = {246.87, -356.02, 2576.95};
315 static float iP021[3] = {253.17, -111.15, 2567.15};
316 static float iP022[3] = {132.34, 51.41, 2559.84};
317 static float iP023[3] = {-97.88, 40.44, 2567.15};
318 static float iP024[3] = {-222.97, -117.49, 2567.15};
319 static float iP025[3] = {-252.22, -371.53, 2569.92};
320 static float iP026[3] = {-108.44, -518.19, 2586.75};
321 static float iP027[3] = {97.88, -524.79, 2586.75};
322 static float iP028[3] = {370.03, -421.19, 3419.70};
323 static float iP029[3] = {351.15, -16.98, 3423.17};
324 static float iP030[3] = {200.66, 248.46, 3430.37};
325 static float iP031[3] = {-148.42, 235.02, 3417.91};
326 static float iP032[3] = {-360.21, -30.27, 3416.84};
327 static float iP033[3] = {-357.90, -414.89, 3407.04};
328 static float iP034[3] = {-148.88, -631.35, 3409.90};
329 static float iP035[3] = {156.38, -632.59, 3419.70};
330 static float iP036[3] = {462.61, -469.21, 4431.51};
331 static float iP037[3] = {466.60, 102.25, 4434.98};
332 static float iP038[3] = {243.05, 474.34, 4562.02};
333 static float iP039[3] = {-191.23, 474.40, 4554.42};
334 static float iP040[3] = {-476.12, 111.05, 4451.11};
335 static float iP041[3] = {-473.36, -470.74, 4444.78};
336 static float iP042[3] = {-266.95, -748.41, 4447.78};
337 static float iP043[3] = {211.14, -749.91, 4429.73};
338 static float iP044[3] = {680.57, -370.27, 5943.46};
339 static float iP045[3] = {834.01, 363.09, 6360.63};
340 static float iP046[3] = {371.29, 804.51, 6486.26};
341 static float iP047[3] = {-291.43, 797.22, 6494.28};
342 static float iP048[3] = {-784.13, 370.75, 6378.01};
343 static float iP049[3] = {-743.29, -325.82, 5943.46};
344 static float iP050[3] = {-383.24, -804.77, 5943.46};
345 static float iP051[3] = {283.47, -846.09, 5943.46};
346 static float P052[3] = {599.09, -300.15, 7894.03};
347 static float P053[3] = {735.48, 306.26, 7911.92};
348 static float P054[3] = {246.22, 558.53, 8460.50};
349 static float P055[3] = {-230.41, 559.84, 8473.23};
350 static float P056[3] = {-698.66, 320.83, 7902.59};
351 static float P057[3] = {-643.29, -299.16, 7902.59};
352 static float P058[3] = {-341.47, -719.30, 7902.59};
353 static float P059[3] = {252.57, -756.12, 7902.59};
354 static float P060[3] = {458.39, -265.31, 9355.44};
356 static float P061[3] = {433.38, -161.90, 9503.03};
358 static float P062[3] = {224.04, 338.75, 9450.30};
359 static float P063[3] = {-165.71, 341.04, 9462.35};
360 static float P064[3] = {-298.11, 110.13, 10180.37};
361 static float P065[3] = {-473.99, -219.71, 9355.44};
362 static float P066[3] = {-211.97, -479.87, 9355.44};
363 static float P067[3] = {192.86, -491.45, 9348.73};
364 static float P068[3] = {-136.29, -319.84, 1228.73};
365 static float P069[3] = {1111.17, -314.14, 1314.19};
366 static float P070[3] = {-1167.34, -321.61, 1319.45};
367 static float P071[3] = {1404.86, -306.66, 1235.45};
368 static float P072[3] = {-1409.73, -314.14, 1247.66};
369 static float P073[3] = {1254.01, -296.87, 1544.58};
370 static float P074[3] = {-1262.09, -291.70, 1504.26};
371 static float P075[3] = {965.71, -269.26, 1742.65};
372 static float P076[3] = {-900.97, -276.74, 1726.07};
373 static float iP068[3] = {-136.29, -319.84, 1228.73};
374 static float iP069[3] = {1111.17, -314.14, 1314.19};
375 static float iP070[3] = {-1167.34, -321.61, 1319.45};
376 static float iP071[3] = {1404.86, -306.66, 1235.45};
377 static float iP072[3] = {-1409.73, -314.14, 1247.66};
378 static float iP073[3] = {1254.01, -296.87, 1544.58};
379 static float iP074[3] = {-1262.09, -291.70, 1504.26};
380 static float iP075[3] = {965.71, -269.26, 1742.65};
381 static float iP076[3] = {-900.97, -276.74, 1726.07};
382 static float P077[3] = {1058.00, -448.81, 8194.66};
383 static float P078[3] = {-1016.51, -456.43, 8190.62};
384 static float P079[3] = {-1515.96, -676.45, 7754.93};
385 static float P080[3] = {1856.75, -830.34, 7296.56};
386 static float P081[3] = {1472.16, -497.38, 7399.68};
387 static float P082[3] = {-1775.26, -829.51, 7298.46};
388 static float P083[3] = {911.09, -252.51, 7510.99};
389 static float P084[3] = {-1451.94, -495.62, 7384.30};
390 static float P085[3] = {1598.75, -669.26, 7769.90};
391 static float P086[3] = {-836.53, -250.08, 7463.25};
392 static float P087[3] = {722.87, -158.18, 8006.41};
393 static float P088[3] = {-688.86, -162.28, 7993.89};
394 static float P089[3] = {-626.92, -185.30, 8364.98};
395 static float P090[3] = {647.72, -189.46, 8354.99};
396 static float P091[3] = {0.00, 835.01, 5555.62};
397 static float P092[3] = {0.00, 1350.18, 5220.86};
398 static float P093[3] = {0.00, 1422.94, 5285.27};
399 static float P094[3] = {0.00, 1296.75, 5650.19};
400 static float P095[3] = {0.00, 795.63, 6493.88};
401 static float iP091[3] = {0.00, 835.01, 5555.62};
402 static float iP092[3] = {0.00, 1350.18, 5220.86};
403 static float iP093[3] = {0.00, 1422.94, 5285.27};
404 static float iP094[3] = {0.00, 1296.75, 5650.19};
405 static float iP095[3] = {0.00, 795.63, 6493.88};
407 static float P096[3] = {-447.38, -165.99, 9499.60};
409 static float P097[3] = {-194.91, -357.14, 10313.32};
410 static float P098[3] = {135.35, -357.66, 10307.94};
411 static float iP097[3] = {-194.91, -357.14, 10313.32};
412 static float iP098[3] = {135.35, -357.66, 10307.94};
413 static float P099[3] = {-380.53, -221.14, 9677.98};
414 static float P100[3] = {0.00, 412.99, 9629.33};
416 static float P101[3] = {5.70, 567.00, 7862.98};
418 static float P102[3] = {59.51, -412.55, 10677.58};
419 static float iP102[3] = {59.51, -412.55, 10677.58};
420 static float P103[3] = {6.50, 484.74, 9009.94};
422 static float P104[3] = {-9.86, 567.62, 7858.65};
424 static float P105[3] = {-41.86, 476.51, 9078.17};
426 static float P106[3] = {22.75, 568.13, 7782.83};
427 static float P107[3] = {58.93, 568.42, 7775.94};
429 static float P108[3] = {49.20, 476.83, 9078.24};
431 static float P109[3] = {99.21, 566.00, 7858.65};
433 static float P110[3] = {-187.62, -410.04, 10674.12};
434 static float iP110[3] = {-187.62, -410.04, 10674.12};
435 static float P111[3] = {-184.25, -318.70, 10723.88};
436 static float iP111[3] = {-184.25, -318.70, 10723.88};
437 static float P112[3] = {-179.61, -142.81, 10670.26};
438 static float P113[3] = {57.43, -147.94, 10675.26};
439 static float P114[3] = {54.06, -218.90, 10712.44};
440 static float P115[3] = {-186.35, -212.09, 10713.76};
441 static float P116[3] = {205.90, -84.61, 10275.97};
442 static float P117[3] = {-230.96, -83.26, 10280.09};
443 static float iP118[3] = {216.78, -509.17, 10098.94};
444 static float iP119[3] = {-313.21, -510.79, 10102.62};
445 static float P118[3] = {216.78, -509.17, 10098.94};
446 static float P119[3] = {-313.21, -510.79, 10102.62};
447 static float P120[3] = {217.95, 96.34, 10161.62};
448 static float P121[3] = {71.99, -319.74, 10717.70};
449 static float iP121[3] = {71.99, -319.74, 10717.70};
450 static float P122[3] = {0.00, 602.74, 5375.84};
451 static float iP122[3] = {0.00, 602.74, 5375.84};
452 static float P123[3] = {-448.94, -203.14, 9499.60};
453 static float P124[3] = {-442.64, -185.20, 9528.07};
454 static float P125[3] = {-441.07, -148.05, 9528.07};
455 static float P126[3] = {-443.43, -128.84, 9499.60};
456 static float P127[3] = {-456.87, -146.78, 9466.67};
457 static float P128[3] = {-453.68, -183.93, 9466.67};
458 static float P129[3] = {428.43, -124.08, 9503.03};
459 static float P130[3] = {419.73, -142.14, 9534.56};
460 static float P131[3] = {419.92, -179.96, 9534.56};
461 static float P132[3] = {431.20, -199.73, 9505.26};
462 static float P133[3] = {442.28, -181.67, 9475.96};
463 static float P134[3] = {442.08, -143.84, 9475.96};
469 Dolphin001(GLenum cap)
526 Dolphin002(GLenum cap)
583 Dolphin003(GLenum cap)
652 Dolphin004(GLenum cap)
737 Dolphin005(GLenum cap)
858 Dolphin006(GLenum cap)
915 Dolphin007(GLenum cap)
1036 Dolphin008(GLenum cap)
1157 Dolphin009(GLenum cap)
1278 Dolphin010(GLenum cap)
1363 Dolphin011(GLenum cap)
1448 Dolphin012(GLenum cap)
1553 Dolphin013(GLenum cap)
1638 Dolphin014(GLenum cap)
1765 Dolphin015(GLenum cap)
1908 Dolphin016(GLenum cap)
1911 glDisable(GL_DEPTH_TEST);
1933 glEnable(GL_DEPTH_TEST);
1937 DrawDolphin(fishRec * fish, int wire)
1939 float seg0, seg1, seg2, seg3, seg4, seg5, seg6, seg7;
1940 float pitch, thrash, chomp;
1943 fish->htail = (int) (fish->htail - (int) (10.0 * fish->v)) % 360;
1945 thrash = 70.0 * fish->v;
1947 seg0 = 1.0 * thrash * sin((fish->htail) * RRAD);
1948 seg3 = 1.0 * thrash * sin((fish->htail) * RRAD);
1949 seg1 = 2.0 * thrash * sin((fish->htail + 4.0) * RRAD);
1950 seg2 = 3.0 * thrash * sin((fish->htail + 6.0) * RRAD);
1951 seg4 = 4.0 * thrash * sin((fish->htail + 10.0) * RRAD);
1952 seg5 = 4.5 * thrash * sin((fish->htail + 15.0) * RRAD);
1953 seg6 = 5.0 * thrash * sin((fish->htail + 20.0) * RRAD);
1954 seg7 = 6.0 * thrash * sin((fish->htail + 30.0) * RRAD);
1956 pitch = fish->v * sin((fish->htail + 180.0) * RRAD);
1958 if (fish->v > 2.0) {
1959 chomp = -(fish->v - 2.0) * 200.0;
1963 P012[1] = iP012[1] + seg5;
1964 P013[1] = iP013[1] + seg5;
1965 P014[1] = iP014[1] + seg5;
1966 P015[1] = iP015[1] + seg5;
1967 P016[1] = iP016[1] + seg5;
1968 P017[1] = iP017[1] + seg5;
1969 P018[1] = iP018[1] + seg5;
1970 P019[1] = iP019[1] + seg5;
1972 P020[1] = iP020[1] + seg4;
1973 P021[1] = iP021[1] + seg4;
1974 P022[1] = iP022[1] + seg4;
1975 P023[1] = iP023[1] + seg4;
1976 P024[1] = iP024[1] + seg4;
1977 P025[1] = iP025[1] + seg4;
1978 P026[1] = iP026[1] + seg4;
1979 P027[1] = iP027[1] + seg4;
1981 P028[1] = iP028[1] + seg2;
1982 P029[1] = iP029[1] + seg2;
1983 P030[1] = iP030[1] + seg2;
1984 P031[1] = iP031[1] + seg2;
1985 P032[1] = iP032[1] + seg2;
1986 P033[1] = iP033[1] + seg2;
1987 P034[1] = iP034[1] + seg2;
1988 P035[1] = iP035[1] + seg2;
1990 P036[1] = iP036[1] + seg1;
1991 P037[1] = iP037[1] + seg1;
1992 P038[1] = iP038[1] + seg1;
1993 P039[1] = iP039[1] + seg1;
1994 P040[1] = iP040[1] + seg1;
1995 P041[1] = iP041[1] + seg1;
1996 P042[1] = iP042[1] + seg1;
1997 P043[1] = iP043[1] + seg1;
1999 P044[1] = iP044[1] + seg0;
2000 P045[1] = iP045[1] + seg0;
2001 P046[1] = iP046[1] + seg0;
2002 P047[1] = iP047[1] + seg0;
2003 P048[1] = iP048[1] + seg0;
2004 P049[1] = iP049[1] + seg0;
2005 P050[1] = iP050[1] + seg0;
2006 P051[1] = iP051[1] + seg0;
2008 P009[1] = iP009[1] + seg6;
2009 P010[1] = iP010[1] + seg6;
2010 P075[1] = iP075[1] + seg6;
2011 P076[1] = iP076[1] + seg6;
2013 P001[1] = iP001[1] + seg7;
2014 P011[1] = iP011[1] + seg7;
2015 P068[1] = iP068[1] + seg7;
2016 P069[1] = iP069[1] + seg7;
2017 P070[1] = iP070[1] + seg7;
2018 P071[1] = iP071[1] + seg7;
2019 P072[1] = iP072[1] + seg7;
2020 P073[1] = iP073[1] + seg7;
2021 P074[1] = iP074[1] + seg7;
2023 P091[1] = iP091[1] + seg3;
2024 P092[1] = iP092[1] + seg3;
2025 P093[1] = iP093[1] + seg3;
2026 P094[1] = iP094[1] + seg3;
2027 P095[1] = iP095[1] + seg3;
2028 P122[1] = iP122[1] + seg3 * 1.5;
2030 P097[1] = iP097[1] + chomp;
2031 P098[1] = iP098[1] + chomp;
2032 P102[1] = iP102[1] + chomp;
2033 P110[1] = iP110[1] + chomp;
2034 P111[1] = iP111[1] + chomp;
2035 P121[1] = iP121[1] + chomp;
2036 P118[1] = iP118[1] + chomp;
2037 P119[1] = iP119[1] + chomp;
2041 glRotatef(pitch, 1.0, 0.0, 0.0);
2043 glTranslatef(0.0, 0.0, 7000.0);
2045 glRotatef(180.0, 0.0, 1.0, 0.0);
2047 glEnable(GL_CULL_FACE);
2048 cap = wire ? GL_LINE_LOOP : GL_POLYGON;
2065 glDisable(GL_CULL_FACE);