draw_logo.c
上传用户:xk288cn
上传日期:2007-05-28
资源大小:4876k
文件大小:18k
源码类别:

GIS编程

开发平台:

Visual C++

  1. /*
  2.  * (c) Copyright 1993, 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 <GL/glut.h>
  38. #include "objects.h"
  39. static float scp[18][3] = {
  40.   {1.000000, 0.000000, 0.000000}, {1.000000, 0.000000, 5.000000},
  41.   {0.707107, 0.707107, 0.000000}, {0.707107, 0.707107, 5.000000},
  42.   {0.000000, 1.000000, 0.000000}, {0.000000, 1.000000, 5.000000},
  43.   {-0.707107, 0.707107, 0.000000}, {-0.707107, 0.707107, 5.000000},
  44.   {-1.000000, 0.000000, 0.000000}, {-1.000000, 0.000000, 5.000000},
  45.   {-0.707107, -0.707107, 0.000000}, {-0.707107, -0.707107, 5.000000},
  46.   {0.000000, -1.000000, 0.000000}, {0.000000, -1.000000, 5.000000},
  47.   {0.707107, -0.707107, 0.000000}, {0.707107, -0.707107, 5.000000},
  48.   {1.000000, 0.000000, 0.000000}, {1.000000, 0.000000, 5.000000},
  49. };
  50. static float dcp[18][3] = {
  51.   {1.000000, 0.000000, 0.000000}, {1.000000, 0.000000, 7.000000},
  52.   {0.707107, 0.707107, 0.000000}, {0.707107, 0.707107, 7.000000},
  53.   {0.000000, 1.000000, 0.000000}, {0.000000, 1.000000, 7.000000},
  54.   {-0.707107, 0.707107, 0.000000}, {-0.707107, 0.707107, 7.000000},
  55.   {-1.000000, 0.000000, 0.000000}, {-1.000000, 0.000000, 7.000000},
  56.   {-0.707107, -0.707107, 0.000000}, {-0.707107, -0.707107, 7.000000},
  57.   {0.000000, -1.000000, 0.000000}, {0.000000, -1.000000, 7.000000},
  58.   {0.707107, -0.707107, 0.000000}, {0.707107, -0.707107, 7.000000},
  59.   {1.000000, 0.000000, 0.000000}, {1.000000, 0.000000, 7.000000},
  60. };
  61. static float ep[7][9][3] = {
  62.   {
  63.     {1.000000, 0.000000, 0.000000},
  64.     {0.707107, 0.707107, 0.000000},
  65.     {0.000000, 1.000000, 0.000000},
  66.     {-0.707107, 0.707107, 0.000000},
  67.     {-1.000000, 0.000000, 0.000000},
  68.     {-0.707107, -0.707107, 0.000000},
  69.     {0.000000, -1.000000, 0.000000},
  70.     {0.707107, -0.707107, 0.000000},
  71.     {1.000000, 0.000000, 0.000000},
  72.   },
  73.   
  74.   {
  75.     {1.000000, 0.034074, 0.258819},
  76.     {0.707107, 0.717087, 0.075806},
  77.     {0.000000, 1.000000, 0.000000},
  78.     {-0.707107, 0.717087, 0.075806},
  79.     {-1.000000, 0.034074, 0.258819},
  80.     {-0.707107, -0.648939, 0.441832},
  81.     {0.000000, -0.931852, 0.517638},
  82.     {0.707107, -0.648939, 0.441832},
  83.     {1.000000, 0.034074, 0.258819},
  84.   },
  85.   
  86.   {
  87.     {1.000000, 0.133975, 0.500000},
  88.     {0.707107, 0.746347, 0.146447},
  89.     {0.000000, 1.000000, 0.000000},
  90.     {-0.707107, 0.746347, 0.146447},
  91.     {-1.000000, 0.133975, 0.500000},
  92.     {-0.707107, -0.478398, 0.853553},
  93.     {0.000000, -0.732051, 1.000000},
  94.     {0.707107, -0.478398, 0.853553},
  95.     {1.000000, 0.133975, 0.500000},
  96.   },
  97.   
  98.   {
  99.     {1.000000, 0.292893, 0.707107},
  100.     {0.707107, 0.792893, 0.207107},
  101.     {0.000000, 1.000000, 0.000000},
  102.     {-0.707107, 0.792893, 0.207107},
  103.     {-1.000000, 0.292893, 0.707107},
  104.     {-0.707107, -0.207107, 1.207107},
  105.     {0.000000, -0.414214, 1.414214},
  106.     {0.707107, -0.207107, 1.207107},
  107.     {1.000000, 0.292893, 0.707107},
  108.   },
  109.   
  110.   {
  111.     {1.000000, 0.500000, 0.866025},
  112.     {0.707107, 0.853553, 0.253653},
  113.     {0.000000, 1.000000, 0.000000},
  114.     {-0.707107, 0.853553, 0.253653},
  115.     {-1.000000, 0.500000, 0.866025},
  116.     {-0.707107, 0.146447, 1.478398},
  117.     {0.000000, 0.000000, 1.732051},
  118.     {0.707107, 0.146447, 1.478398},
  119.     {1.000000, 0.500000, 0.866025},
  120.   },
  121.   
  122.   {
  123.     {1.000000, 0.741181, 0.965926},
  124.     {0.707107, 0.924194, 0.282913},
  125.     {0.000000, 1.000000, 0.000000},
  126.     {-0.707107, 0.924194, 0.282913},
  127.     {-1.000000, 0.741181, 0.965926},
  128.     {-0.707107, 0.558168, 1.648939},
  129.     {0.000000, 0.482362, 1.931852},
  130.     {0.707107, 0.558168, 1.648939},
  131.     {1.000000, 0.741181, 0.965926},
  132.   },
  133.   
  134.   {
  135.     {1.000000, 1.000000, 1.000000},
  136.     {0.707107, 1.000000, 0.292893},
  137.     {0.000000, 1.000000, 0.000000},
  138.     {-0.707107, 1.000000, 0.292893},
  139.     {-1.000000, 1.000000, 1.000000},
  140.     {-0.707107, 1.000000, 1.707107},
  141.     {0.000000, 1.000000, 2.000000},
  142.     {0.707107, 1.000000, 1.707107},
  143.     {1.000000, 1.000000, 1.000000},
  144.   },
  145.   
  146. };
  147. static float en[7][9][3] = {
  148.   {
  149.     {1.000000, 0.000000, 0.000000},
  150.     {0.707107, 0.707107, 0.000000},
  151.     {0.000000, 1.000000, 0.000000},
  152.     {-0.707107, 0.707107, 0.000000},
  153.     {-1.000000, 0.000000, 0.000000},
  154.     {-0.707107, -0.707107, 0.000000},
  155.     {0.000000, -1.000000, 0.000000},
  156.     {0.707107, -0.707107, 0.000000},
  157.     {1.000000, 0.000000, 0.000000},
  158.   },
  159.   
  160.   {
  161.     {1.000000, 0.000000, 0.000000},
  162.     {0.707107, 0.683013, -0.183013},
  163.     {0.000000, 0.965926, -0.258819},
  164.     {-0.707107, 0.683013, -0.183013},
  165.     {-1.000000, 0.000000, 0.000000},
  166.     {-0.707107, -0.683013, 0.183013},
  167.     {0.000000, -0.965926, 0.258819},
  168.     {0.707107, -0.683013, 0.183013},
  169.     {1.000000, 0.000000, 0.000000},
  170.   },
  171.   
  172.   {
  173.     {1.000000, 0.000000, 0.000000},
  174.     {0.707107, 0.612372, -0.353553},
  175.     {0.000000, 0.866025, -0.500000},
  176.     {-0.707107, 0.612372, -0.353553},
  177.     {-1.000000, 0.000000, 0.000000},
  178.     {-0.707107, -0.612372, 0.353553},
  179.     {0.000000, -0.866025, 0.500000},
  180.     {0.707107, -0.612372, 0.353553},
  181.     {1.000000, 0.000000, 0.000000},
  182.   },
  183.   
  184.   {
  185.     {1.000000, 0.000000, 0.000000},
  186.     {0.707107, 0.500000, -0.500000},
  187.     {0.000000, 0.707107, -0.707107},
  188.     {-0.707107, 0.500000, -0.500000},
  189.     {-1.000000, 0.000000, 0.000000},
  190.     {-0.707107, -0.500000, 0.500000},
  191.     {0.000000, -0.707107, 0.707107},
  192.     {0.707107, -0.500000, 0.500000},
  193.     {1.000000, 0.000000, 0.000000},
  194.   },
  195.   
  196.   {
  197.     {1.000000, 0.000000, 0.000000},
  198.     {0.707107, 0.353553, -0.612372},
  199.     {0.000000, 0.500000, -0.866025},
  200.     {-0.707107, 0.353553, -0.612372},
  201.     {-1.000000, 0.000000, 0.000000},
  202.     {-0.707107, -0.353553, 0.612372},
  203.     {0.000000, -0.500000, 0.866025},
  204.     {0.707107, -0.353553, 0.612372},
  205.     {1.000000, 0.000000, 0.000000},
  206.   },
  207.   
  208.   {
  209.     {1.000000, 0.000000, 0.000000},
  210.     {0.707107, 0.183013, -0.683013},
  211.     {0.000000, 0.258819, -0.965926},
  212.     {-0.707107, 0.183013, -0.683013},
  213.     {-1.000000, 0.000000, 0.000000},
  214.     {-0.707107, -0.183013, 0.683013},
  215.     {0.000000, -0.258819, 0.965926},
  216.     {0.707107, -0.183013, 0.683013},
  217.     {1.000000, 0.000000, 0.000000},
  218.   },
  219.   
  220.   {
  221.     {1.000000, 0.000000, 0.000000},
  222.     {0.707107, 0.000000, -0.707107},
  223.     {0.000000, 0.000000, -1.000000},
  224.     {-0.707107, 0.000000, -0.707107},
  225.     {-1.000000, 0.000000, 0.000000},
  226.     {-0.707107, 0.000000, 0.707107},
  227.     {0.000000, 0.000000, 1.000000},
  228.     {0.707107, 0.000000, 0.707107},
  229.     {1.000000, 0.000000, 0.000000},
  230.   },
  231.   
  232. };
  233. static void draw_single_cylinder(void) {
  234.   
  235.   glBegin(GL_TRIANGLE_STRIP);
  236.   glNormal3fv(scp[0]); glVertex3fv(scp[0]);
  237.   glNormal3fv(scp[0]); glVertex3fv(scp[1]);
  238.   glNormal3fv(scp[2]); glVertex3fv(scp[2]);
  239.   glNormal3fv(scp[2]); glVertex3fv(scp[3]);
  240.   glNormal3fv(scp[4]); glVertex3fv(scp[4]);
  241.   glNormal3fv(scp[4]); glVertex3fv(scp[5]);
  242.   glNormal3fv(scp[6]); glVertex3fv(scp[6]);
  243.   glNormal3fv(scp[6]); glVertex3fv(scp[7]);
  244.   glNormal3fv(scp[8]); glVertex3fv(scp[8]);
  245.   glNormal3fv(scp[8]); glVertex3fv(scp[9]);
  246.   glNormal3fv(scp[10]); glVertex3fv(scp[10]);
  247.   glNormal3fv(scp[10]); glVertex3fv(scp[11]);
  248.   glNormal3fv(scp[12]); glVertex3fv(scp[12]);
  249.   glNormal3fv(scp[12]); glVertex3fv(scp[13]);
  250.   glNormal3fv(scp[14]); glVertex3fv(scp[14]);
  251.   glNormal3fv(scp[14]); glVertex3fv(scp[15]);
  252.   glNormal3fv(scp[16]); glVertex3fv(scp[16]);
  253.   glNormal3fv(scp[16]); glVertex3fv(scp[17]);
  254.   glEnd();
  255. }
  256. static void draw_double_cylinder(void) {
  257.   
  258.   glEnable(GL_NORMALIZE);
  259.   
  260.   glBegin(GL_TRIANGLE_STRIP);
  261.   glNormal3fv(dcp[0]); glVertex3fv(dcp[0]);
  262.   glNormal3fv(dcp[0]);
  263.   glVertex3fv(dcp[1]);
  264.   glNormal3fv(dcp[2]); glVertex3fv(dcp[2]);
  265.   glNormal3fv(dcp[2]);
  266.   glVertex3fv(dcp[3]);
  267.   glNormal3fv(dcp[4]); glVertex3fv(dcp[4]);
  268.   glNormal3fv(dcp[4]);
  269.   glVertex3fv(dcp[5]);
  270.   glNormal3fv(dcp[6]); glVertex3fv(dcp[6]);
  271.   glNormal3fv(dcp[6]);
  272.   glVertex3fv(dcp[7]);
  273.   glNormal3fv(dcp[8]); glVertex3fv(dcp[8]);
  274.   glNormal3fv(dcp[8]);
  275.   glVertex3fv(dcp[9]);
  276.   glNormal3fv(dcp[10]); glVertex3fv(dcp[10]);
  277.   glNormal3fv(dcp[10]);
  278.   glVertex3fv(dcp[11]);
  279.   glNormal3fv(dcp[12]); glVertex3fv(dcp[12]);
  280.   glNormal3fv(dcp[12]);
  281.   glVertex3fv(dcp[13]);
  282.   glNormal3fv(dcp[14]); glVertex3fv(dcp[14]);
  283.   glNormal3fv(dcp[14]);
  284.   glVertex3fv(dcp[15]);
  285.   glNormal3fv(dcp[16]); glVertex3fv(dcp[16]);
  286.   glNormal3fv(dcp[16]);
  287.   glVertex3fv(dcp[17]);
  288.   glEnd();
  289. }
  290. static void draw_elbow(void) {
  291.   
  292.   glBegin(GL_TRIANGLE_STRIP);
  293.   glNormal3fv(en[0][0]); glVertex3fv(ep[0][0]);
  294.   glNormal3fv(en[1][0]); glVertex3fv(ep[1][0]);
  295.   glNormal3fv(en[0][1]); glVertex3fv(ep[0][1]);
  296.   glNormal3fv(en[1][1]); glVertex3fv(ep[1][1]);
  297.   glNormal3fv(en[0][2]); glVertex3fv(ep[0][2]);
  298.   glNormal3fv(en[1][2]); glVertex3fv(ep[1][2]);
  299.   glNormal3fv(en[0][3]); glVertex3fv(ep[0][3]);
  300.   glNormal3fv(en[1][3]); glVertex3fv(ep[1][3]);
  301.   glNormal3fv(en[0][4]); glVertex3fv(ep[0][4]);
  302.   glNormal3fv(en[1][4]); glVertex3fv(ep[1][4]);
  303.   glNormal3fv(en[0][5]); glVertex3fv(ep[0][5]);
  304.   glNormal3fv(en[1][5]); glVertex3fv(ep[1][5]);
  305.   glNormal3fv(en[0][6]); glVertex3fv(ep[0][6]);
  306.   glNormal3fv(en[1][6]); glVertex3fv(ep[1][6]);
  307.   glNormal3fv(en[0][7]); glVertex3fv(ep[0][7]);
  308.   glNormal3fv(en[1][7]); glVertex3fv(ep[1][7]);
  309.   glNormal3fv(en[0][8]); glVertex3fv(ep[0][8]);
  310.   glNormal3fv(en[1][8]); glVertex3fv(ep[1][8]);
  311.   glEnd();
  312.   glBegin(GL_TRIANGLE_STRIP);
  313.   glNormal3fv(en[1][0]); glVertex3fv(ep[1][0]);
  314.   glNormal3fv(en[2][0]); glVertex3fv(ep[2][0]);
  315.   glNormal3fv(en[1][1]); glVertex3fv(ep[1][1]);
  316.   glNormal3fv(en[2][1]); glVertex3fv(ep[2][1]);
  317.   glNormal3fv(en[1][2]); glVertex3fv(ep[1][2]);
  318.   glNormal3fv(en[2][2]); glVertex3fv(ep[2][2]);
  319.   glNormal3fv(en[1][3]); glVertex3fv(ep[1][3]);
  320.   glNormal3fv(en[2][3]); glVertex3fv(ep[2][3]);
  321.   glNormal3fv(en[1][4]); glVertex3fv(ep[1][4]);
  322.   glNormal3fv(en[2][4]); glVertex3fv(ep[2][4]);
  323.   glNormal3fv(en[1][5]); glVertex3fv(ep[1][5]);
  324.   glNormal3fv(en[2][5]); glVertex3fv(ep[2][5]);
  325.   glNormal3fv(en[1][6]); glVertex3fv(ep[1][6]);
  326.   glNormal3fv(en[2][6]); glVertex3fv(ep[2][6]);
  327.   glNormal3fv(en[1][7]); glVertex3fv(ep[1][7]);
  328.   glNormal3fv(en[2][7]); glVertex3fv(ep[2][7]);
  329.   glNormal3fv(en[1][8]); glVertex3fv(ep[1][8]);
  330.   glNormal3fv(en[2][8]); glVertex3fv(ep[2][8]);
  331.   glEnd();
  332.   glBegin(GL_TRIANGLE_STRIP);
  333.   glNormal3fv(en[2][0]); glVertex3fv(ep[2][0]);
  334.   glNormal3fv(en[3][0]); glVertex3fv(ep[3][0]);
  335.   glNormal3fv(en[2][1]); glVertex3fv(ep[2][1]);
  336.   glNormal3fv(en[3][1]); glVertex3fv(ep[3][1]);
  337.   glNormal3fv(en[2][2]); glVertex3fv(ep[2][2]);
  338.   glNormal3fv(en[3][2]); glVertex3fv(ep[3][2]);
  339.   glNormal3fv(en[2][3]); glVertex3fv(ep[2][3]);
  340.   glNormal3fv(en[3][3]); glVertex3fv(ep[3][3]);
  341.   glNormal3fv(en[2][4]); glVertex3fv(ep[2][4]);
  342.   glNormal3fv(en[3][4]); glVertex3fv(ep[3][4]);
  343.   glNormal3fv(en[2][5]); glVertex3fv(ep[2][5]);
  344.   glNormal3fv(en[3][5]); glVertex3fv(ep[3][5]);
  345.   glNormal3fv(en[2][6]); glVertex3fv(ep[2][6]);
  346.   glNormal3fv(en[3][6]); glVertex3fv(ep[3][6]);
  347.   glNormal3fv(en[2][7]); glVertex3fv(ep[2][7]);
  348.   glNormal3fv(en[3][7]); glVertex3fv(ep[3][7]);
  349.   glNormal3fv(en[2][8]); glVertex3fv(ep[2][8]);
  350.   glNormal3fv(en[3][8]); glVertex3fv(ep[3][8]);
  351.   glEnd();
  352.   glBegin(GL_TRIANGLE_STRIP);
  353.   glNormal3fv(en[3][0]); glVertex3fv(ep[3][0]);
  354.   glNormal3fv(en[4][0]); glVertex3fv(ep[4][0]);
  355.   glNormal3fv(en[3][1]); glVertex3fv(ep[3][1]);
  356.   glNormal3fv(en[4][1]); glVertex3fv(ep[4][1]);
  357.   glNormal3fv(en[3][2]); glVertex3fv(ep[3][2]);
  358.   glNormal3fv(en[4][2]); glVertex3fv(ep[4][2]);
  359.   glNormal3fv(en[3][3]); glVertex3fv(ep[3][3]);
  360.   glNormal3fv(en[4][3]); glVertex3fv(ep[4][3]);
  361.   glNormal3fv(en[3][4]); glVertex3fv(ep[3][4]);
  362.   glNormal3fv(en[4][4]); glVertex3fv(ep[4][4]);
  363.   glNormal3fv(en[3][5]); glVertex3fv(ep[3][5]);
  364.   glNormal3fv(en[4][5]); glVertex3fv(ep[4][5]);
  365.   glNormal3fv(en[3][6]); glVertex3fv(ep[3][6]);
  366.   glNormal3fv(en[4][6]); glVertex3fv(ep[4][6]);
  367.   glNormal3fv(en[3][7]); glVertex3fv(ep[3][7]);
  368.   glNormal3fv(en[4][7]); glVertex3fv(ep[4][7]);
  369.   glNormal3fv(en[3][8]); glVertex3fv(ep[3][8]);
  370.   glNormal3fv(en[4][8]); glVertex3fv(ep[4][8]);
  371.   glEnd();
  372.   glBegin(GL_TRIANGLE_STRIP);
  373.   glNormal3fv(en[4][0]); glVertex3fv(ep[4][0]);
  374.   glNormal3fv(en[5][0]); glVertex3fv(ep[5][0]);
  375.   glNormal3fv(en[4][1]); glVertex3fv(ep[4][1]);
  376.   glNormal3fv(en[5][1]); glVertex3fv(ep[5][1]);
  377.   glNormal3fv(en[4][2]); glVertex3fv(ep[4][2]);
  378.   glNormal3fv(en[5][2]); glVertex3fv(ep[5][2]);
  379.   glNormal3fv(en[4][3]); glVertex3fv(ep[4][3]);
  380.   glNormal3fv(en[5][3]); glVertex3fv(ep[5][3]);
  381.   glNormal3fv(en[4][4]); glVertex3fv(ep[4][4]);
  382.   glNormal3fv(en[5][4]); glVertex3fv(ep[5][4]);
  383.   glNormal3fv(en[4][5]); glVertex3fv(ep[4][5]);
  384.   glNormal3fv(en[5][5]); glVertex3fv(ep[5][5]);
  385.   glNormal3fv(en[4][6]); glVertex3fv(ep[4][6]);
  386.   glNormal3fv(en[5][6]); glVertex3fv(ep[5][6]);
  387.   glNormal3fv(en[4][7]); glVertex3fv(ep[4][7]);
  388.   glNormal3fv(en[5][7]); glVertex3fv(ep[5][7]);
  389.   glNormal3fv(en[4][8]); glVertex3fv(ep[4][8]);
  390.   glNormal3fv(en[5][8]); glVertex3fv(ep[5][8]);
  391.   glEnd();
  392.   glBegin(GL_TRIANGLE_STRIP);
  393.   glNormal3fv(en[5][0]); glVertex3fv(ep[5][0]);
  394.   glNormal3fv(en[6][0]); glVertex3fv(ep[6][0]);
  395.   glNormal3fv(en[5][1]); glVertex3fv(ep[5][1]);
  396.   glNormal3fv(en[6][1]); glVertex3fv(ep[6][1]);
  397.   glNormal3fv(en[5][2]); glVertex3fv(ep[5][2]);
  398.   glNormal3fv(en[6][2]); glVertex3fv(ep[6][2]);
  399.   glNormal3fv(en[5][3]); glVertex3fv(ep[5][3]);
  400.   glNormal3fv(en[6][3]); glVertex3fv(ep[6][3]);
  401.   glNormal3fv(en[5][4]); glVertex3fv(ep[5][4]);
  402.   glNormal3fv(en[6][4]); glVertex3fv(ep[6][4]);
  403.   glNormal3fv(en[5][5]); glVertex3fv(ep[5][5]);
  404.   glNormal3fv(en[6][5]); glVertex3fv(ep[6][5]);
  405.   glNormal3fv(en[5][6]); glVertex3fv(ep[5][6]);
  406.   glNormal3fv(en[6][6]); glVertex3fv(ep[6][6]);
  407.   glNormal3fv(en[5][7]); glVertex3fv(ep[5][7]);
  408.   glNormal3fv(en[6][7]); glVertex3fv(ep[6][7]);
  409.   glNormal3fv(en[5][8]); glVertex3fv(ep[5][8]);
  410.   glNormal3fv(en[6][8]); glVertex3fv(ep[6][8]);
  411.   glEnd();
  412. }
  413. static void bend_forward(void) {
  414.   
  415.   glTranslatef(0.0,  1.000000,  0.0);
  416.   glRotatef (0.1 * (900), 1.0, 0.0, 0.0);
  417.   glTranslatef(0.0,  -1.000000,  0.0);
  418. }
  419. static void bend_left(void) {
  420.   glRotatef (0.1 * (-900), 0.0, 0.0, 1.0);
  421.   glTranslatef(0.0, 1.000000, 0.0);
  422.   glRotatef (0.1 * (900), 1.0, 0.0, 0.0);
  423.   glTranslatef(0.0, -1.000000, 0.0);
  424. }
  425. static void bend_right(void) {
  426.   glRotatef (0.1 * (900), 0.0, 0.0, 1.0);
  427.   glTranslatef(0.0, 1.000000, 0.0);
  428.   glRotatef (0.1 * (900), 1.0, 0.0, 0.0);
  429.   glTranslatef(0.0, -1.000000, 0.0);
  430. }
  431. void draw_logo(void) {
  432.   
  433.   glCallList( MAT_LOGO); 
  434.   
  435.   glTranslatef(5.500000,  -3.500000,  4.500000);
  436.   
  437.   glTranslatef(0.0,  0.0,  -7.000000);
  438.   draw_double_cylinder();
  439.   bend_forward();
  440.   draw_elbow();
  441.   glTranslatef(0.0,  0.0,  -7.000000);
  442.   draw_double_cylinder();
  443.   bend_forward();
  444.   draw_elbow();
  445.   glTranslatef(0.0,  0.0,  -5.000000);
  446.   draw_single_cylinder();
  447.   bend_right();
  448.   draw_elbow();
  449.   glTranslatef(0.0,  0.0,  -7.000000);
  450.   draw_double_cylinder();
  451.   bend_forward();
  452.   draw_elbow();
  453.   glTranslatef(0.0,  0.0,  -7.000000);
  454.   draw_double_cylinder();
  455.   bend_forward();
  456.   draw_elbow();
  457.   glTranslatef(0.0,  0.0,  -5.000000);
  458.   draw_single_cylinder();
  459.   bend_left();
  460.   draw_elbow();
  461.   glTranslatef(0.0,  0.0,  -7.000000);
  462.   draw_double_cylinder();
  463.   bend_forward();
  464.   draw_elbow();
  465.   glTranslatef(0.0,  0.0,  -7.000000);
  466.   draw_double_cylinder();
  467.   bend_forward();
  468.   draw_elbow();
  469.   glTranslatef(0.0,  0.0,  -5.000000);
  470.   draw_single_cylinder();
  471.   bend_right();
  472.   draw_elbow();
  473.   glTranslatef(0.0,  0.0,  -7.000000);
  474.   draw_double_cylinder();
  475.   bend_forward();
  476.   draw_elbow();
  477.   glTranslatef(0.0,  0.0,  -7.000000);
  478.   draw_double_cylinder();
  479.   bend_forward();
  480.   draw_elbow();
  481.   glTranslatef(0.0,  0.0,  -5.000000);
  482.   draw_single_cylinder();
  483.   bend_left();
  484.   draw_elbow();
  485.   glTranslatef(0.0,  0.0,  -7.000000);
  486.   draw_double_cylinder();
  487.   bend_forward();
  488.   draw_elbow();
  489.   glTranslatef(0.0,  0.0,  -7.000000);
  490.   draw_double_cylinder();
  491.   bend_forward();
  492.   draw_elbow();
  493.   glTranslatef(0.0,  0.0,  -5.000000);
  494.   draw_single_cylinder();
  495.   bend_right();
  496.   draw_elbow();
  497.   glTranslatef(0.0,  0.0,  -7.000000);
  498.   draw_double_cylinder();
  499.   bend_forward();
  500.   draw_elbow();
  501.   glTranslatef(0.0,  0.0,  -7.000000);
  502.   draw_double_cylinder();
  503.   bend_forward();
  504.   draw_elbow();
  505.   glTranslatef(0.0,  0.0,  -5.000000);
  506.   draw_single_cylinder();
  507.   bend_left();
  508.   draw_elbow();
  509.   
  510.   glDisable(GL_NORMALIZE);
  511. }