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

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. float scp[14][3] = {
  40.     {1.000000, 0.000000, 0.000000}, {1.000000, 0.000000, 5.000000},
  41.     {0.500000, 0.866025, 0.000000}, {0.500000, 0.866025, 5.000000},
  42.     {-0.500000, 0.866025, 0.000000}, {-0.500000, 0.866025, 5.000000},
  43.     {-1.000000, 0.000000, 0.000000}, {-1.000000, 0.000000, 5.000000},
  44.     {-0.500000, -0.866025, 0.000000}, {-0.500000, -0.866025, 5.000000},
  45.     {0.500000, -0.866025, 0.000000}, {0.500000, -0.866025, 5.000000},
  46.     {1.000000, 0.000000, 0.000000}, {1.000000, 0.000000, 5.000000},
  47. };
  48. float dcp[14][3] = {
  49.     {1.000000, 0.000000, 0.000000}, {1.000000, 0.000000, 7.000000},
  50.     {0.500000, 0.866025, 0.000000}, {0.500000, 0.866025, 7.000000},
  51.     {-0.500000, 0.866025, 0.000000}, {-0.500000, 0.866025, 7.000000},
  52.     {-1.000000, 0.000000, 0.000000}, {-1.000000, 0.000000, 7.000000},
  53.     {-0.500000, -0.866025, 0.000000}, {-0.500000, -0.866025, 7.000000},
  54.     {0.500000, -0.866025, 0.000000}, {0.500000, -0.866025, 7.000000},
  55.     {1.000000, 0.000000, 0.000000}, {1.000000, 0.000000, 7.000000},
  56. };
  57. float ep[7][7][3] = {
  58.     {
  59. {1.000000, 0.000000, 0.000000},
  60. {0.500000, 0.866025, 0.000000},
  61. {-0.500000, 0.866025, 0.000000},
  62. {-1.000000, 0.000000, 0.000000},
  63. {-0.500000, -0.866025, 0.000000},
  64. {0.500000, -0.866025, 0.000000},
  65. {1.000000, 0.000000, 0.000000},
  66.     },
  67.     {
  68. {1.000000, 0.034074, 0.258819},
  69. {0.500000, 0.870590, 0.034675},
  70. {-0.500000, 0.870590, 0.034675},
  71. {-1.000000, 0.034074, 0.258819},
  72. {-0.500000, -0.802442, 0.482963},
  73. {0.500000, -0.802442, 0.482963},
  74. {1.000000, 0.034074, 0.258819},
  75.     },
  76.     {
  77. {1.000000, 0.133975, 0.500000},
  78. {0.500000, 0.883975, 0.066987},
  79. {-0.500000, 0.883975, 0.066987},
  80. {-1.000000, 0.133975, 0.500000},
  81. {-0.500000, -0.616025, 0.933013},
  82. {0.500000, -0.616025, 0.933013},
  83. {1.000000, 0.133975, 0.500000},
  84.     },
  85.     {
  86. {1.000000, 0.292893, 0.707107},
  87. {0.500000, 0.905266, 0.094734},
  88. {-0.500000, 0.905266, 0.094734},
  89. {-1.000000, 0.292893, 0.707107},
  90. {-0.500000, -0.319479, 1.319479},
  91. {0.500000, -0.319479, 1.319479},
  92. {1.000000, 0.292893, 0.707107},
  93.     },
  94.     {
  95. {1.000000, 0.500000, 0.866025},
  96. {0.500000, 0.933013, 0.116025},
  97. {-0.500000, 0.933013, 0.116025},
  98. {-1.000000, 0.500000, 0.866025},
  99. {-0.500000, 0.066987, 1.616025},
  100. {0.500000, 0.066987, 1.616025},
  101. {1.000000, 0.500000, 0.866025},
  102.     },
  103.     {
  104. {1.000000, 0.741181, 0.965926},
  105. {0.500000, 0.965325, 0.129410},
  106. {-0.500000, 0.965325, 0.129410},
  107. {-1.000000, 0.741181, 0.965926},
  108. {-0.500000, 0.517037, 1.802442},
  109. {0.500000, 0.517037, 1.802442},
  110. {1.000000, 0.741181, 0.965926},
  111.     },
  112.     {
  113. {1.000000, 1.000000, 1.000000},
  114. {0.500000, 1.000000, 0.133975},
  115. {-0.500000, 1.000000, 0.133975},
  116. {-1.000000, 1.000000, 1.000000},
  117. {-0.500000, 1.000000, 1.866025},
  118. {0.500000, 1.000000, 1.866025},
  119. {1.000000, 1.000000, 1.000000},
  120.     },
  121. };
  122. void draw_single_cylinder(void) {
  123. glBegin(GL_LINE_STRIP);
  124. glVertex3fv(scp[0]);
  125. glVertex3fv(scp[1]);
  126. glVertex3fv(scp[2]);
  127. glVertex3fv(scp[3]);
  128. glVertex3fv(scp[4]);
  129. glVertex3fv(scp[5]);
  130. glVertex3fv(scp[6]);
  131. glVertex3fv(scp[7]);
  132. glVertex3fv(scp[8]);
  133. glVertex3fv(scp[9]);
  134. glVertex3fv(scp[10]);
  135. glVertex3fv(scp[11]);
  136. glVertex3fv(scp[12]);
  137. glVertex3fv(scp[13]);
  138. glEnd();
  139. }
  140. void draw_double_cylinder(void) {
  141. glBegin(GL_LINE_STRIP);
  142. glVertex3fv(dcp[0]);
  143. glVertex3fv(dcp[1]);
  144. glVertex3fv(dcp[2]);
  145. glVertex3fv(dcp[3]);
  146. glVertex3fv(dcp[4]);
  147. glVertex3fv(dcp[5]);
  148. glVertex3fv(dcp[6]);
  149. glVertex3fv(dcp[7]);
  150. glVertex3fv(dcp[8]);
  151. glVertex3fv(dcp[9]);
  152. glVertex3fv(dcp[10]);
  153. glVertex3fv(dcp[11]);
  154. glVertex3fv(dcp[12]);
  155. glVertex3fv(dcp[13]);
  156. glEnd();
  157. }
  158. void draw_elbow(void) {
  159. glBegin(GL_LINE_STRIP);
  160.     glVertex3fv(ep[0][0]);
  161.     glVertex3fv(ep[1][0]);
  162.     glVertex3fv(ep[0][1]);
  163.     glVertex3fv(ep[1][1]);
  164.     glVertex3fv(ep[0][2]);
  165.     glVertex3fv(ep[1][2]);
  166.     glVertex3fv(ep[0][3]);
  167.     glVertex3fv(ep[1][3]);
  168.     glVertex3fv(ep[0][4]);
  169.     glVertex3fv(ep[1][4]);
  170.     glVertex3fv(ep[0][5]);
  171.     glVertex3fv(ep[1][5]);
  172.     glVertex3fv(ep[0][6]);
  173.     glVertex3fv(ep[1][6]);
  174. glEnd();
  175. glBegin(GL_LINE_STRIP);
  176.     glVertex3fv(ep[1][0]);
  177.     glVertex3fv(ep[2][0]);
  178.     glVertex3fv(ep[1][1]);
  179.     glVertex3fv(ep[2][1]);
  180.     glVertex3fv(ep[1][2]);
  181.     glVertex3fv(ep[2][2]);
  182.     glVertex3fv(ep[1][3]);
  183.     glVertex3fv(ep[2][3]);
  184.     glVertex3fv(ep[1][4]);
  185.     glVertex3fv(ep[2][4]);
  186.     glVertex3fv(ep[1][5]);
  187.     glVertex3fv(ep[2][5]);
  188.     glVertex3fv(ep[1][6]);
  189.     glVertex3fv(ep[2][6]);
  190. glEnd();
  191. glBegin(GL_LINE_STRIP);
  192.     glVertex3fv(ep[2][0]);
  193.     glVertex3fv(ep[3][0]);
  194.     glVertex3fv(ep[2][1]);
  195.     glVertex3fv(ep[3][1]);
  196.     glVertex3fv(ep[2][2]);
  197.     glVertex3fv(ep[3][2]);
  198.     glVertex3fv(ep[2][3]);
  199.     glVertex3fv(ep[3][3]);
  200.     glVertex3fv(ep[2][4]);
  201.     glVertex3fv(ep[3][4]);
  202.     glVertex3fv(ep[2][5]);
  203.     glVertex3fv(ep[3][5]);
  204.     glVertex3fv(ep[2][6]);
  205.     glVertex3fv(ep[3][6]);
  206. glEnd();
  207. glBegin(GL_LINE_STRIP);
  208.     glVertex3fv(ep[3][0]);
  209.     glVertex3fv(ep[4][0]);
  210.     glVertex3fv(ep[3][1]);
  211.     glVertex3fv(ep[4][1]);
  212.     glVertex3fv(ep[3][2]);
  213.     glVertex3fv(ep[4][2]);
  214.     glVertex3fv(ep[3][3]);
  215.     glVertex3fv(ep[4][3]);
  216.     glVertex3fv(ep[3][4]);
  217.     glVertex3fv(ep[4][4]);
  218.     glVertex3fv(ep[3][5]);
  219.     glVertex3fv(ep[4][5]);
  220.     glVertex3fv(ep[3][6]);
  221.     glVertex3fv(ep[4][6]);
  222. glEnd();
  223. glBegin(GL_LINE_STRIP);
  224.     glVertex3fv(ep[4][0]);
  225.     glVertex3fv(ep[5][0]);
  226.     glVertex3fv(ep[4][1]);
  227.     glVertex3fv(ep[5][1]);
  228.     glVertex3fv(ep[4][2]);
  229.     glVertex3fv(ep[5][2]);
  230.     glVertex3fv(ep[4][3]);
  231.     glVertex3fv(ep[5][3]);
  232.     glVertex3fv(ep[4][4]);
  233.     glVertex3fv(ep[5][4]);
  234.     glVertex3fv(ep[4][5]);
  235.     glVertex3fv(ep[5][5]);
  236.     glVertex3fv(ep[4][6]);
  237.     glVertex3fv(ep[5][6]);
  238. glEnd();
  239. glBegin(GL_LINE_STRIP);
  240.     glVertex3fv(ep[5][0]);
  241.     glVertex3fv(ep[6][0]);
  242.     glVertex3fv(ep[5][1]);
  243.     glVertex3fv(ep[6][1]);
  244.     glVertex3fv(ep[5][2]);
  245.     glVertex3fv(ep[6][2]);
  246.     glVertex3fv(ep[5][3]);
  247.     glVertex3fv(ep[6][3]);
  248.     glVertex3fv(ep[5][4]);
  249.     glVertex3fv(ep[6][4]);
  250.     glVertex3fv(ep[5][5]);
  251.     glVertex3fv(ep[6][5]);
  252.     glVertex3fv(ep[5][6]);
  253.     glVertex3fv(ep[6][6]);
  254. glEnd();
  255. }
  256. void bend_forward(void) {
  257.   glTranslatef(0.0, 1.000000, 0.0);
  258.   glRotatef (0.1 * (900), 1.0, 0.0, 0.0);
  259.   glTranslatef(0.0, -1.000000, 0.0);
  260. }
  261. void bend_left(void) {
  262.   glRotatef (0.1 * (-900), 0.0, 0.0, 1.0);
  263.   glTranslatef(0.0, 1.000000, 0.0);
  264.   glRotatef (0.1 * (900), 1.0, 0.0, 0.0);
  265.   glTranslatef(0.0, -1.000000, 0.0);
  266. }
  267. void bend_right(void) {
  268.   glRotatef (0.1 * (900), 0.0, 0.0, 1.0);
  269.   glTranslatef(0.0, 1.000000, 0.0);
  270.   glRotatef (0.1 * (900), 1.0, 0.0, 0.0);
  271.   glTranslatef(0.0, -1.000000, 0.0);
  272. }
  273. void draw_logo_line(void) {
  274.         glCallList( MAT_LOGO); 
  275. glTranslatef(5.500000,  -3.500000,  4.500000);
  276. glTranslatef(0.0,  0.0,  -7.000000);
  277. draw_double_cylinder();
  278. bend_forward();
  279. draw_elbow();
  280. glTranslatef(0.0,  0.0,  -7.000000);
  281. draw_double_cylinder();
  282. bend_forward();
  283. draw_elbow();
  284. glTranslatef(0.0,  0.0,  -5.000000);
  285. draw_single_cylinder();
  286. bend_right();
  287. draw_elbow();
  288. glTranslatef(0.0,  0.0,  -7.000000);
  289. draw_double_cylinder();
  290. bend_forward();
  291. draw_elbow();
  292. glTranslatef(0.0,  0.0,  -7.000000);
  293. draw_double_cylinder();
  294. bend_forward();
  295. draw_elbow();
  296. glTranslatef(0.0,  0.0,  -5.000000);
  297. draw_single_cylinder();
  298. bend_left();
  299. draw_elbow();
  300. glTranslatef(0.0,  0.0,  -7.000000);
  301. draw_double_cylinder();
  302. bend_forward();
  303. draw_elbow();
  304. glTranslatef(0.0,  0.0,  -7.000000);
  305. draw_double_cylinder();
  306. bend_forward();
  307. draw_elbow();
  308. glTranslatef(0.0,  0.0,  -5.000000);
  309. draw_single_cylinder();
  310. bend_right();
  311. draw_elbow();
  312. glTranslatef(0.0,  0.0,  -7.000000);
  313. draw_double_cylinder();
  314. bend_forward();
  315. draw_elbow();
  316. glTranslatef(0.0,  0.0,  -7.000000);
  317. draw_double_cylinder();
  318. bend_forward();
  319. draw_elbow();
  320. glTranslatef(0.0,  0.0,  -5.000000);
  321. draw_single_cylinder();
  322. bend_left();
  323. draw_elbow();
  324. glTranslatef(0.0,  0.0,  -7.000000);
  325. draw_double_cylinder();
  326. bend_forward();
  327. draw_elbow();
  328. glTranslatef(0.0,  0.0,  -7.000000);
  329. draw_double_cylinder();
  330. bend_forward();
  331. draw_elbow();
  332. glTranslatef(0.0,  0.0,  -5.000000);
  333. draw_single_cylinder();
  334. bend_right();
  335. draw_elbow();
  336. glTranslatef(0.0,  0.0,  -7.000000);
  337. draw_double_cylinder();
  338. bend_forward();
  339. draw_elbow();
  340. glTranslatef(0.0,  0.0,  -7.000000);
  341. draw_double_cylinder();
  342. bend_forward();
  343. draw_elbow();
  344. glTranslatef(0.0,  0.0,  -5.000000);
  345. draw_single_cylinder();
  346. bend_left();
  347. draw_elbow();
  348. }