http://ftp.x.org/contrib/applications/xscreensaver-2.17.tar.gz
[xscreensaver] / hacks / glx / dolphin.c
diff --git a/hacks/glx/dolphin.c b/hacks/glx/dolphin.c
new file mode 100644 (file)
index 0000000..130d932
--- /dev/null
@@ -0,0 +1,2065 @@
+/* atlantis --- Shows moving 3D sea animals */
+
+#if !defined( lint ) && !defined( SABER )
+static const char sccsid[] = "@(#)dolphin.c    1.1 98/05/13 xlockmore";
+
+#endif
+
+/* Copyright (c) E. Lassauge, 1998. */
+
+/*
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice appear in all copies and that
+ * both that copyright notice and this permission notice appear in
+ * supporting documentation.
+ *
+ * This file is provided AS IS with no warranties of any kind.  The author
+ * shall have no liability with respect to the infringement of copyrights,
+ * trade secrets or any patents by this file or any part thereof.  In no
+ * event will the author be liable for any lost revenue or profits or
+ * other special, indirect and consequential damages.
+ *
+ * The original code for this mode was written by Mark J. Kilgard
+ * as a demo for openGL programming.
+ * 
+ * Porting it to xlock  was possible by comparing the original Mesa's morph3d 
+ * demo with it's ported version to xlock, so thanks for Marcelo F. Vianna 
+ * (look at morph3d.c) for his indirect help.
+ *
+ * Thanks goes also to Brian Paul for making it possible and inexpensive
+ * to use OpenGL at home.
+ *
+ * My e-mail address is lassauge@sagem.fr
+ *
+ * Eric Lassauge  (May-13-1998)
+ *
+ */
+
+/**
+ * (c) Copyright 1993, 1994, Silicon Graphics, Inc.
+ * ALL RIGHTS RESERVED
+ * Permission to use, copy, modify, and distribute this software for
+ * any purpose and without fee is hereby granted, provided that the above
+ * copyright notice appear in all copies and that both the copyright notice
+ * and this permission notice appear in supporting documentation, and that
+ * the name of Silicon Graphics, Inc. not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission.
+ *
+ * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS"
+ * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR
+ * FITNESS FOR A PARTICULAR PURPOSE.  IN NO EVENT SHALL SILICON
+ * GRAPHICS, INC.  BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT,
+ * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY
+ * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION,
+ * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF
+ * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC.  HAS BEEN
+ * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE
+ * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * US Government Users Restricted Rights
+ * Use, duplication, or disclosure by the Government is subject to
+ * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph
+ * (c)(1)(ii) of the Rights in Technical Data and Computer Software
+ * clause at DFARS 252.227-7013 and/or in similar or successor
+ * clauses in the FAR or the DOD or NASA FAR Supplement.
+ * Unpublished-- rights reserved under the copyright laws of the
+ * United States.  Contractor/manufacturer is Silicon Graphics,
+ * Inc., 2011 N.  Shoreline Blvd., Mountain View, CA 94039-7311.
+ *
+ * OpenGL(TM) is a trademark of Silicon Graphics, Inc.
+ */
+#ifndef STANDALONE
+#include "xlock.h"
+#endif
+
+#ifdef USE_GL
+
+#ifdef STANDALONE
+#include <GL/glx.h>
+#endif
+
+#include <math.h>
+#include "atlantis.h"
+/* *INDENT-OFF* */
+static float N001[3] = {-0.005937 ,-0.101998 ,-0.994767};
+static float N002[3] = {0.936780 ,-0.200803 ,0.286569};
+static float N003[3] = {-0.233062 ,0.972058 ,0.028007};
+#if 0
+static float N004[3] = {0.000000 ,1.000000 ,0.000000};
+#endif
+static float N005[3] = {0.898117 ,0.360171 ,0.252315};
+static float N006[3] = {-0.915437 ,0.348456 ,0.201378};
+static float N007[3] = {0.602263 ,-0.777527 ,0.180920};
+static float N008[3] = {-0.906912 ,-0.412015 ,0.088061};
+#if 0
+static float N009[3] = {-0.015623 ,0.999878 ,0.000000};
+static float N010[3] = {0.000000 ,-0.992278 ,0.124035};
+static float N011[3] = {0.000000 ,-0.936329 ,-0.351123};
+#endif
+static float N012[3] = {0.884408 ,-0.429417 ,-0.182821};
+static float N013[3] = {0.921121 ,0.311084 ,-0.234016};
+static float N014[3] = {0.382635 ,0.877882 ,-0.287948};
+static float N015[3] = {-0.380046 ,0.888166 ,-0.258316};
+static float N016[3] = {-0.891515 ,0.392238 ,-0.226607};
+static float N017[3] = {-0.901419 ,-0.382002 ,-0.203763};
+static float N018[3] = {-0.367225 ,-0.911091 ,-0.187243};
+static float N019[3] = {0.339539 ,-0.924846 ,-0.171388};
+static float N020[3] = {0.914706 ,-0.378617 ,-0.141290};
+static float N021[3] = {0.950662 ,0.262713 ,-0.164994};
+static float N022[3] = {0.546359 ,0.801460 ,-0.243218};
+static float N023[3] = {-0.315796 ,0.917068 ,-0.243431};
+static float N024[3] = {-0.825687 ,0.532277 ,-0.186875};
+static float N025[3] = {-0.974763 ,-0.155232 ,-0.160435};
+static float N026[3] = {-0.560596 ,-0.816658 ,-0.137119};
+static float N027[3] = {0.380210 ,-0.910817 ,-0.160786};
+static float N028[3] = {0.923772 ,-0.358322 ,-0.135093};
+static float N029[3] = {0.951202 ,0.275053 ,-0.139859};
+static float N030[3] = {0.686099 ,0.702548 ,-0.188932};
+static float N031[3] = {-0.521865 ,0.826719 ,-0.210220};
+static float N032[3] = {-0.923820 ,0.346739 ,-0.162258};
+static float N033[3] = {-0.902095 ,-0.409995 ,-0.134646};
+static float N034[3] = {-0.509115 ,-0.848498 ,-0.144404};
+static float N035[3] = {0.456469 ,-0.880293 ,-0.129305};
+static float N036[3] = {0.873401 ,-0.475489 ,-0.105266};
+static float N037[3] = {0.970825 ,0.179861 ,-0.158584};
+static float N038[3] = {0.675609 ,0.714187 ,-0.183004};
+static float N039[3] = {-0.523574 ,0.830212 ,-0.191360};
+static float N040[3] = {-0.958895 ,0.230808 ,-0.165071};
+static float N041[3] = {-0.918285 ,-0.376803 ,-0.121542};
+static float N042[3] = {-0.622467 ,-0.774167 ,-0.114888};
+static float N043[3] = {0.404497 ,-0.908807 ,-0.102231};
+static float N044[3] = {0.930538 ,-0.365155 ,-0.027588};
+static float N045[3] = {0.921920 ,0.374157 ,-0.100345};
+static float N046[3] = {0.507346 ,0.860739 ,0.041562};
+static float N047[3] = {-0.394646 ,0.918815 ,-0.005730};
+static float N048[3] = {-0.925411 ,0.373024 ,-0.066837};
+static float N049[3] = {-0.945337 ,-0.322309 ,-0.049551};
+static float N050[3] = {-0.660437 ,-0.750557 ,-0.022072};
+static float N051[3] = {0.488835 ,-0.871950 ,-0.027261};
+static float N052[3] = {0.902599 ,-0.421397 ,0.087969};
+static float N053[3] = {0.938636 ,0.322606 ,0.122020};
+static float N054[3] = {0.484605 ,0.871078 ,0.079878};
+static float N055[3] = {-0.353607 ,0.931559 ,0.084619};
+static float N056[3] = {-0.867759 ,0.478564 ,0.134054};
+static float N057[3] = {-0.951583 ,-0.296030 ,0.082794};
+static float N058[3] = {-0.672355 ,-0.730209 ,0.121384};
+static float N059[3] = {0.528336 ,-0.842452 ,0.105525};
+static float N060[3] = {0.786913 ,-0.564760 ,0.248627};
+#if 0
+static float N061[3] = {0.000000 ,1.000000 ,0.000000};
+#endif
+static float N062[3] = {0.622098 ,0.765230 ,0.165584};
+static float N063[3] = {-0.631711 ,0.767816 ,0.106773};
+static float N064[3] = {-0.687886 ,0.606351 ,0.398938};
+static float N065[3] = {-0.946327 ,-0.281623 ,0.158598};
+static float N066[3] = {-0.509549 ,-0.860437 ,0.002776};
+static float N067[3] = {0.462594 ,-0.876692 ,0.131977};
+#if 0
+static float N068[3] = {0.000000 ,-0.992278 ,0.124035};
+static float N069[3] = {0.000000 ,-0.970143 ,-0.242536};
+static float N070[3] = {0.015502 ,0.992159 ,-0.124020};
+#endif
+static float N071[3] = {0.000000 ,1.000000 ,0.000000};
+#if 0
+static float N072[3] = {0.000000 ,1.000000 ,0.000000};
+static float N073[3] = {0.000000 ,1.000000 ,0.000000};
+static float N074[3] = {0.000000 ,-1.000000 ,0.000000};
+static float N075[3] = {-0.242536 ,0.000000 ,-0.970143};
+static float N076[3] = {-0.010336 ,-0.992225 ,-0.124028};
+#endif
+static float N077[3] = {-0.880770 ,0.461448 ,0.106351};
+static float N078[3] = {-0.880770 ,0.461448 ,0.106351};
+static float N079[3] = {-0.880770 ,0.461448 ,0.106351};
+static float N080[3] = {-0.880770 ,0.461448 ,0.106351};
+static float N081[3] = {-0.571197 ,0.816173 ,0.087152};
+static float N082[3] = {-0.880770 ,0.461448 ,0.106351};
+static float N083[3] = {-0.571197 ,0.816173 ,0.087152};
+static float N084[3] = {-0.571197 ,0.816173 ,0.087152};
+static float N085[3] = {-0.880770 ,0.461448 ,0.106351};
+static float N086[3] = {-0.571197 ,0.816173 ,0.087152};
+static float N087[3] = {-0.880770 ,0.461448 ,0.106351};
+static float N088[3] = {-0.880770 ,0.461448 ,0.106351};
+static float N089[3] = {-0.880770 ,0.461448 ,0.106351};
+static float N090[3] = {-0.880770 ,0.461448 ,0.106351};
+static float N091[3] = {0.000000 ,1.000000 ,0.000000};
+static float N092[3] = {0.000000 ,1.000000 ,0.000000};
+static float N093[3] = {0.000000 ,1.000000 ,0.000000};
+static float N094[3] = {1.000000 ,0.000000 ,0.000000};
+static float N095[3] = {-1.000000 ,0.000000 ,0.000000};
+#if 0
+static float N096[3] = {0.000000 ,1.000000 ,0.000000};
+#endif
+static float N097[3] = {-0.697296 ,0.702881 ,0.140491};
+static float N098[3] = {0.918864 ,0.340821 ,0.198819};
+static float N099[3] = {-0.932737 ,0.201195 ,0.299202};
+static float N100[3] = {0.029517 ,0.981679 ,0.188244};
+#if 0
+static float N101[3] = {0.000000 ,1.000000 ,0.000000};
+#endif
+static float N102[3] = {0.813521 ,-0.204936 ,0.544229};
+#if 0
+static float N103[3] = {0.000000 ,1.000000 ,0.000000};
+static float N104[3] = {0.000000 ,1.000000 ,0.000000};
+static float N105[3] = {0.000000 ,1.000000 ,0.000000};
+static float N106[3] = {0.000000 ,1.000000 ,0.000000};
+static float N107[3] = {0.000000 ,1.000000 ,0.000000};
+static float N108[3] = {0.000000 ,1.000000 ,0.000000};
+static float N109[3] = {0.000000 ,1.000000 ,0.000000};
+#endif
+static float N110[3] = {-0.781480 ,-0.384779 ,0.491155};
+static float N111[3] = {-0.722243 ,0.384927 ,0.574627};
+static float N112[3] = {-0.752278 ,0.502679 ,0.425901};
+static float N113[3] = {0.547257 ,0.367910 ,0.751766};
+static float N114[3] = {0.725949 ,-0.232568 ,0.647233};
+static float N115[3] = {-0.747182 ,-0.660786 ,0.071280};
+static float N116[3] = {0.931519 ,0.200748 ,0.303270};
+static float N117[3] = {-0.828928 ,0.313757 ,0.463071};
+static float N118[3] = {0.902554 ,-0.370967 ,0.218587};
+static float N119[3] = {-0.879257 ,-0.441851 ,0.177973};
+static float N120[3] = {0.642327 ,0.611901 ,0.461512};
+static float N121[3] = {0.964817 ,-0.202322 ,0.167910};
+static float N122[3] = {0.000000 ,1.000000 ,0.000000};
+#if 0
+static float N123[3] = {-0.980734 ,0.041447 ,0.190900};
+static float N124[3] = {-0.980734 ,0.041447 ,0.190900};
+static float N125[3] = {-0.980734 ,0.041447 ,0.190900};
+static float N126[3] = {0.000000 ,1.000000 ,0.000000};
+static float N127[3] = {0.000000 ,1.000000 ,0.000000};
+static float N128[3] = {0.000000 ,1.000000 ,0.000000};
+static float N129[3] = {0.963250 ,0.004839 ,0.268565};
+static float N130[3] = {0.963250 ,0.004839 ,0.268565};
+static float N131[3] = {0.963250 ,0.004839 ,0.268565};
+static float N132[3] = {0.000000 ,1.000000 ,0.000000};
+static float N133[3] = {0.000000 ,1.000000 ,0.000000};
+static float N134[3] = {0.000000 ,1.000000 ,0.000000};
+#endif
+static float P001[3] = {5.68, -300.95, 1324.70};
+static float P002[3] = {338.69, -219.63, 9677.03};
+static float P003[3] = {12.18, 474.59, 9138.14};
+#if 0
+static float P004[3] = {-7.49, -388.91, 10896.74};
+#endif
+static float P005[3] = {487.51, 198.05, 9350.78};
+static float P006[3] = {-457.61, 68.74, 9427.85};
+static float P007[3] = {156.52, -266.72, 10311.68};
+static float P008[3] = {-185.56, -266.51, 10310.47};
+static float P009[3] = {124.39, -261.46, 1942.34};
+static float P010[3] = {-130.05, -261.46, 1946.03};
+static float P011[3] = {141.07, -320.11, 1239.38};
+static float P012[3] = {156.48, -360.12, 2073.41};
+static float P013[3] = {162.00, -175.88, 2064.44};
+static float P014[3] = {88.16, -87.72, 2064.02};
+static float P015[3] = {-65.21, -96.13, 2064.02};
+static float P016[3] = {-156.48, -180.96, 2064.44};
+static float P017[3] = {-162.00, -368.93, 2082.39};
+static float P018[3] = {-88.16, -439.22, 2082.39};
+static float P019[3] = {65.21, -440.32, 2083.39};
+static float P020[3] = {246.87, -356.02, 2576.95};
+static float P021[3] = {253.17, -111.15, 2567.15};
+static float P022[3] = {132.34, 51.41, 2559.84};
+static float P023[3] = {-97.88, 40.44, 2567.15};
+static float P024[3] = {-222.97, -117.49, 2567.15};
+static float P025[3] = {-252.22, -371.53, 2569.92};
+static float P026[3] = {-108.44, -518.19, 2586.75};
+static float P027[3] = {97.88, -524.79, 2586.75};
+static float P028[3] = {370.03, -421.19, 3419.70};
+static float P029[3] = {351.15, -16.98, 3423.17};
+static float P030[3] = {200.66, 248.46, 3430.37};
+static float P031[3] = {-148.42, 235.02, 3417.91};
+static float P032[3] = {-360.21, -30.27, 3416.84};
+static float P033[3] = {-357.90, -414.89, 3407.04};
+static float P034[3] = {-148.88, -631.35, 3409.90};
+static float P035[3] = {156.38, -632.59, 3419.70};
+static float P036[3] = {462.61, -469.21, 4431.51};
+static float P037[3] = {466.60, 102.25, 4434.98};
+static float P038[3] = {243.05, 474.34, 4562.02};
+static float P039[3] = {-191.23, 474.40, 4554.42};
+static float P040[3] = {-476.12, 111.05, 4451.11};
+static float P041[3] = {-473.36, -470.74, 4444.78};
+static float P042[3] = {-266.95, -748.41, 4447.78};
+static float P043[3] = {211.14, -749.91, 4429.73};
+static float P044[3] = {680.57, -370.27, 5943.46};
+static float P045[3] = {834.01, 363.09, 6360.63};
+static float P046[3] = {371.29, 804.51, 6486.26};
+static float P047[3] = {-291.43, 797.22, 6494.28};
+static float P048[3] = {-784.13, 370.75, 6378.01};
+static float P049[3] = {-743.29, -325.82, 5943.46};
+static float P050[3] = {-383.24, -804.77, 5943.46};
+static float P051[3] = {283.47, -846.09, 5943.46};
+static float iP001[3] = {5.68, -300.95, 1324.70};
+#if 0
+static float iP002[3] = {338.69, -219.63, 9677.03};
+static float iP003[3] = {12.18, 624.93, 8956.39};
+static float iP004[3] = {-7.49, -388.91, 10896.74};
+static float iP005[3] = {487.51, 198.05, 9350.78};
+static float iP006[3] = {-457.61, 199.04, 9353.01};
+static float iP007[3] = {156.52, -266.72, 10311.68};
+static float iP008[3] = {-185.56, -266.51, 10310.47};
+#endif
+static float iP009[3] = {124.39, -261.46, 1942.34};
+static float iP010[3] = {-130.05, -261.46, 1946.03};
+static float iP011[3] = {141.07, -320.11, 1239.38};
+static float iP012[3] = {156.48, -360.12, 2073.41};
+static float iP013[3] = {162.00, -175.88, 2064.44};
+static float iP014[3] = {88.16, -87.72, 2064.02};
+static float iP015[3] = {-65.21, -96.13, 2064.02};
+static float iP016[3] = {-156.48, -180.96, 2064.44};
+static float iP017[3] = {-162.00, -368.93, 2082.39};
+static float iP018[3] = {-88.16, -439.22, 2082.39};
+static float iP019[3] = {65.21, -440.32, 2083.39};
+static float iP020[3] = {246.87, -356.02, 2576.95};
+static float iP021[3] = {253.17, -111.15, 2567.15};
+static float iP022[3] = {132.34, 51.41, 2559.84};
+static float iP023[3] = {-97.88, 40.44, 2567.15};
+static float iP024[3] = {-222.97, -117.49, 2567.15};
+static float iP025[3] = {-252.22, -371.53, 2569.92};
+static float iP026[3] = {-108.44, -518.19, 2586.75};
+static float iP027[3] = {97.88, -524.79, 2586.75};
+static float iP028[3] = {370.03, -421.19, 3419.70};
+static float iP029[3] = {351.15, -16.98, 3423.17};
+static float iP030[3] = {200.66, 248.46, 3430.37};
+static float iP031[3] = {-148.42, 235.02, 3417.91};
+static float iP032[3] = {-360.21, -30.27, 3416.84};
+static float iP033[3] = {-357.90, -414.89, 3407.04};
+static float iP034[3] = {-148.88, -631.35, 3409.90};
+static float iP035[3] = {156.38, -632.59, 3419.70};
+static float iP036[3] = {462.61, -469.21, 4431.51};
+static float iP037[3] = {466.60, 102.25, 4434.98};
+static float iP038[3] = {243.05, 474.34, 4562.02};
+static float iP039[3] = {-191.23, 474.40, 4554.42};
+static float iP040[3] = {-476.12, 111.05, 4451.11};
+static float iP041[3] = {-473.36, -470.74, 4444.78};
+static float iP042[3] = {-266.95, -748.41, 4447.78};
+static float iP043[3] = {211.14, -749.91, 4429.73};
+static float iP044[3] = {680.57, -370.27, 5943.46};
+static float iP045[3] = {834.01, 363.09, 6360.63};
+static float iP046[3] = {371.29, 804.51, 6486.26};
+static float iP047[3] = {-291.43, 797.22, 6494.28};
+static float iP048[3] = {-784.13, 370.75, 6378.01};
+static float iP049[3] = {-743.29, -325.82, 5943.46};
+static float iP050[3] = {-383.24, -804.77, 5943.46};
+static float iP051[3] = {283.47, -846.09, 5943.46};
+static float P052[3] = {599.09, -300.15, 7894.03};
+static float P053[3] = {735.48, 306.26, 7911.92};
+static float P054[3] = {246.22, 558.53, 8460.50};
+static float P055[3] = {-230.41, 559.84, 8473.23};
+static float P056[3] = {-698.66, 320.83, 7902.59};
+static float P057[3] = {-643.29, -299.16, 7902.59};
+static float P058[3] = {-341.47, -719.30, 7902.59};
+static float P059[3] = {252.57, -756.12, 7902.59};
+static float P060[3] = {458.39, -265.31, 9355.44};
+#if 0
+static float P061[3] = {433.38, -161.90, 9503.03};
+#endif
+static float P062[3] = {224.04, 338.75, 9450.30};
+static float P063[3] = {-165.71, 341.04, 9462.35};
+static float P064[3] = {-298.11, 110.13, 10180.37};
+static float P065[3] = {-473.99, -219.71, 9355.44};
+static float P066[3] = {-211.97, -479.87, 9355.44};
+static float P067[3] = {192.86, -491.45, 9348.73};
+static float P068[3] = {-136.29, -319.84, 1228.73};
+static float P069[3] = {1111.17, -314.14, 1314.19};
+static float P070[3] = {-1167.34, -321.61, 1319.45};
+static float P071[3] = {1404.86, -306.66, 1235.45};
+static float P072[3] = {-1409.73, -314.14, 1247.66};
+static float P073[3] = {1254.01, -296.87, 1544.58};
+static float P074[3] = {-1262.09, -291.70, 1504.26};
+static float P075[3] = {965.71, -269.26, 1742.65};
+static float P076[3] = {-900.97, -276.74, 1726.07};
+static float iP068[3] = {-136.29, -319.84, 1228.73};
+static float iP069[3] = {1111.17, -314.14, 1314.19};
+static float iP070[3] = {-1167.34, -321.61, 1319.45};
+static float iP071[3] = {1404.86, -306.66, 1235.45};
+static float iP072[3] = {-1409.73, -314.14, 1247.66};
+static float iP073[3] = {1254.01, -296.87, 1544.58};
+static float iP074[3] = {-1262.09, -291.70, 1504.26};
+static float iP075[3] = {965.71, -269.26, 1742.65};
+static float iP076[3] = {-900.97, -276.74, 1726.07};
+static float P077[3] = {1058.00, -448.81, 8194.66};
+static float P078[3] = {-1016.51, -456.43, 8190.62};
+static float P079[3] = {-1515.96, -676.45, 7754.93};
+static float P080[3] = {1856.75, -830.34, 7296.56};
+static float P081[3] = {1472.16, -497.38, 7399.68};
+static float P082[3] = {-1775.26, -829.51, 7298.46};
+static float P083[3] = {911.09, -252.51, 7510.99};
+static float P084[3] = {-1451.94, -495.62, 7384.30};
+static float P085[3] = {1598.75, -669.26, 7769.90};
+static float P086[3] = {-836.53, -250.08, 7463.25};
+static float P087[3] = {722.87, -158.18, 8006.41};
+static float P088[3] = {-688.86, -162.28, 7993.89};
+static float P089[3] = {-626.92, -185.30, 8364.98};
+static float P090[3] = {647.72, -189.46, 8354.99};
+static float P091[3] = {0.00, 835.01, 5555.62};
+static float P092[3] = {0.00, 1350.18, 5220.86};
+static float P093[3] = {0.00, 1422.94, 5285.27};
+static float P094[3] = {0.00, 1296.75, 5650.19};
+static float P095[3] = {0.00, 795.63, 6493.88};
+static float iP091[3] = {0.00, 835.01, 5555.62};
+static float iP092[3] = {0.00, 1350.18, 5220.86};
+static float iP093[3] = {0.00, 1422.94, 5285.27};
+static float iP094[3] = {0.00, 1296.75, 5650.19};
+static float iP095[3] = {0.00, 795.63, 6493.88};
+#if 0
+static float P096[3] = {-447.38, -165.99, 9499.60};
+#endif
+static float P097[3] = {-194.91, -357.14, 10313.32};
+static float P098[3] = {135.35, -357.66, 10307.94};
+static float iP097[3] = {-194.91, -357.14, 10313.32};
+static float iP098[3] = {135.35, -357.66, 10307.94};
+static float P099[3] = {-380.53, -221.14, 9677.98};
+static float P100[3] = {0.00, 412.99, 9629.33};
+#if 0
+static float P101[3] = {5.70, 567.00, 7862.98};
+#endif
+static float P102[3] = {59.51, -412.55, 10677.58};
+static float iP102[3] = {59.51, -412.55, 10677.58};
+static float P103[3] = {6.50, 484.74, 9009.94};
+#if 0
+static float P104[3] = {-9.86, 567.62, 7858.65};
+#endif
+static float P105[3] = {-41.86, 476.51, 9078.17};
+#if 0
+static float P106[3] = {22.75, 568.13, 7782.83};
+static float P107[3] = {58.93, 568.42, 7775.94};
+#endif
+static float P108[3] = {49.20, 476.83, 9078.24};
+#if 0
+static float P109[3] = {99.21, 566.00, 7858.65};
+#endif
+static float P110[3] = {-187.62, -410.04, 10674.12};
+static float iP110[3] = {-187.62, -410.04, 10674.12};
+static float P111[3] = {-184.25, -318.70, 10723.88};
+static float iP111[3] = {-184.25, -318.70, 10723.88};
+static float P112[3] = {-179.61, -142.81, 10670.26};
+static float P113[3] = {57.43, -147.94, 10675.26};
+static float P114[3] = {54.06, -218.90, 10712.44};
+static float P115[3] = {-186.35, -212.09, 10713.76};
+static float P116[3] = {205.90, -84.61, 10275.97};
+static float P117[3] = {-230.96, -83.26, 10280.09};
+static float iP118[3] = {216.78, -509.17, 10098.94};
+static float iP119[3] = {-313.21, -510.79, 10102.62};
+static float P118[3] = {216.78, -509.17, 10098.94};
+static float P119[3] = {-313.21, -510.79, 10102.62};
+static float P120[3] = {217.95, 96.34, 10161.62};
+static float P121[3] = {71.99, -319.74, 10717.70};
+static float iP121[3] = {71.99, -319.74, 10717.70};
+static float P122[3] = {0.00, 602.74, 5375.84};
+static float iP122[3] = {0.00, 602.74, 5375.84};
+static float P123[3] = {-448.94, -203.14, 9499.60};
+static float P124[3] = {-442.64, -185.20, 9528.07};
+static float P125[3] = {-441.07, -148.05, 9528.07};
+static float P126[3] = {-443.43, -128.84, 9499.60};
+static float P127[3] = {-456.87, -146.78, 9466.67};
+static float P128[3] = {-453.68, -183.93, 9466.67};
+static float P129[3] = {428.43, -124.08, 9503.03};
+static float P130[3] = {419.73, -142.14, 9534.56};
+static float P131[3] = {419.92, -179.96, 9534.56};
+static float P132[3] = {431.20, -199.73, 9505.26};
+static float P133[3] = {442.28, -181.67, 9475.96};
+static float P134[3] = {442.08, -143.84, 9475.96};
+/* *INDENT-ON* */
+
+static void
+Dolphin001(void)
+{
+    glNormal3fv(N071);
+    glBegin(GL_POLYGON);
+    glVertex3fv(P001);
+    glVertex3fv(P068);
+    glVertex3fv(P010);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glVertex3fv(P068);
+    glVertex3fv(P076);
+    glVertex3fv(P010);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glVertex3fv(P068);
+    glVertex3fv(P070);
+    glVertex3fv(P076);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glVertex3fv(P076);
+    glVertex3fv(P070);
+    glVertex3fv(P074);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glVertex3fv(P070);
+    glVertex3fv(P072);
+    glVertex3fv(P074);
+    glEnd();
+    glNormal3fv(N119);
+    glBegin(GL_POLYGON);
+    glVertex3fv(P072);
+    glVertex3fv(P070);
+    glVertex3fv(P074);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glVertex3fv(P074);
+    glVertex3fv(P070);
+    glVertex3fv(P076);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glVertex3fv(P070);
+    glVertex3fv(P068);
+    glVertex3fv(P076);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glVertex3fv(P076);
+    glVertex3fv(P068);
+    glVertex3fv(P010);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glVertex3fv(P068);
+    glVertex3fv(P001);
+    glVertex3fv(P010);
+    glEnd();
+}
+
+static void
+Dolphin002(void)
+{
+    glNormal3fv(N071);
+    glBegin(GL_POLYGON);
+    glVertex3fv(P011);
+    glVertex3fv(P001);
+    glVertex3fv(P009);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glVertex3fv(P075);
+    glVertex3fv(P011);
+    glVertex3fv(P009);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glVertex3fv(P069);
+    glVertex3fv(P011);
+    glVertex3fv(P075);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glVertex3fv(P069);
+    glVertex3fv(P075);
+    glVertex3fv(P073);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glVertex3fv(P071);
+    glVertex3fv(P069);
+    glVertex3fv(P073);
+    glEnd();
+    glNormal3fv(N119);
+    glBegin(GL_POLYGON);
+    glVertex3fv(P001);
+    glVertex3fv(P011);
+    glVertex3fv(P009);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glVertex3fv(P009);
+    glVertex3fv(P011);
+    glVertex3fv(P075);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glVertex3fv(P011);
+    glVertex3fv(P069);
+    glVertex3fv(P075);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glVertex3fv(P069);
+    glVertex3fv(P073);
+    glVertex3fv(P075);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glVertex3fv(P069);
+    glVertex3fv(P071);
+    glVertex3fv(P073);
+    glEnd();
+}
+
+static void
+Dolphin003(void)
+{
+    glBegin(GL_POLYGON);
+    glNormal3fv(N018);
+    glVertex3fv(P018);
+    glNormal3fv(N001);
+    glVertex3fv(P001);
+    glNormal3fv(N019);
+    glVertex3fv(P019);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N019);
+    glVertex3fv(P019);
+    glNormal3fv(N001);
+    glVertex3fv(P001);
+    glNormal3fv(N012);
+    glVertex3fv(P012);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N017);
+    glVertex3fv(P017);
+    glNormal3fv(N001);
+    glVertex3fv(P001);
+    glNormal3fv(N018);
+    glVertex3fv(P018);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N001);
+    glVertex3fv(P001);
+    glNormal3fv(N017);
+    glVertex3fv(P017);
+    glNormal3fv(N016);
+    glVertex3fv(P016);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N001);
+    glVertex3fv(P001);
+    glNormal3fv(N013);
+    glVertex3fv(P013);
+    glNormal3fv(N012);
+    glVertex3fv(P012);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N001);
+    glVertex3fv(P001);
+    glNormal3fv(N016);
+    glVertex3fv(P016);
+    glNormal3fv(N015);
+    glVertex3fv(P015);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N001);
+    glVertex3fv(P001);
+    glNormal3fv(N014);
+    glVertex3fv(P014);
+    glNormal3fv(N013);
+    glVertex3fv(P013);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N001);
+    glVertex3fv(P001);
+    glNormal3fv(N015);
+    glVertex3fv(P015);
+    glNormal3fv(N014);
+    glVertex3fv(P014);
+    glEnd();
+}
+
+static void
+Dolphin004(void)
+{
+    glBegin(GL_POLYGON);
+    glNormal3fv(N014);
+    glVertex3fv(P014);
+    glNormal3fv(N015);
+    glVertex3fv(P015);
+    glNormal3fv(N023);
+    glVertex3fv(P023);
+    glNormal3fv(N022);
+    glVertex3fv(P022);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N015);
+    glVertex3fv(P015);
+    glNormal3fv(N016);
+    glVertex3fv(P016);
+    glNormal3fv(N024);
+    glVertex3fv(P024);
+    glNormal3fv(N023);
+    glVertex3fv(P023);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N016);
+    glVertex3fv(P016);
+    glNormal3fv(N017);
+    glVertex3fv(P017);
+    glNormal3fv(N025);
+    glVertex3fv(P025);
+    glNormal3fv(N024);
+    glVertex3fv(P024);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N017);
+    glVertex3fv(P017);
+    glNormal3fv(N018);
+    glVertex3fv(P018);
+    glNormal3fv(N026);
+    glVertex3fv(P026);
+    glNormal3fv(N025);
+    glVertex3fv(P025);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N013);
+    glVertex3fv(P013);
+    glNormal3fv(N014);
+    glVertex3fv(P014);
+    glNormal3fv(N022);
+    glVertex3fv(P022);
+    glNormal3fv(N021);
+    glVertex3fv(P021);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N012);
+    glVertex3fv(P012);
+    glNormal3fv(N013);
+    glVertex3fv(P013);
+    glNormal3fv(N021);
+    glVertex3fv(P021);
+    glNormal3fv(N020);
+    glVertex3fv(P020);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N018);
+    glVertex3fv(P018);
+    glNormal3fv(N019);
+    glVertex3fv(P019);
+    glNormal3fv(N027);
+    glVertex3fv(P027);
+    glNormal3fv(N026);
+    glVertex3fv(P026);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N019);
+    glVertex3fv(P019);
+    glNormal3fv(N012);
+    glVertex3fv(P012);
+    glNormal3fv(N020);
+    glVertex3fv(P020);
+    glNormal3fv(N027);
+    glVertex3fv(P027);
+    glEnd();
+}
+
+static void
+Dolphin005(void)
+{
+    glBegin(GL_POLYGON);
+    glNormal3fv(N022);
+    glVertex3fv(P022);
+    glNormal3fv(N023);
+    glVertex3fv(P023);
+    glNormal3fv(N031);
+    glVertex3fv(P031);
+    glNormal3fv(N030);
+    glVertex3fv(P030);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N021);
+    glVertex3fv(P021);
+    glNormal3fv(N022);
+    glVertex3fv(P022);
+    glNormal3fv(N030);
+    glVertex3fv(P030);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N021);
+    glVertex3fv(P021);
+    glNormal3fv(N030);
+    glVertex3fv(P030);
+    glNormal3fv(N029);
+    glVertex3fv(P029);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N023);
+    glVertex3fv(P023);
+    glNormal3fv(N024);
+    glVertex3fv(P024);
+    glNormal3fv(N031);
+    glVertex3fv(P031);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N024);
+    glVertex3fv(P024);
+    glNormal3fv(N032);
+    glVertex3fv(P032);
+    glNormal3fv(N031);
+    glVertex3fv(P031);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N024);
+    glVertex3fv(P024);
+    glNormal3fv(N025);
+    glVertex3fv(P025);
+    glNormal3fv(N032);
+    glVertex3fv(P032);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N025);
+    glVertex3fv(P025);
+    glNormal3fv(N033);
+    glVertex3fv(P033);
+    glNormal3fv(N032);
+    glVertex3fv(P032);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N020);
+    glVertex3fv(P020);
+    glNormal3fv(N021);
+    glVertex3fv(P021);
+    glNormal3fv(N029);
+    glVertex3fv(P029);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N020);
+    glVertex3fv(P020);
+    glNormal3fv(N029);
+    glVertex3fv(P029);
+    glNormal3fv(N028);
+    glVertex3fv(P028);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N027);
+    glVertex3fv(P027);
+    glNormal3fv(N020);
+    glVertex3fv(P020);
+    glNormal3fv(N028);
+    glVertex3fv(P028);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N027);
+    glVertex3fv(P027);
+    glNormal3fv(N028);
+    glVertex3fv(P028);
+    glNormal3fv(N035);
+    glVertex3fv(P035);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N025);
+    glVertex3fv(P025);
+    glNormal3fv(N026);
+    glVertex3fv(P026);
+    glNormal3fv(N033);
+    glVertex3fv(P033);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N033);
+    glVertex3fv(P033);
+    glNormal3fv(N026);
+    glVertex3fv(P026);
+    glNormal3fv(N034);
+    glVertex3fv(P034);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N026);
+    glVertex3fv(P026);
+    glNormal3fv(N027);
+    glVertex3fv(P027);
+    glNormal3fv(N035);
+    glVertex3fv(P035);
+    glNormal3fv(N034);
+    glVertex3fv(P034);
+    glEnd();
+}
+
+static void
+Dolphin006(void)
+{
+    glBegin(GL_POLYGON);
+    glNormal3fv(N092);
+    glVertex3fv(P092);
+    glNormal3fv(N093);
+    glVertex3fv(P093);
+    glNormal3fv(N094);
+    glVertex3fv(P094);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N093);
+    glVertex3fv(P093);
+    glNormal3fv(N092);
+    glVertex3fv(P092);
+    glNormal3fv(N094);
+    glVertex3fv(P094);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N092);
+    glVertex3fv(P092);
+    glNormal3fv(N091);
+    glVertex3fv(P091);
+    glNormal3fv(N095);
+    glVertex3fv(P095);
+    glNormal3fv(N094);
+    glVertex3fv(P094);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N091);
+    glVertex3fv(P091);
+    glNormal3fv(N092);
+    glVertex3fv(P092);
+    glNormal3fv(N094);
+    glVertex3fv(P094);
+    glNormal3fv(N095);
+    glVertex3fv(P095);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N122);
+    glVertex3fv(P122);
+    glNormal3fv(N095);
+    glVertex3fv(P095);
+    glNormal3fv(N091);
+    glVertex3fv(P091);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N122);
+    glVertex3fv(P122);
+    glNormal3fv(N091);
+    glVertex3fv(P091);
+    glNormal3fv(N095);
+    glVertex3fv(P095);
+    glEnd();
+}
+
+static void
+Dolphin007(void)
+{
+    glBegin(GL_POLYGON);
+    glNormal3fv(N030);
+    glVertex3fv(P030);
+    glNormal3fv(N031);
+    glVertex3fv(P031);
+    glNormal3fv(N039);
+    glVertex3fv(P039);
+    glNormal3fv(N038);
+    glVertex3fv(P038);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N029);
+    glVertex3fv(P029);
+    glNormal3fv(N030);
+    glVertex3fv(P030);
+    glNormal3fv(N038);
+    glVertex3fv(P038);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N029);
+    glVertex3fv(P029);
+    glNormal3fv(N038);
+    glVertex3fv(P038);
+    glNormal3fv(N037);
+    glVertex3fv(P037);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N028);
+    glVertex3fv(P028);
+    glNormal3fv(N029);
+    glVertex3fv(P029);
+    glNormal3fv(N037);
+    glVertex3fv(P037);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N028);
+    glVertex3fv(P028);
+    glNormal3fv(N037);
+    glVertex3fv(P037);
+    glNormal3fv(N036);
+    glVertex3fv(P036);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N035);
+    glVertex3fv(P035);
+    glNormal3fv(N028);
+    glVertex3fv(P028);
+    glNormal3fv(N036);
+    glVertex3fv(P036);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N035);
+    glVertex3fv(P035);
+    glNormal3fv(N036);
+    glVertex3fv(P036);
+    glNormal3fv(N043);
+    glVertex3fv(P043);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N034);
+    glVertex3fv(P034);
+    glNormal3fv(N035);
+    glVertex3fv(P035);
+    glNormal3fv(N043);
+    glVertex3fv(P043);
+    glNormal3fv(N042);
+    glVertex3fv(P042);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N033);
+    glVertex3fv(P033);
+    glNormal3fv(N034);
+    glVertex3fv(P034);
+    glNormal3fv(N042);
+    glVertex3fv(P042);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N033);
+    glVertex3fv(P033);
+    glNormal3fv(N042);
+    glVertex3fv(P042);
+    glNormal3fv(N041);
+    glVertex3fv(P041);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N031);
+    glVertex3fv(P031);
+    glNormal3fv(N032);
+    glVertex3fv(P032);
+    glNormal3fv(N039);
+    glVertex3fv(P039);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N039);
+    glVertex3fv(P039);
+    glNormal3fv(N032);
+    glVertex3fv(P032);
+    glNormal3fv(N040);
+    glVertex3fv(P040);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N032);
+    glVertex3fv(P032);
+    glNormal3fv(N033);
+    glVertex3fv(P033);
+    glNormal3fv(N040);
+    glVertex3fv(P040);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N040);
+    glVertex3fv(P040);
+    glNormal3fv(N033);
+    glVertex3fv(P033);
+    glNormal3fv(N041);
+    glVertex3fv(P041);
+    glEnd();
+}
+
+static void
+Dolphin008(void)
+{
+    glBegin(GL_POLYGON);
+    glNormal3fv(N042);
+    glVertex3fv(P042);
+    glNormal3fv(N043);
+    glVertex3fv(P043);
+    glNormal3fv(N051);
+    glVertex3fv(P051);
+    glNormal3fv(N050);
+    glVertex3fv(P050);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N043);
+    glVertex3fv(P043);
+    glNormal3fv(N036);
+    glVertex3fv(P036);
+    glNormal3fv(N051);
+    glVertex3fv(P051);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N051);
+    glVertex3fv(P051);
+    glNormal3fv(N036);
+    glVertex3fv(P036);
+    glNormal3fv(N044);
+    glVertex3fv(P044);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N041);
+    glVertex3fv(P041);
+    glNormal3fv(N042);
+    glVertex3fv(P042);
+    glNormal3fv(N050);
+    glVertex3fv(P050);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N041);
+    glVertex3fv(P041);
+    glNormal3fv(N050);
+    glVertex3fv(P050);
+    glNormal3fv(N049);
+    glVertex3fv(P049);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N036);
+    glVertex3fv(P036);
+    glNormal3fv(N037);
+    glVertex3fv(P037);
+    glNormal3fv(N044);
+    glVertex3fv(P044);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N044);
+    glVertex3fv(P044);
+    glNormal3fv(N037);
+    glVertex3fv(P037);
+    glNormal3fv(N045);
+    glVertex3fv(P045);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N040);
+    glVertex3fv(P040);
+    glNormal3fv(N041);
+    glVertex3fv(P041);
+    glNormal3fv(N049);
+    glVertex3fv(P049);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N040);
+    glVertex3fv(P040);
+    glNormal3fv(N049);
+    glVertex3fv(P049);
+    glNormal3fv(N048);
+    glVertex3fv(P048);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N039);
+    glVertex3fv(P039);
+    glNormal3fv(N040);
+    glVertex3fv(P040);
+    glNormal3fv(N048);
+    glVertex3fv(P048);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N039);
+    glVertex3fv(P039);
+    glNormal3fv(N048);
+    glVertex3fv(P048);
+    glNormal3fv(N047);
+    glVertex3fv(P047);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N037);
+    glVertex3fv(P037);
+    glNormal3fv(N038);
+    glVertex3fv(P038);
+    glNormal3fv(N045);
+    glVertex3fv(P045);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N038);
+    glVertex3fv(P038);
+    glNormal3fv(N046);
+    glVertex3fv(P046);
+    glNormal3fv(N045);
+    glVertex3fv(P045);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N038);
+    glVertex3fv(P038);
+    glNormal3fv(N039);
+    glVertex3fv(P039);
+    glNormal3fv(N047);
+    glVertex3fv(P047);
+    glNormal3fv(N046);
+    glVertex3fv(P046);
+    glEnd();
+}
+
+static void
+Dolphin009(void)
+{
+    glBegin(GL_POLYGON);
+    glNormal3fv(N050);
+    glVertex3fv(P050);
+    glNormal3fv(N051);
+    glVertex3fv(P051);
+    glNormal3fv(N059);
+    glVertex3fv(P059);
+    glNormal3fv(N058);
+    glVertex3fv(P058);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N051);
+    glVertex3fv(P051);
+    glNormal3fv(N044);
+    glVertex3fv(P044);
+    glNormal3fv(N059);
+    glVertex3fv(P059);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N059);
+    glVertex3fv(P059);
+    glNormal3fv(N044);
+    glVertex3fv(P044);
+    glNormal3fv(N052);
+    glVertex3fv(P052);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N044);
+    glVertex3fv(P044);
+    glNormal3fv(N045);
+    glVertex3fv(P045);
+    glNormal3fv(N053);
+    glVertex3fv(P053);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N044);
+    glVertex3fv(P044);
+    glNormal3fv(N053);
+    glVertex3fv(P053);
+    glNormal3fv(N052);
+    glVertex3fv(P052);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N049);
+    glVertex3fv(P049);
+    glNormal3fv(N050);
+    glVertex3fv(P050);
+    glNormal3fv(N058);
+    glVertex3fv(P058);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N049);
+    glVertex3fv(P049);
+    glNormal3fv(N058);
+    glVertex3fv(P058);
+    glNormal3fv(N057);
+    glVertex3fv(P057);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N048);
+    glVertex3fv(P048);
+    glNormal3fv(N049);
+    glVertex3fv(P049);
+    glNormal3fv(N057);
+    glVertex3fv(P057);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N048);
+    glVertex3fv(P048);
+    glNormal3fv(N057);
+    glVertex3fv(P057);
+    glNormal3fv(N056);
+    glVertex3fv(P056);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N047);
+    glVertex3fv(P047);
+    glNormal3fv(N048);
+    glVertex3fv(P048);
+    glNormal3fv(N056);
+    glVertex3fv(P056);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N047);
+    glVertex3fv(P047);
+    glNormal3fv(N056);
+    glVertex3fv(P056);
+    glNormal3fv(N055);
+    glVertex3fv(P055);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N045);
+    glVertex3fv(P045);
+    glNormal3fv(N046);
+    glVertex3fv(P046);
+    glNormal3fv(N053);
+    glVertex3fv(P053);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N046);
+    glVertex3fv(P046);
+    glNormal3fv(N054);
+    glVertex3fv(P054);
+    glNormal3fv(N053);
+    glVertex3fv(P053);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N046);
+    glVertex3fv(P046);
+    glNormal3fv(N047);
+    glVertex3fv(P047);
+    glNormal3fv(N055);
+    glVertex3fv(P055);
+    glNormal3fv(N054);
+    glVertex3fv(P054);
+    glEnd();
+}
+
+static void
+Dolphin010(void)
+{
+    glBegin(GL_POLYGON);
+    glNormal3fv(N080);
+    glVertex3fv(P080);
+    glNormal3fv(N081);
+    glVertex3fv(P081);
+    glNormal3fv(N085);
+    glVertex3fv(P085);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N081);
+    glVertex3fv(P081);
+    glNormal3fv(N083);
+    glVertex3fv(P083);
+    glNormal3fv(N085);
+    glVertex3fv(P085);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N085);
+    glVertex3fv(P085);
+    glNormal3fv(N083);
+    glVertex3fv(P083);
+    glNormal3fv(N077);
+    glVertex3fv(P077);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N083);
+    glVertex3fv(P083);
+    glNormal3fv(N087);
+    glVertex3fv(P087);
+    glNormal3fv(N077);
+    glVertex3fv(P077);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N077);
+    glVertex3fv(P077);
+    glNormal3fv(N087);
+    glVertex3fv(P087);
+    glNormal3fv(N090);
+    glVertex3fv(P090);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N081);
+    glVertex3fv(P081);
+    glNormal3fv(N080);
+    glVertex3fv(P080);
+    glNormal3fv(N085);
+    glVertex3fv(P085);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N083);
+    glVertex3fv(P083);
+    glNormal3fv(N081);
+    glVertex3fv(P081);
+    glNormal3fv(N085);
+    glVertex3fv(P085);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N083);
+    glVertex3fv(P083);
+    glNormal3fv(N085);
+    glVertex3fv(P085);
+    glNormal3fv(N077);
+    glVertex3fv(P077);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N087);
+    glVertex3fv(P087);
+    glNormal3fv(N083);
+    glVertex3fv(P083);
+    glNormal3fv(N077);
+    glVertex3fv(P077);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N087);
+    glVertex3fv(P087);
+    glNormal3fv(N077);
+    glVertex3fv(P077);
+    glNormal3fv(N090);
+    glVertex3fv(P090);
+    glEnd();
+}
+
+static void
+Dolphin011(void)
+{
+    glBegin(GL_POLYGON);
+    glNormal3fv(N082);
+    glVertex3fv(P082);
+    glNormal3fv(N084);
+    glVertex3fv(P084);
+    glNormal3fv(N079);
+    glVertex3fv(P079);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N084);
+    glVertex3fv(P084);
+    glNormal3fv(N086);
+    glVertex3fv(P086);
+    glNormal3fv(N079);
+    glVertex3fv(P079);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N079);
+    glVertex3fv(P079);
+    glNormal3fv(N086);
+    glVertex3fv(P086);
+    glNormal3fv(N078);
+    glVertex3fv(P078);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N086);
+    glVertex3fv(P086);
+    glNormal3fv(N088);
+    glVertex3fv(P088);
+    glNormal3fv(N078);
+    glVertex3fv(P078);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N078);
+    glVertex3fv(P078);
+    glNormal3fv(N088);
+    glVertex3fv(P088);
+    glNormal3fv(N089);
+    glVertex3fv(P089);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N088);
+    glVertex3fv(P088);
+    glNormal3fv(N086);
+    glVertex3fv(P086);
+    glNormal3fv(N089);
+    glVertex3fv(P089);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N089);
+    glVertex3fv(P089);
+    glNormal3fv(N086);
+    glVertex3fv(P086);
+    glNormal3fv(N078);
+    glVertex3fv(P078);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N086);
+    glVertex3fv(P086);
+    glNormal3fv(N084);
+    glVertex3fv(P084);
+    glNormal3fv(N078);
+    glVertex3fv(P078);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N078);
+    glVertex3fv(P078);
+    glNormal3fv(N084);
+    glVertex3fv(P084);
+    glNormal3fv(N079);
+    glVertex3fv(P079);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N084);
+    glVertex3fv(P084);
+    glNormal3fv(N082);
+    glVertex3fv(P082);
+    glNormal3fv(N079);
+    glVertex3fv(P079);
+    glEnd();
+}
+
+static void
+Dolphin012(void)
+{
+    glBegin(GL_POLYGON);
+    glNormal3fv(N058);
+    glVertex3fv(P058);
+    glNormal3fv(N059);
+    glVertex3fv(P059);
+    glNormal3fv(N067);
+    glVertex3fv(P067);
+    glNormal3fv(N066);
+    glVertex3fv(P066);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N059);
+    glVertex3fv(P059);
+    glNormal3fv(N052);
+    glVertex3fv(P052);
+    glNormal3fv(N060);
+    glVertex3fv(P060);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N059);
+    glVertex3fv(P059);
+    glNormal3fv(N060);
+    glVertex3fv(P060);
+    glNormal3fv(N067);
+    glVertex3fv(P067);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N058);
+    glVertex3fv(P058);
+    glNormal3fv(N066);
+    glVertex3fv(P066);
+    glNormal3fv(N065);
+    glVertex3fv(P065);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N058);
+    glVertex3fv(P058);
+    glNormal3fv(N065);
+    glVertex3fv(P065);
+    glNormal3fv(N057);
+    glVertex3fv(P057);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N056);
+    glVertex3fv(P056);
+    glNormal3fv(N057);
+    glVertex3fv(P057);
+    glNormal3fv(N065);
+    glVertex3fv(P065);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N056);
+    glVertex3fv(P056);
+    glNormal3fv(N065);
+    glVertex3fv(P065);
+    glNormal3fv(N006);
+    glVertex3fv(P006);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N056);
+    glVertex3fv(P056);
+    glNormal3fv(N006);
+    glVertex3fv(P006);
+    glNormal3fv(N063);
+    glVertex3fv(P063);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N056);
+    glVertex3fv(P056);
+    glNormal3fv(N063);
+    glVertex3fv(P063);
+    glNormal3fv(N055);
+    glVertex3fv(P055);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N054);
+    glVertex3fv(P054);
+    glNormal3fv(N062);
+    glVertex3fv(P062);
+    glNormal3fv(N005);
+    glVertex3fv(P005);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N054);
+    glVertex3fv(P054);
+    glNormal3fv(N005);
+    glVertex3fv(P005);
+    glNormal3fv(N053);
+    glVertex3fv(P053);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N052);
+    glVertex3fv(P052);
+    glNormal3fv(N053);
+    glVertex3fv(P053);
+    glNormal3fv(N005);
+    glVertex3fv(P005);
+    glNormal3fv(N060);
+    glVertex3fv(P060);
+    glEnd();
+}
+
+static void
+Dolphin013(void)
+{
+    glBegin(GL_POLYGON);
+    glNormal3fv(N116);
+    glVertex3fv(P116);
+    glNormal3fv(N117);
+    glVertex3fv(P117);
+    glNormal3fv(N112);
+    glVertex3fv(P112);
+    glNormal3fv(N113);
+    glVertex3fv(P113);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N114);
+    glVertex3fv(P114);
+    glNormal3fv(N113);
+    glVertex3fv(P113);
+    glNormal3fv(N112);
+    glVertex3fv(P112);
+    glNormal3fv(N115);
+    glVertex3fv(P115);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N114);
+    glVertex3fv(P114);
+    glNormal3fv(N116);
+    glVertex3fv(P116);
+    glNormal3fv(N113);
+    glVertex3fv(P113);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N114);
+    glVertex3fv(P114);
+    glNormal3fv(N007);
+    glVertex3fv(P007);
+    glNormal3fv(N116);
+    glVertex3fv(P116);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N007);
+    glVertex3fv(P007);
+    glNormal3fv(N002);
+    glVertex3fv(P002);
+    glNormal3fv(N116);
+    glVertex3fv(P116);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glVertex3fv(P002);
+    glVertex3fv(P007);
+    glVertex3fv(P008);
+    glVertex3fv(P099);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glVertex3fv(P007);
+    glVertex3fv(P114);
+    glVertex3fv(P115);
+    glVertex3fv(P008);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N117);
+    glVertex3fv(P117);
+    glNormal3fv(N099);
+    glVertex3fv(P099);
+    glNormal3fv(N008);
+    glVertex3fv(P008);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N117);
+    glVertex3fv(P117);
+    glNormal3fv(N008);
+    glVertex3fv(P008);
+    glNormal3fv(N112);
+    glVertex3fv(P112);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N112);
+    glVertex3fv(P112);
+    glNormal3fv(N008);
+    glVertex3fv(P008);
+    glNormal3fv(N115);
+    glVertex3fv(P115);
+    glEnd();
+}
+
+static void
+Dolphin014(void)
+{
+    glBegin(GL_POLYGON);
+    glNormal3fv(N111);
+    glVertex3fv(P111);
+    glNormal3fv(N110);
+    glVertex3fv(P110);
+    glNormal3fv(N102);
+    glVertex3fv(P102);
+    glNormal3fv(N121);
+    glVertex3fv(P121);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N111);
+    glVertex3fv(P111);
+    glNormal3fv(N097);
+    glVertex3fv(P097);
+    glNormal3fv(N110);
+    glVertex3fv(P110);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N097);
+    glVertex3fv(P097);
+    glNormal3fv(N119);
+    glVertex3fv(P119);
+    glNormal3fv(N110);
+    glVertex3fv(P110);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N097);
+    glVertex3fv(P097);
+    glNormal3fv(N099);
+    glVertex3fv(P099);
+    glNormal3fv(N119);
+    glVertex3fv(P119);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N099);
+    glVertex3fv(P099);
+    glNormal3fv(N065);
+    glVertex3fv(P065);
+    glNormal3fv(N119);
+    glVertex3fv(P119);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N065);
+    glVertex3fv(P065);
+    glNormal3fv(N066);
+    glVertex3fv(P066);
+    glNormal3fv(N119);
+    glVertex3fv(P119);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glVertex3fv(P098);
+    glVertex3fv(P097);
+    glVertex3fv(P111);
+    glVertex3fv(P121);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glVertex3fv(P002);
+    glVertex3fv(P099);
+    glVertex3fv(P097);
+    glVertex3fv(P098);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N110);
+    glVertex3fv(P110);
+    glNormal3fv(N119);
+    glVertex3fv(P119);
+    glNormal3fv(N118);
+    glVertex3fv(P118);
+    glNormal3fv(N102);
+    glVertex3fv(P102);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N119);
+    glVertex3fv(P119);
+    glNormal3fv(N066);
+    glVertex3fv(P066);
+    glNormal3fv(N067);
+    glVertex3fv(P067);
+    glNormal3fv(N118);
+    glVertex3fv(P118);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N067);
+    glVertex3fv(P067);
+    glNormal3fv(N060);
+    glVertex3fv(P060);
+    glNormal3fv(N002);
+    glVertex3fv(P002);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N067);
+    glVertex3fv(P067);
+    glNormal3fv(N002);
+    glVertex3fv(P002);
+    glNormal3fv(N118);
+    glVertex3fv(P118);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N118);
+    glVertex3fv(P118);
+    glNormal3fv(N002);
+    glVertex3fv(P002);
+    glNormal3fv(N098);
+    glVertex3fv(P098);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N118);
+    glVertex3fv(P118);
+    glNormal3fv(N098);
+    glVertex3fv(P098);
+    glNormal3fv(N102);
+    glVertex3fv(P102);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N102);
+    glVertex3fv(P102);
+    glNormal3fv(N098);
+    glVertex3fv(P098);
+    glNormal3fv(N121);
+    glVertex3fv(P121);
+    glEnd();
+}
+
+static void
+Dolphin015(void)
+{
+    glBegin(GL_POLYGON);
+    glNormal3fv(N055);
+    glVertex3fv(P055);
+    glNormal3fv(N003);
+    glVertex3fv(P003);
+    glNormal3fv(N054);
+    glVertex3fv(P054);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N003);
+    glVertex3fv(P003);
+    glNormal3fv(N055);
+    glVertex3fv(P055);
+    glNormal3fv(N063);
+    glVertex3fv(P063);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N003);
+    glVertex3fv(P003);
+    glNormal3fv(N063);
+    glVertex3fv(P063);
+    glNormal3fv(N100);
+    glVertex3fv(P100);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N003);
+    glVertex3fv(P003);
+    glNormal3fv(N100);
+    glVertex3fv(P100);
+    glNormal3fv(N054);
+    glVertex3fv(P054);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N054);
+    glVertex3fv(P054);
+    glNormal3fv(N100);
+    glVertex3fv(P100);
+    glNormal3fv(N062);
+    glVertex3fv(P062);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N100);
+    glVertex3fv(P100);
+    glNormal3fv(N064);
+    glVertex3fv(P064);
+    glNormal3fv(N120);
+    glVertex3fv(P120);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N100);
+    glVertex3fv(P100);
+    glNormal3fv(N063);
+    glVertex3fv(P063);
+    glNormal3fv(N064);
+    glVertex3fv(P064);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N063);
+    glVertex3fv(P063);
+    glNormal3fv(N006);
+    glVertex3fv(P006);
+    glNormal3fv(N064);
+    glVertex3fv(P064);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N064);
+    glVertex3fv(P064);
+    glNormal3fv(N006);
+    glVertex3fv(P006);
+    glNormal3fv(N099);
+    glVertex3fv(P099);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N064);
+    glVertex3fv(P064);
+    glNormal3fv(N099);
+    glVertex3fv(P099);
+    glNormal3fv(N117);
+    glVertex3fv(P117);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N120);
+    glVertex3fv(P120);
+    glNormal3fv(N064);
+    glVertex3fv(P064);
+    glNormal3fv(N117);
+    glVertex3fv(P117);
+    glNormal3fv(N116);
+    glVertex3fv(P116);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N006);
+    glVertex3fv(P006);
+    glNormal3fv(N065);
+    glVertex3fv(P065);
+    glNormal3fv(N099);
+    glVertex3fv(P099);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N062);
+    glVertex3fv(P062);
+    glNormal3fv(N100);
+    glVertex3fv(P100);
+    glNormal3fv(N120);
+    glVertex3fv(P120);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N005);
+    glVertex3fv(P005);
+    glNormal3fv(N062);
+    glVertex3fv(P062);
+    glNormal3fv(N120);
+    glVertex3fv(P120);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N005);
+    glVertex3fv(P005);
+    glNormal3fv(N120);
+    glVertex3fv(P120);
+    glNormal3fv(N002);
+    glVertex3fv(P002);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N002);
+    glVertex3fv(P002);
+    glNormal3fv(N120);
+    glVertex3fv(P120);
+    glNormal3fv(N116);
+    glVertex3fv(P116);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glNormal3fv(N060);
+    glVertex3fv(P060);
+    glNormal3fv(N005);
+    glVertex3fv(P005);
+    glNormal3fv(N002);
+    glVertex3fv(P002);
+    glEnd();
+}
+
+static void
+Dolphin016(void)
+{
+
+    glDisable(GL_DEPTH_TEST);
+    glBegin(GL_POLYGON);
+    glVertex3fv(P123);
+    glVertex3fv(P124);
+    glVertex3fv(P125);
+    glVertex3fv(P126);
+    glVertex3fv(P127);
+    glVertex3fv(P128);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glVertex3fv(P129);
+    glVertex3fv(P130);
+    glVertex3fv(P131);
+    glVertex3fv(P132);
+    glVertex3fv(P133);
+    glVertex3fv(P134);
+    glEnd();
+    glBegin(GL_POLYGON);
+    glVertex3fv(P103);
+    glVertex3fv(P105);
+    glVertex3fv(P108);
+    glEnd();
+    glEnable(GL_DEPTH_TEST);
+}
+
+void
+DrawDolphin(fishRec * fish)
+{
+    float seg0, seg1, seg2, seg3, seg4, seg5, seg6, seg7;
+    float pitch, thrash, chomp;
+
+    fish->htail = (int) (fish->htail - (int) (10.0 * fish->v)) % 360;
+
+    thrash = 70.0 * fish->v;
+
+    seg0 = 1.0 * thrash * sin((fish->htail) * RRAD);
+    seg3 = 1.0 * thrash * sin((fish->htail) * RRAD);
+    seg1 = 2.0 * thrash * sin((fish->htail + 4.0) * RRAD);
+    seg2 = 3.0 * thrash * sin((fish->htail + 6.0) * RRAD);
+    seg4 = 4.0 * thrash * sin((fish->htail + 10.0) * RRAD);
+    seg5 = 4.5 * thrash * sin((fish->htail + 15.0) * RRAD);
+    seg6 = 5.0 * thrash * sin((fish->htail + 20.0) * RRAD);
+    seg7 = 6.0 * thrash * sin((fish->htail + 30.0) * RRAD);
+
+    pitch = fish->v * sin((fish->htail + 180.0) * RRAD);
+
+    if (fish->v > 2.0) {
+        chomp = -(fish->v - 2.0) * 200.0;
+    }
+    chomp = 100.0;
+
+    P012[1] = iP012[1] + seg5;
+    P013[1] = iP013[1] + seg5;
+    P014[1] = iP014[1] + seg5;
+    P015[1] = iP015[1] + seg5;
+    P016[1] = iP016[1] + seg5;
+    P017[1] = iP017[1] + seg5;
+    P018[1] = iP018[1] + seg5;
+    P019[1] = iP019[1] + seg5;
+
+    P020[1] = iP020[1] + seg4;
+    P021[1] = iP021[1] + seg4;
+    P022[1] = iP022[1] + seg4;
+    P023[1] = iP023[1] + seg4;
+    P024[1] = iP024[1] + seg4;
+    P025[1] = iP025[1] + seg4;
+    P026[1] = iP026[1] + seg4;
+    P027[1] = iP027[1] + seg4;
+
+    P028[1] = iP028[1] + seg2;
+    P029[1] = iP029[1] + seg2;
+    P030[1] = iP030[1] + seg2;
+    P031[1] = iP031[1] + seg2;
+    P032[1] = iP032[1] + seg2;
+    P033[1] = iP033[1] + seg2;
+    P034[1] = iP034[1] + seg2;
+    P035[1] = iP035[1] + seg2;
+
+    P036[1] = iP036[1] + seg1;
+    P037[1] = iP037[1] + seg1;
+    P038[1] = iP038[1] + seg1;
+    P039[1] = iP039[1] + seg1;
+    P040[1] = iP040[1] + seg1;
+    P041[1] = iP041[1] + seg1;
+    P042[1] = iP042[1] + seg1;
+    P043[1] = iP043[1] + seg1;
+
+    P044[1] = iP044[1] + seg0;
+    P045[1] = iP045[1] + seg0;
+    P046[1] = iP046[1] + seg0;
+    P047[1] = iP047[1] + seg0;
+    P048[1] = iP048[1] + seg0;
+    P049[1] = iP049[1] + seg0;
+    P050[1] = iP050[1] + seg0;
+    P051[1] = iP051[1] + seg0;
+
+    P009[1] = iP009[1] + seg6;
+    P010[1] = iP010[1] + seg6;
+    P075[1] = iP075[1] + seg6;
+    P076[1] = iP076[1] + seg6;
+
+    P001[1] = iP001[1] + seg7;
+    P011[1] = iP011[1] + seg7;
+    P068[1] = iP068[1] + seg7;
+    P069[1] = iP069[1] + seg7;
+    P070[1] = iP070[1] + seg7;
+    P071[1] = iP071[1] + seg7;
+    P072[1] = iP072[1] + seg7;
+    P073[1] = iP073[1] + seg7;
+    P074[1] = iP074[1] + seg7;
+
+    P091[1] = iP091[1] + seg3;
+    P092[1] = iP092[1] + seg3;
+    P093[1] = iP093[1] + seg3;
+    P094[1] = iP094[1] + seg3;
+    P095[1] = iP095[1] + seg3;
+    P122[1] = iP122[1] + seg3 * 1.5;
+
+    P097[1] = iP097[1] + chomp;
+    P098[1] = iP098[1] + chomp;
+    P102[1] = iP102[1] + chomp;
+    P110[1] = iP110[1] + chomp;
+    P111[1] = iP111[1] + chomp;
+    P121[1] = iP121[1] + chomp;
+    P118[1] = iP118[1] + chomp;
+    P119[1] = iP119[1] + chomp;
+
+    glPushMatrix();
+
+    glRotatef(pitch, 1.0, 0.0, 0.0);
+
+    glTranslatef(0.0, 0.0, 7000.0);
+
+    glRotatef(180.0, 0.0, 1.0, 0.0);
+
+    glEnable(GL_CULL_FACE);
+    Dolphin014();
+    Dolphin010();
+    Dolphin009();
+    Dolphin012();
+    Dolphin013();
+    Dolphin006();
+    Dolphin002();
+    Dolphin001();
+    Dolphin003();
+    Dolphin015();
+    Dolphin004();
+    Dolphin005();
+    Dolphin007();
+    Dolphin008();
+    Dolphin011();
+    Dolphin016();
+    glDisable(GL_CULL_FACE);
+
+    glPopMatrix();
+}
+#endif