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