http://slackware.bholcomb.com/slackware/slackware-11.0/source/xap/xscreensaver/xscree...
[xscreensaver] / hacks / glx / shark.c
1 /* atlantis --- Shows moving 3D sea animals */
2
3 #if 0
4 static const char sccsid[] = "@(#)shark.c       1.2 98/06/16 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 #if 0
81 static const float N001[3] = {0.000000 ,1.000000 ,0.000000};
82 #endif
83 static const float N002[3] = {0.000077 ,-0.020611 ,0.999788};
84 static const float N003[3] = {0.961425 ,0.258729 ,-0.093390};
85 static const float N004[3] = {0.510811 ,-0.769633 ,-0.383063};
86 static const float N005[3] = {0.400123 ,0.855734 ,-0.328055};
87 static const float N006[3] = {-0.770715 ,0.610204 ,-0.183440};
88 static const float N007[3] = {-0.915597 ,-0.373345 ,-0.149316};
89 static const float N008[3] = {-0.972788 ,0.208921 ,-0.100179};
90 static const float N009[3] = {-0.939713 ,-0.312268 ,-0.139383};
91 static const float N010[3] = {-0.624138 ,-0.741047 ,-0.247589};
92 static const float N011[3] = {0.591434 ,-0.768401 ,-0.244471};
93 static const float N012[3] = {0.935152 ,-0.328495 ,-0.132598};
94 static const float N013[3] = {0.997102 ,0.074243 ,-0.016593};
95 static const float N014[3] = {0.969995 ,0.241712 ,-0.026186};
96 static const float N015[3] = {0.844539 ,0.502628 ,-0.184714};
97 static const float N016[3] = {-0.906608 ,0.386308 ,-0.169787};
98 static const float N017[3] = {-0.970016 ,0.241698 ,-0.025516};
99 static const float N018[3] = {-0.998652 ,0.050493 ,-0.012045};
100 static const float N019[3] = {-0.942685 ,-0.333051 ,-0.020556};
101 static const float N020[3] = {-0.660944 ,-0.750276 ,0.015480};
102 static const float N021[3] = {0.503549 ,-0.862908 ,-0.042749};
103 static const float N022[3] = {0.953202 ,-0.302092 ,-0.012089};
104 static const float N023[3] = {0.998738 ,0.023574 ,0.044344};
105 static const float N024[3] = {0.979297 ,0.193272 ,0.060202};
106 static const float N025[3] = {0.798300 ,0.464885 ,0.382883};
107 static const float N026[3] = {-0.756590 ,0.452403 ,0.472126};
108 static const float N027[3] = {-0.953855 ,0.293003 ,0.065651};
109 static const float N028[3] = {-0.998033 ,0.040292 ,0.048028};
110 static const float N029[3] = {-0.977079 ,-0.204288 ,0.059858};
111 static const float N030[3] = {-0.729117 ,-0.675304 ,0.111140};
112 static const float N031[3] = {0.598361 ,-0.792753 ,0.116221};
113 static const float N032[3] = {0.965192 ,-0.252991 ,0.066332};
114 static const float N033[3] = {0.998201 ,-0.002790 ,0.059892};
115 static const float N034[3] = {0.978657 ,0.193135 ,0.070207};
116 static const float N035[3] = {0.718815 ,0.680392 ,0.142733};
117 static const float N036[3] = {-0.383096 ,0.906212 ,0.178936};
118 static const float N037[3] = {-0.952831 ,0.292590 ,0.080647};
119 static const float N038[3] = {-0.997680 ,0.032417 ,0.059861};
120 static const float N039[3] = {-0.982629 ,-0.169881 ,0.074700};
121 static const float N040[3] = {-0.695424 ,-0.703466 ,0.146700};
122 static const float N041[3] = {0.359323 ,-0.915531 ,0.180805};
123 static const float N042[3] = {0.943356 ,-0.319387 ,0.089842};
124 static const float N043[3] = {0.998272 ,-0.032435 ,0.048993};
125 static const float N044[3] = {0.978997 ,0.193205 ,0.065084};
126 static const float N045[3] = {0.872144 ,0.470094 ,-0.135565};
127 static const float N046[3] = {-0.664282 ,0.737945 ,-0.119027};
128 static const float N047[3] = {-0.954508 ,0.288570 ,0.075107};
129 static const float N048[3] = {-0.998273 ,0.032406 ,0.048993};
130 static const float N049[3] = {-0.979908 ,-0.193579 ,0.048038};
131 static const float N050[3] = {-0.858736 ,-0.507202 ,-0.072938};
132 static const float N051[3] = {0.643545 ,-0.763887 ,-0.048237};
133 static const float N052[3] = {0.955580 ,-0.288954 ,0.058068};
134 #if 0
135 static const float N053[3] = {0.000000 ,1.000000 ,0.000000};
136 static const float N054[3] = {0.000000 ,1.000000 ,0.000000};
137 static const float N055[3] = {0.000000 ,1.000000 ,0.000000};
138 static const float N056[3] = {0.000000 ,1.000000 ,0.000000};
139 static const float N057[3] = {0.000000 ,1.000000 ,0.000000};
140 #endif
141 static const float N058[3] = {0.000050 ,0.793007 ,-0.609213};
142 static const float N059[3] = {0.913510 ,0.235418 ,-0.331779};
143 static const float N060[3] = {-0.807970 ,0.495000 ,-0.319625};
144 static const float N061[3] = {0.000000 ,0.784687 ,-0.619892};
145 static const float N062[3] = {0.000000 ,-1.000000 ,0.000000};
146 static const float N063[3] = {0.000000 ,1.000000 ,0.000000};
147 static const float N064[3] = {0.000000 ,1.000000 ,0.000000};
148 static const float N065[3] = {0.000000 ,1.000000 ,0.000000};
149 static const float N066[3] = {-0.055784 ,0.257059 ,0.964784};
150 #if 0
151 static const float N067[3] = {0.000000 ,1.000000 ,0.000000};
152 static const float N068[3] = {0.000000 ,1.000000 ,0.000000};
153 #endif
154 static const float N069[3] = {-0.000505 ,-0.929775 ,-0.368127};
155 static const float N070[3] = {0.000000 ,1.000000 ,0.000000};
156 #if 0
157 static const float N071[3] = {-0.987102 ,0.131723 ,-0.090984};
158 static const float N072[3] = {-0.987102 ,0.131723 ,-0.090984};
159 static const float N073[3] = {-0.987102 ,0.131723 ,-0.090984};
160 static const float N074[3] = {0.000000 ,1.000000 ,0.000000};
161 static const float N075[3] = {0.000000 ,1.000000 ,0.000000};
162 static const float N076[3] = {0.000000 ,1.000000 ,0.000000};
163 static const float N077[3] = {0.995210 ,0.071962 ,-0.066168};
164 static const float N078[3] = {0.995210 ,0.071962 ,-0.066168};
165 static const float N079[3] = {0.995210 ,0.071962 ,-0.066168};
166 static const float N080[3] = {0.000000 ,1.000000 ,0.000000};
167 static const float N081[3] = {0.000000 ,1.000000 ,0.000000};
168 static const float N082[3] = {0.000000 ,1.000000 ,0.000000};
169 static const float P001[3] = {0.00, 0.00, 0.00};
170 #endif
171 static       float P002[3] = {0.00, -36.59, 5687.72};
172 static const float P003[3] = {90.00, 114.73, 724.38};
173 static       float P004[3] = {58.24, -146.84, 262.35};
174 static const float P005[3] = {27.81, 231.52, 510.43};
175 static const float P006[3] = {-27.81, 230.43, 509.76};
176 static       float P007[3] = {-46.09, -146.83, 265.84};
177 static const float P008[3] = {-90.00, 103.84, 718.53};
178 static const float P009[3] = {-131.10, -165.92, 834.85};
179 static       float P010[3] = {-27.81, -285.31, 500.00};
180 static       float P011[3] = {27.81, -285.32, 500.00};
181 static const float P012[3] = {147.96, -170.89, 845.50};
182 static const float P013[3] = {180.00, 0.00, 2000.00};
183 static const float P014[3] = {145.62, 352.67, 2000.00};
184 static const float P015[3] = {55.62, 570.63, 2000.00};
185 static const float P016[3] = {-55.62, 570.64, 2000.00};
186 static const float P017[3] = {-145.62, 352.68, 2000.00};
187 static const float P018[3] = {-180.00, 0.01, 2000.00};
188 static const float P019[3] = {-178.20, -352.66, 2001.61};
189 static const float P020[3] = {-55.63, -570.63, 2000.00};
190 static const float P021[3] = {55.62, -570.64, 2000.00};
191 static const float P022[3] = {179.91, -352.69, 1998.39};
192 static       float P023[3] = {150.00, 0.00, 3000.00};
193 static       float P024[3] = {121.35, 293.89, 3000.00};
194 static       float P025[3] = {46.35, 502.93, 2883.09};
195 static       float P026[3] = {-46.35, 497.45, 2877.24};
196 static       float P027[3] = {-121.35, 293.90, 3000.00};
197 static       float P028[3] = {-150.00, 0.00, 3000.00};
198 static       float P029[3] = {-152.21, -304.84, 2858.68};
199 static       float P030[3] = {-46.36, -475.52, 3000.00};
200 static       float P031[3] = {46.35, -475.53, 3000.00};
201 static       float P032[3] = {155.64, -304.87, 2863.50};
202 static       float P033[3] = {90.00, 0.00, 4000.00};
203 static       float P034[3] = {72.81, 176.33, 4000.00};
204 static       float P035[3] = {27.81, 285.32, 4000.00};
205 static       float P036[3] = {-27.81, 285.32, 4000.00};
206 static       float P037[3] = {-72.81, 176.34, 4000.00};
207 static       float P038[3] = {-90.00, 0.00, 4000.00};
208 static       float P039[3] = {-72.81, -176.33, 4000.00};
209 static       float P040[3] = {-27.81, -285.31, 4000.00};
210 static       float P041[3] = {27.81, -285.32, 4000.00};
211 static       float P042[3] = {72.81, -176.34, 4000.00};
212 static       float P043[3] = {30.00, 0.00, 5000.00};
213 static       float P044[3] = {24.27, 58.78, 5000.00};
214 static       float P045[3] = {9.27, 95.11, 5000.00};
215 static       float P046[3] = {-9.27, 95.11, 5000.00};
216 static       float P047[3] = {-24.27, 58.78, 5000.00};
217 static       float P048[3] = {-30.00, 0.00, 5000.00};
218 static       float P049[3] = {-24.27, -58.78, 5000.00};
219 static       float P050[3] = {-9.27, -95.10, 5000.00};
220 static       float P051[3] = {9.27, -95.11, 5000.00};
221 static       float P052[3] = {24.27, -58.78, 5000.00};
222 #if 0
223 static const float P053[3] = {0.00, 0.00, 0.00};
224 static const float P054[3] = {0.00, 0.00, 0.00};
225 static const float P055[3] = {0.00, 0.00, 0.00};
226 static const float P056[3] = {0.00, 0.00, 0.00};
227 static const float P057[3] = {0.00, 0.00, 0.00};
228 #endif
229 static const float P058[3] = {0.00, 1212.72, 2703.08};
230 static const float P059[3] = {50.36, 0.00, 108.14};
231 static const float P060[3] = {-22.18, 0.00, 108.14};
232 static       float P061[3] = {0.00, 1181.61, 6344.65};
233 static const float P062[3] = {516.45, -887.08, 2535.45};
234 static const float P063[3] = {-545.69, -879.31, 2555.63};
235 static const float P064[3] = {618.89, -1005.64, 2988.32};
236 static const float P065[3] = {-635.37, -1014.79, 2938.68};
237 static const float P066[3] = {0.00, 1374.43, 3064.18};
238 #if 0
239 static const float P067[3] = {158.49, -11.89, 1401.56};
240 static const float P068[3] = {-132.08, -17.90, 1394.31};
241 #endif
242 static       float P069[3] = {0.00, -418.25, 5765.04};
243 static       float P070[3] = {0.00, 1266.91, 6629.60};
244 static const float P071[3] = {-139.12, -124.96, 997.98};
245 static const float P072[3] = {-139.24, -110.18, 1020.68};
246 static const float P073[3] = {-137.33, -94.52, 1022.63};
247 static const float P074[3] = {-137.03, -79.91, 996.89};
248 static const float P075[3] = {-135.21, -91.48, 969.14};
249 static const float P076[3] = {-135.39, -110.87, 968.76};
250 static const float P077[3] = {150.23, -78.44, 995.53};
251 static const float P078[3] = {152.79, -92.76, 1018.46};
252 static const float P079[3] = {154.19, -110.20, 1020.55};
253 static const float P080[3] = {151.33, -124.15, 993.77};
254 static const float P081[3] = {150.49, -111.19, 969.86};
255 static const float P082[3] = {150.79, -92.41, 969.70};
256 static const float iP002[3] = {0.00, -36.59, 5687.72};
257 static const float iP004[3] = {58.24, -146.84, 262.35};
258 static const float iP007[3] = {-46.09, -146.83, 265.84};
259 static const float iP010[3] = {-27.81, -285.31, 500.00};
260 static const float iP011[3] = {27.81, -285.32, 500.00};
261 static const float iP023[3] = {150.00, 0.00, 3000.00};
262 static const float iP024[3] = {121.35, 293.89, 3000.00};
263 static const float iP025[3] = {46.35, 502.93, 2883.09};
264 static const float iP026[3] = {-46.35, 497.45, 2877.24};
265 static const float iP027[3] = {-121.35, 293.90, 3000.00};
266 static const float iP028[3] = {-150.00, 0.00, 3000.00};
267 static const float iP029[3] = {-121.35, -304.84, 2853.86};
268 static const float iP030[3] = {-46.36, -475.52, 3000.00};
269 static const float iP031[3] = {46.35, -475.53, 3000.00};
270 static const float iP032[3] = {121.35, -304.87, 2853.86};
271 static const float iP033[3] = {90.00, 0.00, 4000.00};
272 static const float iP034[3] = {72.81, 176.33, 4000.00};
273 static const float iP035[3] = {27.81, 285.32, 4000.00};
274 static const float iP036[3] = {-27.81, 285.32, 4000.00};
275 static const float iP037[3] = {-72.81, 176.34, 4000.00};
276 static const float iP038[3] = {-90.00, 0.00, 4000.00};
277 static const float iP039[3] = {-72.81, -176.33, 4000.00};
278 static const float iP040[3] = {-27.81, -285.31, 4000.00};
279 static const float iP041[3] = {27.81, -285.32, 4000.00};
280 static const float iP042[3] = {72.81, -176.34, 4000.00};
281 static const float iP043[3] = {30.00, 0.00, 5000.00};
282 static const float iP044[3] = {24.27, 58.78, 5000.00};
283 static const float iP045[3] = {9.27, 95.11, 5000.00};
284 static const float iP046[3] = {-9.27, 95.11, 5000.00};
285 static const float iP047[3] = {-24.27, 58.78, 5000.00};
286 static const float iP048[3] = {-30.00, 0.00, 5000.00};
287 static const float iP049[3] = {-24.27, -58.78, 5000.00};
288 static const float iP050[3] = {-9.27, -95.10, 5000.00};
289 static const float iP051[3] = {9.27, -95.11, 5000.00};
290 static const float iP052[3] = {24.27, -58.78, 5000.00};
291 #if 0
292 static const float iP053[3] = {0.00, 0.00, 0.00};
293 #endif
294 static const float iP061[3] = {0.00, 1181.61, 6344.65};
295 static const float iP069[3] = {0.00, -418.25, 5765.04};
296 static const float iP070[3] = {0.00, 1266.91, 6629.60};
297 /* *INDENT-ON* */
298
299
300
301 static void
302 Fish001(GLenum cap)
303 {
304         glBegin(cap);
305         glNormal3fv(N005);
306         glVertex3fv(P005);
307         glNormal3fv(N059);
308         glVertex3fv(P059);
309         glNormal3fv(N060);
310         glVertex3fv(P060);
311         glNormal3fv(N006);
312         glVertex3fv(P006);
313         glEnd();
314         glBegin(cap);
315         glNormal3fv(N015);
316         glVertex3fv(P015);
317         glNormal3fv(N005);
318         glVertex3fv(P005);
319         glNormal3fv(N006);
320         glVertex3fv(P006);
321         glNormal3fv(N016);
322         glVertex3fv(P016);
323         glEnd();
324         glBegin(cap);
325         glNormal3fv(N006);
326         glVertex3fv(P006);
327         glNormal3fv(N060);
328         glVertex3fv(P060);
329         glNormal3fv(N008);
330         glVertex3fv(P008);
331         glEnd();
332         glBegin(cap);
333         glNormal3fv(N016);
334         glVertex3fv(P016);
335         glNormal3fv(N006);
336         glVertex3fv(P006);
337         glNormal3fv(N008);
338         glVertex3fv(P008);
339         glEnd();
340         glBegin(cap);
341         glNormal3fv(N016);
342         glVertex3fv(P016);
343         glNormal3fv(N008);
344         glVertex3fv(P008);
345         glNormal3fv(N017);
346         glVertex3fv(P017);
347         glEnd();
348         glBegin(cap);
349         glNormal3fv(N017);
350         glVertex3fv(P017);
351         glNormal3fv(N008);
352         glVertex3fv(P008);
353         glNormal3fv(N018);
354         glVertex3fv(P018);
355         glEnd();
356         glBegin(cap);
357         glNormal3fv(N008);
358         glVertex3fv(P008);
359         glNormal3fv(N009);
360         glVertex3fv(P009);
361         glNormal3fv(N018);
362         glVertex3fv(P018);
363         glEnd();
364         glBegin(cap);
365         glNormal3fv(N008);
366         glVertex3fv(P008);
367         glNormal3fv(N060);
368         glVertex3fv(P060);
369         glNormal3fv(N009);
370         glVertex3fv(P009);
371         glEnd();
372         glBegin(cap);
373         glNormal3fv(N007);
374         glVertex3fv(P007);
375         glNormal3fv(N010);
376         glVertex3fv(P010);
377         glNormal3fv(N009);
378         glVertex3fv(P009);
379         glEnd();
380         glBegin(cap);
381         glNormal3fv(N009);
382         glVertex3fv(P009);
383         glNormal3fv(N019);
384         glVertex3fv(P019);
385         glNormal3fv(N018);
386         glVertex3fv(P018);
387         glEnd();
388         glBegin(cap);
389         glNormal3fv(N009);
390         glVertex3fv(P009);
391         glNormal3fv(N010);
392         glVertex3fv(P010);
393         glNormal3fv(N019);
394         glVertex3fv(P019);
395         glEnd();
396         glBegin(cap);
397         glNormal3fv(N010);
398         glVertex3fv(P010);
399         glNormal3fv(N020);
400         glVertex3fv(P020);
401         glNormal3fv(N019);
402         glVertex3fv(P019);
403         glEnd();
404         glBegin(cap);
405         glNormal3fv(N010);
406         glVertex3fv(P010);
407         glNormal3fv(N011);
408         glVertex3fv(P011);
409         glNormal3fv(N021);
410         glVertex3fv(P021);
411         glNormal3fv(N020);
412         glVertex3fv(P020);
413         glEnd();
414         glBegin(cap);
415         glNormal3fv(N004);
416         glVertex3fv(P004);
417         glNormal3fv(N011);
418         glVertex3fv(P011);
419         glNormal3fv(N010);
420         glVertex3fv(P010);
421         glNormal3fv(N007);
422         glVertex3fv(P007);
423         glEnd();
424         glBegin(cap);
425         glNormal3fv(N004);
426         glVertex3fv(P004);
427         glNormal3fv(N012);
428         glVertex3fv(P012);
429         glNormal3fv(N011);
430         glVertex3fv(P011);
431         glEnd();
432         glBegin(cap);
433         glNormal3fv(N012);
434         glVertex3fv(P012);
435         glNormal3fv(N022);
436         glVertex3fv(P022);
437         glNormal3fv(N011);
438         glVertex3fv(P011);
439         glEnd();
440         glBegin(cap);
441         glNormal3fv(N011);
442         glVertex3fv(P011);
443         glNormal3fv(N022);
444         glVertex3fv(P022);
445         glNormal3fv(N021);
446         glVertex3fv(P021);
447         glEnd();
448         glBegin(cap);
449         glNormal3fv(N059);
450         glVertex3fv(P059);
451         glNormal3fv(N005);
452         glVertex3fv(P005);
453         glNormal3fv(N015);
454         glVertex3fv(P015);
455         glEnd();
456         glBegin(cap);
457         glNormal3fv(N015);
458         glVertex3fv(P015);
459         glNormal3fv(N014);
460         glVertex3fv(P014);
461         glNormal3fv(N003);
462         glVertex3fv(P003);
463         glEnd();
464         glBegin(cap);
465         glNormal3fv(N015);
466         glVertex3fv(P015);
467         glNormal3fv(N003);
468         glVertex3fv(P003);
469         glNormal3fv(N059);
470         glVertex3fv(P059);
471         glEnd();
472         glBegin(cap);
473         glNormal3fv(N014);
474         glVertex3fv(P014);
475         glNormal3fv(N013);
476         glVertex3fv(P013);
477         glNormal3fv(N003);
478         glVertex3fv(P003);
479         glEnd();
480         glBegin(cap);
481         glNormal3fv(N003);
482         glVertex3fv(P003);
483         glNormal3fv(N012);
484         glVertex3fv(P012);
485         glNormal3fv(N059);
486         glVertex3fv(P059);
487         glEnd();
488         glBegin(cap);
489         glNormal3fv(N013);
490         glVertex3fv(P013);
491         glNormal3fv(N012);
492         glVertex3fv(P012);
493         glNormal3fv(N003);
494         glVertex3fv(P003);
495         glEnd();
496         glBegin(cap);
497         glNormal3fv(N013);
498         glVertex3fv(P013);
499         glNormal3fv(N022);
500         glVertex3fv(P022);
501         glNormal3fv(N012);
502         glVertex3fv(P012);
503         glEnd();
504         glBegin(cap);
505         glVertex3fv(P071);
506         glVertex3fv(P072);
507         glVertex3fv(P073);
508         glVertex3fv(P074);
509         glVertex3fv(P075);
510         glVertex3fv(P076);
511         glEnd();
512         glBegin(cap);
513         glVertex3fv(P077);
514         glVertex3fv(P078);
515         glVertex3fv(P079);
516         glVertex3fv(P080);
517         glVertex3fv(P081);
518         glVertex3fv(P082);
519         glEnd();
520 }
521
522 static void
523 Fish002(GLenum cap)
524 {
525         glBegin(cap);
526         glNormal3fv(N013);
527         glVertex3fv(P013);
528         glNormal3fv(N014);
529         glVertex3fv(P014);
530         glNormal3fv(N024);
531         glVertex3fv(P024);
532         glNormal3fv(N023);
533         glVertex3fv(P023);
534         glEnd();
535         glBegin(cap);
536         glNormal3fv(N014);
537         glVertex3fv(P014);
538         glNormal3fv(N015);
539         glVertex3fv(P015);
540         glNormal3fv(N025);
541         glVertex3fv(P025);
542         glNormal3fv(N024);
543         glVertex3fv(P024);
544         glEnd();
545         glBegin(cap);
546         glNormal3fv(N016);
547         glVertex3fv(P016);
548         glNormal3fv(N017);
549         glVertex3fv(P017);
550         glNormal3fv(N027);
551         glVertex3fv(P027);
552         glNormal3fv(N026);
553         glVertex3fv(P026);
554         glEnd();
555         glBegin(cap);
556         glNormal3fv(N017);
557         glVertex3fv(P017);
558         glNormal3fv(N018);
559         glVertex3fv(P018);
560         glNormal3fv(N028);
561         glVertex3fv(P028);
562         glNormal3fv(N027);
563         glVertex3fv(P027);
564         glEnd();
565         glBegin(cap);
566         glNormal3fv(N020);
567         glVertex3fv(P020);
568         glNormal3fv(N021);
569         glVertex3fv(P021);
570         glNormal3fv(N031);
571         glVertex3fv(P031);
572         glNormal3fv(N030);
573         glVertex3fv(P030);
574         glEnd();
575         glBegin(cap);
576         glNormal3fv(N013);
577         glVertex3fv(P013);
578         glNormal3fv(N023);
579         glVertex3fv(P023);
580         glNormal3fv(N022);
581         glVertex3fv(P022);
582         glEnd();
583         glBegin(cap);
584         glNormal3fv(N022);
585         glVertex3fv(P022);
586         glNormal3fv(N023);
587         glVertex3fv(P023);
588         glNormal3fv(N032);
589         glVertex3fv(P032);
590         glEnd();
591         glBegin(cap);
592         glNormal3fv(N022);
593         glVertex3fv(P022);
594         glNormal3fv(N032);
595         glVertex3fv(P032);
596         glNormal3fv(N031);
597         glVertex3fv(P031);
598         glEnd();
599         glBegin(cap);
600         glNormal3fv(N022);
601         glVertex3fv(P022);
602         glNormal3fv(N031);
603         glVertex3fv(P031);
604         glNormal3fv(N021);
605         glVertex3fv(P021);
606         glEnd();
607         glBegin(cap);
608         glNormal3fv(N018);
609         glVertex3fv(P018);
610         glNormal3fv(N019);
611         glVertex3fv(P019);
612         glNormal3fv(N029);
613         glVertex3fv(P029);
614         glEnd();
615         glBegin(cap);
616         glNormal3fv(N018);
617         glVertex3fv(P018);
618         glNormal3fv(N029);
619         glVertex3fv(P029);
620         glNormal3fv(N028);
621         glVertex3fv(P028);
622         glEnd();
623         glBegin(cap);
624         glNormal3fv(N019);
625         glVertex3fv(P019);
626         glNormal3fv(N020);
627         glVertex3fv(P020);
628         glNormal3fv(N030);
629         glVertex3fv(P030);
630         glEnd();
631         glBegin(cap);
632         glNormal3fv(N019);
633         glVertex3fv(P019);
634         glNormal3fv(N030);
635         glVertex3fv(P030);
636         glNormal3fv(N029);
637         glVertex3fv(P029);
638         glEnd();
639 }
640
641 static void
642 Fish003(GLenum cap)
643 {
644         glBegin(cap);
645         glNormal3fv(N032);
646         glVertex3fv(P032);
647         glNormal3fv(N023);
648         glVertex3fv(P023);
649         glNormal3fv(N033);
650         glVertex3fv(P033);
651         glNormal3fv(N042);
652         glVertex3fv(P042);
653         glEnd();
654         glBegin(cap);
655         glNormal3fv(N031);
656         glVertex3fv(P031);
657         glNormal3fv(N032);
658         glVertex3fv(P032);
659         glNormal3fv(N042);
660         glVertex3fv(P042);
661         glNormal3fv(N041);
662         glVertex3fv(P041);
663         glEnd();
664         glBegin(cap);
665         glNormal3fv(N023);
666         glVertex3fv(P023);
667         glNormal3fv(N024);
668         glVertex3fv(P024);
669         glNormal3fv(N034);
670         glVertex3fv(P034);
671         glNormal3fv(N033);
672         glVertex3fv(P033);
673         glEnd();
674         glBegin(cap);
675         glNormal3fv(N024);
676         glVertex3fv(P024);
677         glNormal3fv(N025);
678         glVertex3fv(P025);
679         glNormal3fv(N035);
680         glVertex3fv(P035);
681         glNormal3fv(N034);
682         glVertex3fv(P034);
683         glEnd();
684         glBegin(cap);
685         glNormal3fv(N030);
686         glVertex3fv(P030);
687         glNormal3fv(N031);
688         glVertex3fv(P031);
689         glNormal3fv(N041);
690         glVertex3fv(P041);
691         glNormal3fv(N040);
692         glVertex3fv(P040);
693         glEnd();
694         glBegin(cap);
695         glNormal3fv(N025);
696         glVertex3fv(P025);
697         glNormal3fv(N026);
698         glVertex3fv(P026);
699         glNormal3fv(N036);
700         glVertex3fv(P036);
701         glNormal3fv(N035);
702         glVertex3fv(P035);
703         glEnd();
704         glBegin(cap);
705         glNormal3fv(N026);
706         glVertex3fv(P026);
707         glNormal3fv(N027);
708         glVertex3fv(P027);
709         glNormal3fv(N037);
710         glVertex3fv(P037);
711         glNormal3fv(N036);
712         glVertex3fv(P036);
713         glEnd();
714         glBegin(cap);
715         glNormal3fv(N027);
716         glVertex3fv(P027);
717         glNormal3fv(N028);
718         glVertex3fv(P028);
719         glNormal3fv(N038);
720         glVertex3fv(P038);
721         glNormal3fv(N037);
722         glVertex3fv(P037);
723         glEnd();
724         glBegin(cap);
725         glNormal3fv(N028);
726         glVertex3fv(P028);
727         glNormal3fv(N029);
728         glVertex3fv(P029);
729         glNormal3fv(N039);
730         glVertex3fv(P039);
731         glNormal3fv(N038);
732         glVertex3fv(P038);
733         glEnd();
734         glBegin(cap);
735         glNormal3fv(N029);
736         glVertex3fv(P029);
737         glNormal3fv(N030);
738         glVertex3fv(P030);
739         glNormal3fv(N040);
740         glVertex3fv(P040);
741         glNormal3fv(N039);
742         glVertex3fv(P039);
743         glEnd();
744 }
745
746 static void
747 Fish004(GLenum cap)
748 {
749         glBegin(cap);
750         glNormal3fv(N040);
751         glVertex3fv(P040);
752         glNormal3fv(N041);
753         glVertex3fv(P041);
754         glNormal3fv(N051);
755         glVertex3fv(P051);
756         glNormal3fv(N050);
757         glVertex3fv(P050);
758         glEnd();
759         glBegin(cap);
760         glNormal3fv(N041);
761         glVertex3fv(P041);
762         glNormal3fv(N042);
763         glVertex3fv(P042);
764         glNormal3fv(N052);
765         glVertex3fv(P052);
766         glNormal3fv(N051);
767         glVertex3fv(P051);
768         glEnd();
769         glBegin(cap);
770         glNormal3fv(N042);
771         glVertex3fv(P042);
772         glNormal3fv(N033);
773         glVertex3fv(P033);
774         glNormal3fv(N043);
775         glVertex3fv(P043);
776         glNormal3fv(N052);
777         glVertex3fv(P052);
778         glEnd();
779         glBegin(cap);
780         glNormal3fv(N033);
781         glVertex3fv(P033);
782         glNormal3fv(N034);
783         glVertex3fv(P034);
784         glNormal3fv(N044);
785         glVertex3fv(P044);
786         glNormal3fv(N043);
787         glVertex3fv(P043);
788         glEnd();
789         glBegin(cap);
790         glNormal3fv(N034);
791         glVertex3fv(P034);
792         glNormal3fv(N035);
793         glVertex3fv(P035);
794         glNormal3fv(N045);
795         glVertex3fv(P045);
796         glNormal3fv(N044);
797         glVertex3fv(P044);
798         glEnd();
799         glBegin(cap);
800         glNormal3fv(N035);
801         glVertex3fv(P035);
802         glNormal3fv(N036);
803         glVertex3fv(P036);
804         glNormal3fv(N046);
805         glVertex3fv(P046);
806         glNormal3fv(N045);
807         glVertex3fv(P045);
808         glEnd();
809         glBegin(cap);
810         glNormal3fv(N036);
811         glVertex3fv(P036);
812         glNormal3fv(N037);
813         glVertex3fv(P037);
814         glNormal3fv(N047);
815         glVertex3fv(P047);
816         glNormal3fv(N046);
817         glVertex3fv(P046);
818         glEnd();
819         glBegin(cap);
820         glNormal3fv(N037);
821         glVertex3fv(P037);
822         glNormal3fv(N038);
823         glVertex3fv(P038);
824         glNormal3fv(N048);
825         glVertex3fv(P048);
826         glNormal3fv(N047);
827         glVertex3fv(P047);
828         glEnd();
829         glBegin(cap);
830         glNormal3fv(N038);
831         glVertex3fv(P038);
832         glNormal3fv(N039);
833         glVertex3fv(P039);
834         glNormal3fv(N049);
835         glVertex3fv(P049);
836         glNormal3fv(N048);
837         glVertex3fv(P048);
838         glEnd();
839         glBegin(cap);
840         glNormal3fv(N039);
841         glVertex3fv(P039);
842         glNormal3fv(N040);
843         glVertex3fv(P040);
844         glNormal3fv(N050);
845         glVertex3fv(P050);
846         glNormal3fv(N049);
847         glVertex3fv(P049);
848         glEnd();
849         glBegin(cap);
850         glNormal3fv(N070);
851         glVertex3fv(P070);
852         glNormal3fv(N061);
853         glVertex3fv(P061);
854         glNormal3fv(N002);
855         glVertex3fv(P002);
856         glEnd();
857         glBegin(cap);
858         glNormal3fv(N061);
859         glVertex3fv(P061);
860         glNormal3fv(N046);
861         glVertex3fv(P046);
862         glNormal3fv(N002);
863         glVertex3fv(P002);
864         glEnd();
865         glBegin(cap);
866         glNormal3fv(N045);
867         glVertex3fv(P045);
868         glNormal3fv(N046);
869         glVertex3fv(P046);
870         glNormal3fv(N061);
871         glVertex3fv(P061);
872         glEnd();
873         glBegin(cap);
874         glNormal3fv(N002);
875         glVertex3fv(P002);
876         glNormal3fv(N061);
877         glVertex3fv(P061);
878         glNormal3fv(N070);
879         glVertex3fv(P070);
880         glEnd();
881         glBegin(cap);
882         glNormal3fv(N002);
883         glVertex3fv(P002);
884         glNormal3fv(N045);
885         glVertex3fv(P045);
886         glNormal3fv(N061);
887         glVertex3fv(P061);
888         glEnd();
889 }
890
891 static void
892 Fish005(GLenum cap)
893 {
894         glBegin(cap);
895         glNormal3fv(N002);
896         glVertex3fv(P002);
897         glNormal3fv(N044);
898         glVertex3fv(P044);
899         glNormal3fv(N045);
900         glVertex3fv(P045);
901         glEnd();
902         glBegin(cap);
903         glNormal3fv(N002);
904         glVertex3fv(P002);
905         glNormal3fv(N043);
906         glVertex3fv(P043);
907         glNormal3fv(N044);
908         glVertex3fv(P044);
909         glEnd();
910         glBegin(cap);
911         glNormal3fv(N002);
912         glVertex3fv(P002);
913         glNormal3fv(N052);
914         glVertex3fv(P052);
915         glNormal3fv(N043);
916         glVertex3fv(P043);
917         glEnd();
918         glBegin(cap);
919         glNormal3fv(N002);
920         glVertex3fv(P002);
921         glNormal3fv(N051);
922         glVertex3fv(P051);
923         glNormal3fv(N052);
924         glVertex3fv(P052);
925         glEnd();
926         glBegin(cap);
927         glNormal3fv(N002);
928         glVertex3fv(P002);
929         glNormal3fv(N046);
930         glVertex3fv(P046);
931         glNormal3fv(N047);
932         glVertex3fv(P047);
933         glEnd();
934         glBegin(cap);
935         glNormal3fv(N002);
936         glVertex3fv(P002);
937         glNormal3fv(N047);
938         glVertex3fv(P047);
939         glNormal3fv(N048);
940         glVertex3fv(P048);
941         glEnd();
942         glBegin(cap);
943         glNormal3fv(N002);
944         glVertex3fv(P002);
945         glNormal3fv(N048);
946         glVertex3fv(P048);
947         glNormal3fv(N049);
948         glVertex3fv(P049);
949         glEnd();
950         glBegin(cap);
951         glNormal3fv(N002);
952         glVertex3fv(P002);
953         glNormal3fv(N049);
954         glVertex3fv(P049);
955         glNormal3fv(N050);
956         glVertex3fv(P050);
957         glEnd();
958         glBegin(cap);
959         glNormal3fv(N050);
960         glVertex3fv(P050);
961         glNormal3fv(N051);
962         glVertex3fv(P051);
963         glNormal3fv(N069);
964         glVertex3fv(P069);
965         glEnd();
966         glBegin(cap);
967         glNormal3fv(N051);
968         glVertex3fv(P051);
969         glNormal3fv(N002);
970         glVertex3fv(P002);
971         glNormal3fv(N069);
972         glVertex3fv(P069);
973         glEnd();
974         glBegin(cap);
975         glNormal3fv(N050);
976         glVertex3fv(P050);
977         glNormal3fv(N069);
978         glVertex3fv(P069);
979         glNormal3fv(N002);
980         glVertex3fv(P002);
981         glEnd();
982 }
983
984 static void
985 Fish006(GLenum cap)
986 {
987         glBegin(cap);
988         glNormal3fv(N066);
989         glVertex3fv(P066);
990         glNormal3fv(N016);
991         glVertex3fv(P016);
992         glNormal3fv(N026);
993         glVertex3fv(P026);
994         glEnd();
995         glBegin(cap);
996         glNormal3fv(N015);
997         glVertex3fv(P015);
998         glNormal3fv(N066);
999         glVertex3fv(P066);
1000         glNormal3fv(N025);
1001         glVertex3fv(P025);
1002         glEnd();
1003         glBegin(cap);
1004         glNormal3fv(N025);
1005         glVertex3fv(P025);
1006         glNormal3fv(N066);
1007         glVertex3fv(P066);
1008         glNormal3fv(N026);
1009         glVertex3fv(P026);
1010         glEnd();
1011         glBegin(cap);
1012         glNormal3fv(N066);
1013         glVertex3fv(P066);
1014         glNormal3fv(N058);
1015         glVertex3fv(P058);
1016         glNormal3fv(N016);
1017         glVertex3fv(P016);
1018         glEnd();
1019         glBegin(cap);
1020         glNormal3fv(N015);
1021         glVertex3fv(P015);
1022         glNormal3fv(N058);
1023         glVertex3fv(P058);
1024         glNormal3fv(N066);
1025         glVertex3fv(P066);
1026         glEnd();
1027         glBegin(cap);
1028         glNormal3fv(N058);
1029         glVertex3fv(P058);
1030         glNormal3fv(N015);
1031         glVertex3fv(P015);
1032         glNormal3fv(N016);
1033         glVertex3fv(P016);
1034         glEnd();
1035 }
1036
1037 static void
1038 Fish007(GLenum cap)
1039 {
1040         glBegin(cap);
1041         glNormal3fv(N062);
1042         glVertex3fv(P062);
1043         glNormal3fv(N022);
1044         glVertex3fv(P022);
1045         glNormal3fv(N032);
1046         glVertex3fv(P032);
1047         glEnd();
1048         glBegin(cap);
1049         glNormal3fv(N062);
1050         glVertex3fv(P062);
1051         glNormal3fv(N032);
1052         glVertex3fv(P032);
1053         glNormal3fv(N064);
1054         glVertex3fv(P064);
1055         glEnd();
1056         glBegin(cap);
1057         glNormal3fv(N022);
1058         glVertex3fv(P022);
1059         glNormal3fv(N062);
1060         glVertex3fv(P062);
1061         glNormal3fv(N032);
1062         glVertex3fv(P032);
1063         glEnd();
1064         glBegin(cap);
1065         glNormal3fv(N062);
1066         glVertex3fv(P062);
1067         glNormal3fv(N064);
1068         glVertex3fv(P064);
1069         glNormal3fv(N032);
1070         glVertex3fv(P032);
1071         glEnd();
1072 }
1073
1074 static void
1075 Fish008(GLenum cap)
1076 {
1077         glBegin(cap);
1078         glNormal3fv(N063);
1079         glVertex3fv(P063);
1080         glNormal3fv(N019);
1081         glVertex3fv(P019);
1082         glNormal3fv(N029);
1083         glVertex3fv(P029);
1084         glEnd();
1085         glBegin(cap);
1086         glNormal3fv(N019);
1087         glVertex3fv(P019);
1088         glNormal3fv(N063);
1089         glVertex3fv(P063);
1090         glNormal3fv(N029);
1091         glVertex3fv(P029);
1092         glEnd();
1093         glBegin(cap);
1094         glNormal3fv(N063);
1095         glVertex3fv(P063);
1096         glNormal3fv(N029);
1097         glVertex3fv(P029);
1098         glNormal3fv(N065);
1099         glVertex3fv(P065);
1100         glEnd();
1101         glBegin(cap);
1102         glNormal3fv(N063);
1103         glVertex3fv(P063);
1104         glNormal3fv(N065);
1105         glVertex3fv(P065);
1106         glNormal3fv(N029);
1107         glVertex3fv(P029);
1108         glEnd();
1109 }
1110
1111 static void
1112 Fish009(GLenum cap)
1113 {
1114         glBegin(cap);
1115         glVertex3fv(P059);
1116         glVertex3fv(P012);
1117         glVertex3fv(P009);
1118         glVertex3fv(P060);
1119         glEnd();
1120         glBegin(cap);
1121         glVertex3fv(P012);
1122         glVertex3fv(P004);
1123         glVertex3fv(P007);
1124         glVertex3fv(P009);
1125         glEnd();
1126 }
1127
1128 static void
1129 Fish_1(GLenum cap)
1130 {
1131         Fish004(cap);
1132         Fish005(cap);
1133         Fish003(cap);
1134         Fish007(cap);
1135         Fish006(cap);
1136         Fish002(cap);
1137         Fish008(cap);
1138         Fish009(cap);
1139         Fish001(cap);
1140 }
1141
1142 static void
1143 Fish_2(GLenum cap)
1144 {
1145         Fish005(cap);
1146         Fish004(cap);
1147         Fish003(cap);
1148         Fish008(cap);
1149         Fish006(cap);
1150         Fish002(cap);
1151         Fish007(cap);
1152         Fish009(cap);
1153         Fish001(cap);
1154 }
1155
1156 static void
1157 Fish_3(GLenum cap)
1158 {
1159         Fish005(cap);
1160         Fish004(cap);
1161         Fish007(cap);
1162         Fish003(cap);
1163         Fish002(cap);
1164         Fish008(cap);
1165         Fish009(cap);
1166         Fish001(cap);
1167         Fish006(cap);
1168 }
1169
1170 static void
1171 Fish_4(GLenum cap)
1172 {
1173         Fish005(cap);
1174         Fish004(cap);
1175         Fish008(cap);
1176         Fish003(cap);
1177         Fish002(cap);
1178         Fish007(cap);
1179         Fish009(cap);
1180         Fish001(cap);
1181         Fish006(cap);
1182 }
1183
1184 static void
1185 Fish_5(GLenum cap)
1186 {
1187         Fish009(cap);
1188         Fish006(cap);
1189         Fish007(cap);
1190         Fish001(cap);
1191         Fish002(cap);
1192         Fish003(cap);
1193         Fish008(cap);
1194         Fish004(cap);
1195         Fish005(cap);
1196 }
1197
1198 static void
1199 Fish_6(GLenum cap)
1200 {
1201         Fish009(cap);
1202         Fish006(cap);
1203         Fish008(cap);
1204         Fish001(cap);
1205         Fish002(cap);
1206         Fish007(cap);
1207         Fish003(cap);
1208         Fish004(cap);
1209         Fish005(cap);
1210 }
1211
1212 static void
1213 Fish_7(GLenum cap)
1214 {
1215         Fish009(cap);
1216         Fish001(cap);
1217         Fish007(cap);
1218         Fish005(cap);
1219         Fish002(cap);
1220         Fish008(cap);
1221         Fish003(cap);
1222         Fish004(cap);
1223         Fish006(cap);
1224 }
1225
1226 static void
1227 Fish_8(GLenum cap)
1228 {
1229         Fish009(cap);
1230         Fish008(cap);
1231         Fish001(cap);
1232         Fish002(cap);
1233         Fish007(cap);
1234         Fish003(cap);
1235         Fish005(cap);
1236         Fish004(cap);
1237         Fish006(cap);
1238 }
1239
1240 void
1241 DrawShark(fishRec * fish, int wire)
1242 {
1243         float       mat[4][4];
1244         int         n;
1245         float       seg1, seg2, seg3, seg4, segup;
1246         float       thrash, chomp;
1247         GLenum      cap;
1248
1249         fish->htail = (int) (fish->htail - (int) (5.0 * fish->v)) % 360;
1250
1251         thrash = 50.0 * fish->v;
1252
1253         seg1 = 0.6 * thrash * sin(fish->htail * RRAD);
1254         seg2 = 1.8 * thrash * sin((fish->htail + 45.0) * RRAD);
1255         seg3 = 3.0 * thrash * sin((fish->htail + 90.0) * RRAD);
1256         seg4 = 4.0 * thrash * sin((fish->htail + 110.0) * RRAD);
1257
1258         chomp = 0.0;
1259         if (fish->v > 2.0) {
1260                 chomp = -(fish->v - 2.0) * 200.0;
1261         }
1262         P004[1] = iP004[1] + chomp;
1263         P007[1] = iP007[1] + chomp;
1264         P010[1] = iP010[1] + chomp;
1265         P011[1] = iP011[1] + chomp;
1266
1267         P023[0] = iP023[0] + seg1;
1268         P024[0] = iP024[0] + seg1;
1269         P025[0] = iP025[0] + seg1;
1270         P026[0] = iP026[0] + seg1;
1271         P027[0] = iP027[0] + seg1;
1272         P028[0] = iP028[0] + seg1;
1273         P029[0] = iP029[0] + seg1;
1274         P030[0] = iP030[0] + seg1;
1275         P031[0] = iP031[0] + seg1;
1276         P032[0] = iP032[0] + seg1;
1277         P033[0] = iP033[0] + seg2;
1278         P034[0] = iP034[0] + seg2;
1279         P035[0] = iP035[0] + seg2;
1280         P036[0] = iP036[0] + seg2;
1281         P037[0] = iP037[0] + seg2;
1282         P038[0] = iP038[0] + seg2;
1283         P039[0] = iP039[0] + seg2;
1284         P040[0] = iP040[0] + seg2;
1285         P041[0] = iP041[0] + seg2;
1286         P042[0] = iP042[0] + seg2;
1287         P043[0] = iP043[0] + seg3;
1288         P044[0] = iP044[0] + seg3;
1289         P045[0] = iP045[0] + seg3;
1290         P046[0] = iP046[0] + seg3;
1291         P047[0] = iP047[0] + seg3;
1292         P048[0] = iP048[0] + seg3;
1293         P049[0] = iP049[0] + seg3;
1294         P050[0] = iP050[0] + seg3;
1295         P051[0] = iP051[0] + seg3;
1296         P052[0] = iP052[0] + seg3;
1297         P002[0] = iP002[0] + seg4;
1298         P061[0] = iP061[0] + seg4;
1299         P069[0] = iP069[0] + seg4;
1300         P070[0] = iP070[0] + seg4;
1301
1302         fish->vtail += ((fish->dtheta - fish->vtail) * 0.1);
1303
1304         if (fish->vtail > 0.5) {
1305                 fish->vtail = 0.5;
1306         } else if (fish->vtail < -0.5) {
1307                 fish->vtail = -0.5;
1308         }
1309         segup = thrash * fish->vtail;
1310
1311         P023[1] = iP023[1] + segup;
1312         P024[1] = iP024[1] + segup;
1313         P025[1] = iP025[1] + segup;
1314         P026[1] = iP026[1] + segup;
1315         P027[1] = iP027[1] + segup;
1316         P028[1] = iP028[1] + segup;
1317         P029[1] = iP029[1] + segup;
1318         P030[1] = iP030[1] + segup;
1319         P031[1] = iP031[1] + segup;
1320         P032[1] = iP032[1] + segup;
1321         P033[1] = iP033[1] + segup * 5.0;
1322         P034[1] = iP034[1] + segup * 5.0;
1323         P035[1] = iP035[1] + segup * 5.0;
1324         P036[1] = iP036[1] + segup * 5.0;
1325         P037[1] = iP037[1] + segup * 5.0;
1326         P038[1] = iP038[1] + segup * 5.0;
1327         P039[1] = iP039[1] + segup * 5.0;
1328         P040[1] = iP040[1] + segup * 5.0;
1329         P041[1] = iP041[1] + segup * 5.0;
1330         P042[1] = iP042[1] + segup * 5.0;
1331         P043[1] = iP043[1] + segup * 12.0;
1332         P044[1] = iP044[1] + segup * 12.0;
1333         P045[1] = iP045[1] + segup * 12.0;
1334         P046[1] = iP046[1] + segup * 12.0;
1335         P047[1] = iP047[1] + segup * 12.0;
1336         P048[1] = iP048[1] + segup * 12.0;
1337         P049[1] = iP049[1] + segup * 12.0;
1338         P050[1] = iP050[1] + segup * 12.0;
1339         P051[1] = iP051[1] + segup * 12.0;
1340         P052[1] = iP052[1] + segup * 12.0;
1341         P002[1] = iP002[1] + segup * 17.0;
1342         P061[1] = iP061[1] + segup * 17.0;
1343         P069[1] = iP069[1] + segup * 17.0;
1344         P070[1] = iP070[1] + segup * 17.0;
1345
1346         glPushMatrix();
1347
1348         glTranslatef(0.0, 0.0, -3000.0);
1349
1350         glGetFloatv(GL_MODELVIEW_MATRIX, &mat[0][0]);
1351         n = 0;
1352         if (mat[0][2] >= 0.0) {
1353                 n += 1;
1354         }
1355         if (mat[1][2] >= 0.0) {
1356                 n += 2;
1357         }
1358         if (mat[2][2] >= 0.0) {
1359                 n += 4;
1360         }
1361         glScalef(2.0, 1.0, 1.0);
1362
1363         glEnable(GL_CULL_FACE);
1364         cap = wire ? GL_LINE_LOOP : GL_POLYGON;
1365         switch (n) {
1366                 case 0:
1367                         Fish_1(cap);
1368                         break;
1369                 case 1:
1370                         Fish_2(cap);
1371                         break;
1372                 case 2:
1373                         Fish_3(cap);
1374                         break;
1375                 case 3:
1376                         Fish_4(cap);
1377                         break;
1378                 case 4:
1379                         Fish_5(cap);
1380                         break;
1381                 case 5:
1382                         Fish_6(cap);
1383                         break;
1384                 case 6:
1385                         Fish_7(cap);
1386                         break;
1387                 case 7:
1388                         Fish_8(cap);
1389                         break;
1390         }
1391         glDisable(GL_CULL_FACE);
1392
1393         glPopMatrix();
1394 }
1395 #endif