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

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 bn[5][3] = {
  40. {-1.0, 0.0, 0.0},
  41. {0.0, 1.0, 0.0},
  42. {1.0, 0.0, 0.0},
  43. {0.0, -1.0, 0.0},
  44. {0.0, 0.0, 1.0},
  45. };
  46. float bp[4][8][3] = {
  47.     {   
  48. {-14.000000, -14.000000, 0.000000},
  49. {-14.000000, -14.000000, 4.000000},
  50. {-14.000000, 14.000000, 0.000000},
  51. {-14.000000, 14.000000, 4.000000},
  52. {14.000000, 14.000000, 0.000000},
  53. {14.000000, 14.000000, 4.000000},
  54. {14.000000, -14.000000, 0.000000},
  55. {14.000000, -14.000000, 4.000000},
  56.     },
  57.     {
  58. {-12.000000, -12.000000, 4.000000},
  59. {-12.000000, -12.000000, 8.000000},
  60. {-12.000000, 12.000000, 4.000000},
  61. {-12.000000, 12.000000, 8.000000},
  62. {12.000000, 12.000000, 4.000000},
  63. {12.000000, 12.000000, 8.000000},
  64. {12.000000, -12.000000, 4.000000},
  65. {12.000000, -12.000000, 8.000000},
  66.     },
  67.     {
  68. {-10.000000, -10.000000, 8.000000},
  69. {-10.000000, -10.000000, 12.000000},
  70. {-10.000000, 10.000000, 8.000000},
  71. {-10.000000, 10.000000, 12.000000},
  72. {10.000000, 10.000000, 8.000000},
  73. {10.000000, 10.000000, 12.000000},
  74. {10.000000, -10.000000, 8.000000},
  75. {10.000000, -10.000000, 12.000000},
  76.     },
  77.     {
  78. {-8.000000, -8.000000, 12.000000},
  79. {-8.000000, -8.000000, 8.000000},
  80. {-8.000000, 8.000000, 12.000000},
  81. {-8.000000, 8.000000, 8.000000},
  82. {8.000000, 8.000000, 12.000000},
  83. {8.000000, 8.000000, 8.000000},
  84. {8.000000, -8.000000, 12.000000},
  85. {8.000000, -8.000000, 8.000000},
  86.     },
  87. };
  88. float tp[12][21][3] = {
  89.      {
  90. {10.000000, 0.000000, 1.000000},
  91. {9.510565, -3.090170, 1.000000},
  92. {8.090170, -5.877852, 1.000000},
  93. {5.877852, -8.090170, 1.000000},
  94. {3.090170, -9.510565, 1.000000},
  95. {0.000000, -10.000000, 1.000000},
  96. {-3.090170, -9.510565, 1.000000},
  97. {-5.877852, -8.090170, 1.000000},
  98. {-8.090170, -5.877852, 1.000000},
  99. {-9.510565, -3.090170, 1.000000},
  100. {-10.000000, 0.000000, 1.000000},
  101. {-9.510565, 3.090170, 1.000000},
  102. {-8.090170, 5.877852, 1.000000},
  103. {-5.877852, 8.090170, 1.000000},
  104. {-3.090170, 9.510565, 1.000000},
  105. {0.000000, 10.000000, 1.000000},
  106. {3.090170, 9.510565, 1.000000},
  107. {5.877852, 8.090170, 1.000000},
  108. {8.090170, 5.877852, 1.000000},
  109. {9.510565, 3.090170, 1.000000},
  110. {10.000000, 0.000000, 1.000000},
  111.     },
  112.      {
  113. {10.540641, 0.000000, 0.841254},
  114. {10.024745, -3.257237, 0.841254},
  115. {8.527557, -6.195633, 0.841254},
  116. {6.195633, -8.527557, 0.841254},
  117. {3.257237, -10.024745, 0.841254},
  118. {0.000000, -10.540641, 0.841254},
  119. {-3.257237, -10.024745, 0.841254},
  120. {-6.195633, -8.527557, 0.841254},
  121. {-8.527557, -6.195633, 0.841254},
  122. {-10.024745, -3.257237, 0.841254},
  123. {-10.540641, 0.000000, 0.841254},
  124. {-10.024745, 3.257237, 0.841254},
  125. {-8.527557, 6.195633, 0.841254},
  126. {-6.195633, 8.527557, 0.841254},
  127. {-3.257237, 10.024745, 0.841254},
  128. {0.000000, 10.540641, 0.841254},
  129. {3.257237, 10.024745, 0.841254},
  130. {6.195633, 8.527557, 0.841254},
  131. {8.527557, 6.195633, 0.841254},
  132. {10.024745, 3.257237, 0.841254},
  133. {10.540641, 0.000000, 0.841254},
  134.     },
  135.      {
  136. {10.909632, 0.000000, 0.415415},
  137. {10.375676, -3.371262, 0.415415},
  138. {8.826077, -6.412521, 0.415415},
  139. {6.412521, -8.826077, 0.415415},
  140. {3.371262, -10.375676, 0.415415},
  141. {0.000000, -10.909632, 0.415415},
  142. {-3.371262, -10.375676, 0.415415},
  143. {-6.412521, -8.826077, 0.415415},
  144. {-8.826077, -6.412521, 0.415415},
  145. {-10.375676, -3.371262, 0.415415},
  146. {-10.909632, 0.000000, 0.415415},
  147. {-10.375676, 3.371262, 0.415415},
  148. {-8.826077, 6.412521, 0.415415},
  149. {-6.412521, 8.826077, 0.415415},
  150. {-3.371262, 10.375676, 0.415415},
  151. {0.000000, 10.909632, 0.415415},
  152. {3.371262, 10.375676, 0.415415},
  153. {6.412521, 8.826077, 0.415415},
  154. {8.826077, 6.412521, 0.415415},
  155. {10.375676, 3.371262, 0.415415},
  156. {10.909632, 0.000000, 0.415415},
  157.     },
  158.      {
  159. {10.989821, 0.000000, -0.142315},
  160. {10.451941, -3.396042, -0.142315},
  161. {8.890952, -6.459655, -0.142315},
  162. {6.459655, -8.890952, -0.142315},
  163. {3.396042, -10.451941, -0.142315},
  164. {0.000000, -10.989821, -0.142315},
  165. {-3.396042, -10.451941, -0.142315},
  166. {-6.459655, -8.890952, -0.142315},
  167. {-8.890952, -6.459655, -0.142315},
  168. {-10.451941, -3.396042, -0.142315},
  169. {-10.989821, 0.000000, -0.142315},
  170. {-10.451941, 3.396042, -0.142315},
  171. {-8.890952, 6.459655, -0.142315},
  172. {-6.459655, 8.890952, -0.142315},
  173. {-3.396042, 10.451941, -0.142315},
  174. {0.000000, 10.989821, -0.142315},
  175. {3.396042, 10.451941, -0.142315},
  176. {6.459655, 8.890952, -0.142315},
  177. {8.890952, 6.459655, -0.142315},
  178. {10.451941, 3.396042, -0.142315},
  179. {10.989821, 0.000000, -0.142315},
  180.     },
  181.      {
  182. {10.755750, 0.000000, -0.654861},
  183. {10.229325, -3.323709, -0.654861},
  184. {8.701584, -6.322071, -0.654861},
  185. {6.322071, -8.701584, -0.654861},
  186. {3.323709, -10.229325, -0.654861},
  187. {0.000000, -10.755750, -0.654861},
  188. {-3.323709, -10.229325, -0.654861},
  189. {-6.322071, -8.701584, -0.654861},
  190. {-8.701584, -6.322071, -0.654861},
  191. {-10.229325, -3.323709, -0.654861},
  192. {-10.755750, 0.000000, -0.654861},
  193. {-10.229325, 3.323709, -0.654861},
  194. {-8.701584, 6.322071, -0.654861},
  195. {-6.322071, 8.701584, -0.654861},
  196. {-3.323709, 10.229325, -0.654861},
  197. {0.000000, 10.755750, -0.654861},
  198. {3.323709, 10.229325, -0.654861},
  199. {6.322071, 8.701584, -0.654861},
  200. {8.701584, 6.322071, -0.654861},
  201. {10.229325, 3.323709, -0.654861},
  202. {10.755750, 0.000000, -0.654861},
  203.     },
  204.      {
  205. {10.281733, 0.000000, -0.959493},
  206. {9.778509, -3.177230, -0.959493},
  207. {8.318096, -6.043451, -0.959493},
  208. {6.043451, -8.318096, -0.959493},
  209. {3.177230, -9.778509, -0.959493},
  210. {0.000000, -10.281733, -0.959493},
  211. {-3.177230, -9.778509, -0.959493},
  212. {-6.043451, -8.318096, -0.959493},
  213. {-8.318096, -6.043451, -0.959493},
  214. {-9.778509, -3.177230, -0.959493},
  215. {-10.281733, 0.000000, -0.959493},
  216. {-9.778509, 3.177230, -0.959493},
  217. {-8.318096, 6.043451, -0.959493},
  218. {-6.043451, 8.318096, -0.959493},
  219. {-3.177230, 9.778509, -0.959493},
  220. {0.000000, 10.281733, -0.959493},
  221. {3.177230, 9.778509, -0.959493},
  222. {6.043451, 8.318096, -0.959493},
  223. {8.318096, 6.043451, -0.959493},
  224. {9.778509, 3.177230, -0.959493},
  225. {10.281733, 0.000000, -0.959493},
  226.     },
  227.      {
  228. {9.718267, 0.000000, -0.959493},
  229. {9.242621, -3.003110, -0.959493},
  230. {7.862244, -5.712255, -0.959493},
  231. {5.712255, -7.862244, -0.959493},
  232. {3.003110, -9.242621, -0.959493},
  233. {0.000000, -9.718267, -0.959493},
  234. {-3.003110, -9.242621, -0.959493},
  235. {-5.712255, -7.862244, -0.959493},
  236. {-7.862244, -5.712255, -0.959493},
  237. {-9.242621, -3.003110, -0.959493},
  238. {-9.718267, 0.000000, -0.959493},
  239. {-9.242621, 3.003110, -0.959493},
  240. {-7.862244, 5.712255, -0.959493},
  241. {-5.712255, 7.862244, -0.959493},
  242. {-3.003110, 9.242621, -0.959493},
  243. {0.000000, 9.718267, -0.959493},
  244. {3.003110, 9.242621, -0.959493},
  245. {5.712255, 7.862244, -0.959493},
  246. {7.862244, 5.712255, -0.959493},
  247. {9.242621, 3.003110, -0.959493},
  248. {9.718267, 0.000000, -0.959493},
  249.     },
  250.      {
  251. {9.244250, 0.000000, -0.654861},
  252. {8.791805, -2.856631, -0.654861},
  253. {7.478756, -5.433634, -0.654861},
  254. {5.433634, -7.478756, -0.654861},
  255. {2.856631, -8.791805, -0.654861},
  256. {0.000000, -9.244250, -0.654861},
  257. {-2.856631, -8.791805, -0.654861},
  258. {-5.433634, -7.478756, -0.654861},
  259. {-7.478756, -5.433634, -0.654861},
  260. {-8.791805, -2.856631, -0.654861},
  261. {-9.244250, 0.000000, -0.654861},
  262. {-8.791805, 2.856631, -0.654861},
  263. {-7.478756, 5.433634, -0.654861},
  264. {-5.433634, 7.478756, -0.654861},
  265. {-2.856631, 8.791805, -0.654861},
  266. {0.000000, 9.244250, -0.654861},
  267. {2.856631, 8.791805, -0.654861},
  268. {5.433634, 7.478756, -0.654861},
  269. {7.478756, 5.433634, -0.654861},
  270. {8.791805, 2.856631, -0.654861},
  271. {9.244250, 0.000000, -0.654861},
  272.     },
  273.      {
  274. {9.010179, 0.000000, -0.142315},
  275. {8.569189, -2.784298, -0.142315},
  276. {7.289388, -5.296050, -0.142315},
  277. {5.296050, -7.289388, -0.142315},
  278. {2.784298, -8.569189, -0.142315},
  279. {0.000000, -9.010179, -0.142315},
  280. {-2.784298, -8.569189, -0.142315},
  281. {-5.296050, -7.289388, -0.142315},
  282. {-7.289388, -5.296050, -0.142315},
  283. {-8.569189, -2.784298, -0.142315},
  284. {-9.010179, 0.000000, -0.142315},
  285. {-8.569189, 2.784298, -0.142315},
  286. {-7.289388, 5.296050, -0.142315},
  287. {-5.296050, 7.289388, -0.142315},
  288. {-2.784298, 8.569189, -0.142315},
  289. {0.000000, 9.010179, -0.142315},
  290. {2.784298, 8.569189, -0.142315},
  291. {5.296050, 7.289388, -0.142315},
  292. {7.289388, 5.296050, -0.142315},
  293. {8.569189, 2.784298, -0.142315},
  294. {9.010179, 0.000000, -0.142315},
  295.     },
  296.      {
  297. {9.090367, 0.000000, 0.415414},
  298. {8.645453, -2.809078, 0.415414},
  299. {7.354262, -5.343184, 0.415414},
  300. {5.343184, -7.354262, 0.415414},
  301. {2.809078, -8.645453, 0.415414},
  302. {0.000000, -9.090367, 0.415414},
  303. {-2.809078, -8.645453, 0.415414},
  304. {-5.343184, -7.354262, 0.415414},
  305. {-7.354262, -5.343184, 0.415414},
  306. {-8.645453, -2.809078, 0.415414},
  307. {-9.090367, 0.000000, 0.415414},
  308. {-8.645453, 2.809078, 0.415414},
  309. {-7.354262, 5.343184, 0.415414},
  310. {-5.343184, 7.354262, 0.415414},
  311. {-2.809078, 8.645453, 0.415414},
  312. {0.000000, 9.090367, 0.415414},
  313. {2.809078, 8.645453, 0.415414},
  314. {5.343184, 7.354262, 0.415414},
  315. {7.354262, 5.343184, 0.415414},
  316. {8.645453, 2.809078, 0.415414},
  317. {9.090367, 0.000000, 0.415414},
  318.     },
  319.      {
  320. {9.459358, 0.000000, 0.841253},
  321. {8.996385, -2.923103, 0.841253},
  322. {7.652781, -5.560071, 0.841253},
  323. {5.560071, -7.652781, 0.841253},
  324. {2.923103, -8.996385, 0.841253},
  325. {0.000000, -9.459358, 0.841253},
  326. {-2.923103, -8.996385, 0.841253},
  327. {-5.560071, -7.652781, 0.841253},
  328. {-7.652781, -5.560071, 0.841253},
  329. {-8.996385, -2.923103, 0.841253},
  330. {-9.459358, 0.000000, 0.841253},
  331. {-8.996385, 2.923103, 0.841253},
  332. {-7.652781, 5.560071, 0.841253},
  333. {-5.560071, 7.652781, 0.841253},
  334. {-2.923103, 8.996385, 0.841253},
  335. {0.000000, 9.459358, 0.841253},
  336. {2.923103, 8.996385, 0.841253},
  337. {5.560071, 7.652781, 0.841253},
  338. {7.652781, 5.560071, 0.841253},
  339. {8.996385, 2.923103, 0.841253},
  340. {9.459358, 0.000000, 0.841253},
  341.     },
  342.      {
  343. {9.999999, 0.000000, 1.000000},
  344. {9.510564, -3.090170, 1.000000},
  345. {8.090169, -5.877852, 1.000000},
  346. {5.877852, -8.090169, 1.000000},
  347. {3.090170, -9.510564, 1.000000},
  348. {0.000000, -9.999999, 1.000000},
  349. {-3.090170, -9.510564, 1.000000},
  350. {-5.877852, -8.090169, 1.000000},
  351. {-8.090169, -5.877852, 1.000000},
  352. {-9.510564, -3.090170, 1.000000},
  353. {-9.999999, 0.000000, 1.000000},
  354. {-9.510564, 3.090170, 1.000000},
  355. {-8.090169, 5.877852, 1.000000},
  356. {-5.877852, 8.090169, 1.000000},
  357. {-3.090170, 9.510564, 1.000000},
  358. {0.000000, 9.999999, 1.000000},
  359. {3.090170, 9.510564, 1.000000},
  360. {5.877852, 8.090169, 1.000000},
  361. {8.090169, 5.877852, 1.000000},
  362. {9.510564, 3.090170, 1.000000},
  363. {9.999999, 0.000000, 1.000000},
  364.     },
  365. };
  366. float tn[12][21][3] = {
  367.     {
  368. {0.000000, 0.000000, 1.000000},
  369. {0.000000, 0.000000, 1.000000},
  370. {0.000000, 0.000000, 1.000000},
  371. {0.000000, 0.000000, 1.000000},
  372. {0.000000, 0.000000, 1.000000},
  373. {0.000000, 0.000000, 1.000000},
  374. {0.000000, 0.000000, 1.000000},
  375. {0.000000, 0.000000, 1.000000},
  376. {0.000000, 0.000000, 1.000000},
  377. {0.000000, 0.000000, 1.000000},
  378. {0.000000, 0.000000, 1.000000},
  379. {0.000000, 0.000000, 1.000000},
  380. {0.000000, 0.000000, 1.000000},
  381. {0.000000, 0.000000, 1.000000},
  382. {0.000000, 0.000000, 1.000000},
  383. {0.000000, 0.000000, 1.000000},
  384. {0.000000, 0.000000, 1.000000},
  385. {0.000000, 0.000000, 1.000000},
  386. {0.000000, 0.000000, 1.000000},
  387. {0.000000, 0.000000, 1.000000},
  388. {0.000000, 0.000000, 1.000000},
  389.     },
  390.     {
  391. {0.540641, 0.000000, 0.841254},
  392. {0.514180, -0.167067, 0.841254},
  393. {0.437388, -0.317781, 0.841254},
  394. {0.317781, -0.437388, 0.841254},
  395. {0.167067, -0.514180, 0.841254},
  396. {0.000000, -0.540641, 0.841254},
  397. {-0.167067, -0.514180, 0.841254},
  398. {-0.317781, -0.437388, 0.841254},
  399. {-0.437388, -0.317781, 0.841254},
  400. {-0.514180, -0.167067, 0.841254},
  401. {-0.540641, 0.000000, 0.841254},
  402. {-0.514180, 0.167067, 0.841254},
  403. {-0.437388, 0.317781, 0.841254},
  404. {-0.317781, 0.437388, 0.841254},
  405. {-0.167067, 0.514180, 0.841254},
  406. {0.000000, 0.540641, 0.841254},
  407. {0.167067, 0.514180, 0.841254},
  408. {0.317781, 0.437388, 0.841254},
  409. {0.437388, 0.317781, 0.841254},
  410. {0.514180, 0.167067, 0.841254},
  411. {0.540641, 0.000000, 0.841254},
  412.     },
  413.     {
  414. {0.909632, 0.000000, 0.415415},
  415. {0.865111, -0.281092, 0.415415},
  416. {0.735908, -0.534668, 0.415415},
  417. {0.534668, -0.735908, 0.415415},
  418. {0.281092, -0.865111, 0.415415},
  419. {0.000000, -0.909632, 0.415415},
  420. {-0.281092, -0.865111, 0.415415},
  421. {-0.534668, -0.735908, 0.415415},
  422. {-0.735908, -0.534668, 0.415415},
  423. {-0.865111, -0.281092, 0.415415},
  424. {-0.909632, 0.000000, 0.415415},
  425. {-0.865111, 0.281092, 0.415415},
  426. {-0.735908, 0.534668, 0.415415},
  427. {-0.534668, 0.735908, 0.415415},
  428. {-0.281092, 0.865111, 0.415415},
  429. {0.000000, 0.909632, 0.415415},
  430. {0.281092, 0.865111, 0.415415},
  431. {0.534668, 0.735908, 0.415415},
  432. {0.735908, 0.534668, 0.415415},
  433. {0.865111, 0.281092, 0.415415},
  434. {0.909632, 0.000000, 0.415415},
  435.     },
  436.     {
  437. {0.989821, 0.000000, -0.142315},
  438. {0.941376, -0.305872, -0.142315},
  439. {0.800782, -0.581802, -0.142315},
  440. {0.581802, -0.800782, -0.142315},
  441. {0.305872, -0.941376, -0.142315},
  442. {0.000000, -0.989821, -0.142315},
  443. {-0.305872, -0.941376, -0.142315},
  444. {-0.581802, -0.800782, -0.142315},
  445. {-0.800782, -0.581802, -0.142315},
  446. {-0.941376, -0.305872, -0.142315},
  447. {-0.989821, 0.000000, -0.142315},
  448. {-0.941376, 0.305872, -0.142315},
  449. {-0.800782, 0.581802, -0.142315},
  450. {-0.581802, 0.800782, -0.142315},
  451. {-0.305872, 0.941376, -0.142315},
  452. {0.000000, 0.989821, -0.142315},
  453. {0.305872, 0.941376, -0.142315},
  454. {0.581802, 0.800782, -0.142315},
  455. {0.800782, 0.581802, -0.142315},
  456. {0.941376, 0.305872, -0.142315},
  457. {0.989821, 0.000000, -0.142315},
  458.     },
  459.     {
  460. {0.755750, 0.000000, -0.654861},
  461. {0.718761, -0.233539, -0.654861},
  462. {0.611414, -0.444218, -0.654861},
  463. {0.444218, -0.611414, -0.654861},
  464. {0.233539, -0.718761, -0.654861},
  465. {0.000000, -0.755750, -0.654861},
  466. {-0.233539, -0.718761, -0.654861},
  467. {-0.444218, -0.611414, -0.654861},
  468. {-0.611414, -0.444218, -0.654861},
  469. {-0.718761, -0.233539, -0.654861},
  470. {-0.755750, 0.000000, -0.654861},
  471. {-0.718761, 0.233539, -0.654861},
  472. {-0.611414, 0.444218, -0.654861},
  473. {-0.444218, 0.611414, -0.654861},
  474. {-0.233539, 0.718761, -0.654861},
  475. {0.000000, 0.755750, -0.654861},
  476. {0.233539, 0.718761, -0.654861},
  477. {0.444218, 0.611414, -0.654861},
  478. {0.611414, 0.444218, -0.654861},
  479. {0.718761, 0.233539, -0.654861},
  480. {0.755750, 0.000000, -0.654861},
  481.     },
  482.     {
  483. {0.281733, 0.000000, -0.959493},
  484. {0.267944, -0.087060, -0.959493},
  485. {0.227927, -0.165598, -0.959493},
  486. {0.165598, -0.227927, -0.959493},
  487. {0.087060, -0.267944, -0.959493},
  488. {0.000000, -0.281733, -0.959493},
  489. {-0.087060, -0.267944, -0.959493},
  490. {-0.165598, -0.227927, -0.959493},
  491. {-0.227927, -0.165598, -0.959493},
  492. {-0.267944, -0.087060, -0.959493},
  493. {-0.281733, 0.000000, -0.959493},
  494. {-0.267944, 0.087060, -0.959493},
  495. {-0.227927, 0.165598, -0.959493},
  496. {-0.165598, 0.227927, -0.959493},
  497. {-0.087060, 0.267944, -0.959493},
  498. {0.000000, 0.281733, -0.959493},
  499. {0.087060, 0.267944, -0.959493},
  500. {0.165598, 0.227927, -0.959493},
  501. {0.227927, 0.165598, -0.959493},
  502. {0.267944, 0.087060, -0.959493},
  503. {0.281733, 0.000000, -0.959493},
  504.     },
  505.     {
  506. {-0.281732, 0.000000, -0.959493},
  507. {-0.267943, 0.087060, -0.959493},
  508. {-0.227926, 0.165598, -0.959493},
  509. {-0.165598, 0.227926, -0.959493},
  510. {-0.087060, 0.267943, -0.959493},
  511. {0.000000, 0.281732, -0.959493},
  512. {0.087060, 0.267943, -0.959493},
  513. {0.165598, 0.227926, -0.959493},
  514. {0.227926, 0.165598, -0.959493},
  515. {0.267943, 0.087060, -0.959493},
  516. {0.281732, 0.000000, -0.959493},
  517. {0.267943, -0.087060, -0.959493},
  518. {0.227926, -0.165598, -0.959493},
  519. {0.165598, -0.227926, -0.959493},
  520. {0.087060, -0.267943, -0.959493},
  521. {0.000000, -0.281732, -0.959493},
  522. {-0.087060, -0.267943, -0.959493},
  523. {-0.165598, -0.227926, -0.959493},
  524. {-0.227926, -0.165598, -0.959493},
  525. {-0.267943, -0.087060, -0.959493},
  526. {-0.281732, 0.000000, -0.959493},
  527.     },
  528.     {
  529. {-0.755749, 0.000000, -0.654861},
  530. {-0.718760, 0.233539, -0.654861},
  531. {-0.611414, 0.444218, -0.654861},
  532. {-0.444218, 0.611414, -0.654861},
  533. {-0.233539, 0.718760, -0.654861},
  534. {0.000000, 0.755749, -0.654861},
  535. {0.233539, 0.718760, -0.654861},
  536. {0.444218, 0.611414, -0.654861},
  537. {0.611414, 0.444218, -0.654861},
  538. {0.718760, 0.233539, -0.654861},
  539. {0.755749, 0.000000, -0.654861},
  540. {0.718760, -0.233539, -0.654861},
  541. {0.611414, -0.444218, -0.654861},
  542. {0.444218, -0.611414, -0.654861},
  543. {0.233539, -0.718760, -0.654861},
  544. {0.000000, -0.755749, -0.654861},
  545. {-0.233539, -0.718760, -0.654861},
  546. {-0.444218, -0.611414, -0.654861},
  547. {-0.611414, -0.444218, -0.654861},
  548. {-0.718760, -0.233539, -0.654861},
  549. {-0.755749, 0.000000, -0.654861},
  550.     },
  551.     {
  552. {-0.989821, 0.000000, -0.142315},
  553. {-0.941376, 0.305872, -0.142315},
  554. {-0.800782, 0.581802, -0.142315},
  555. {-0.581802, 0.800782, -0.142315},
  556. {-0.305872, 0.941376, -0.142315},
  557. {0.000000, 0.989821, -0.142315},
  558. {0.305872, 0.941376, -0.142315},
  559. {0.581802, 0.800782, -0.142315},
  560. {0.800782, 0.581802, -0.142315},
  561. {0.941376, 0.305872, -0.142315},
  562. {0.989821, 0.000000, -0.142315},
  563. {0.941376, -0.305872, -0.142315},
  564. {0.800782, -0.581802, -0.142315},
  565. {0.581802, -0.800782, -0.142315},
  566. {0.305872, -0.941376, -0.142315},
  567. {0.000000, -0.989821, -0.142315},
  568. {-0.305872, -0.941376, -0.142315},
  569. {-0.581802, -0.800782, -0.142315},
  570. {-0.800782, -0.581802, -0.142315},
  571. {-0.941376, -0.305872, -0.142315},
  572. {-0.989821, 0.000000, -0.142315},
  573.     },
  574.     {
  575. {-0.909632, 0.000000, 0.415414},
  576. {-0.865112, 0.281092, 0.415414},
  577. {-0.735908, 0.534668, 0.415414},
  578. {-0.534668, 0.735908, 0.415414},
  579. {-0.281092, 0.865112, 0.415414},
  580. {0.000000, 0.909632, 0.415414},
  581. {0.281092, 0.865112, 0.415414},
  582. {0.534668, 0.735908, 0.415414},
  583. {0.735908, 0.534668, 0.415414},
  584. {0.865112, 0.281092, 0.415414},
  585. {0.909632, 0.000000, 0.415414},
  586. {0.865112, -0.281092, 0.415414},
  587. {0.735908, -0.534668, 0.415414},
  588. {0.534668, -0.735908, 0.415414},
  589. {0.281092, -0.865112, 0.415414},
  590. {0.000000, -0.909632, 0.415414},
  591. {-0.281092, -0.865112, 0.415414},
  592. {-0.534668, -0.735908, 0.415414},
  593. {-0.735908, -0.534668, 0.415414},
  594. {-0.865112, -0.281092, 0.415414},
  595. {-0.909632, 0.000000, 0.415414},
  596.     },
  597.     {
  598. {-0.540642, 0.000000, 0.841253},
  599. {-0.514181, 0.167067, 0.841253},
  600. {-0.437388, 0.317781, 0.841253},
  601. {-0.317781, 0.437388, 0.841253},
  602. {-0.167067, 0.514181, 0.841253},
  603. {0.000000, 0.540642, 0.841253},
  604. {0.167067, 0.514181, 0.841253},
  605. {0.317781, 0.437388, 0.841253},
  606. {0.437388, 0.317781, 0.841253},
  607. {0.514181, 0.167067, 0.841253},
  608. {0.540642, 0.000000, 0.841253},
  609. {0.514181, -0.167067, 0.841253},
  610. {0.437388, -0.317781, 0.841253},
  611. {0.317781, -0.437388, 0.841253},
  612. {0.167067, -0.514181, 0.841253},
  613. {0.000000, -0.540642, 0.841253},
  614. {-0.167067, -0.514181, 0.841253},
  615. {-0.317781, -0.437388, 0.841253},
  616. {-0.437388, -0.317781, 0.841253},
  617. {-0.514181, -0.167067, 0.841253},
  618. {-0.540642, 0.000000, 0.841253},
  619.     },
  620.     {
  621. {-0.000001, 0.000000, 1.000000},
  622. {-0.000001, 0.000000, 1.000000},
  623. {-0.000001, 0.000001, 1.000000},
  624. {-0.000001, 0.000001, 1.000000},
  625. {0.000000, 0.000001, 1.000000},
  626. {0.000000, 0.000001, 1.000000},
  627. {0.000000, 0.000001, 1.000000},
  628. {0.000001, 0.000001, 1.000000},
  629. {0.000001, 0.000001, 1.000000},
  630. {0.000001, 0.000000, 1.000000},
  631. {0.000001, 0.000000, 1.000000},
  632. {0.000001, 0.000000, 1.000000},
  633. {0.000001, -0.000001, 1.000000},
  634. {0.000001, -0.000001, 1.000000},
  635. {0.000000, -0.000001, 1.000000},
  636. {0.000000, -0.000001, 1.000000},
  637. {0.000000, -0.000001, 1.000000},
  638. {-0.000001, -0.000001, 1.000000},
  639. {-0.000001, -0.000001, 1.000000},
  640. {-0.000001, 0.000000, 1.000000},
  641. {-0.000001, 0.000000, 1.000000},
  642.     },
  643. };
  644. void draw_base(void) {
  645.   
  646.   glCallList( MAT_HOLDER_BASE); 
  647.   
  648.   glBegin(GL_POLYGON);
  649.   glNormal3fv(bn[0]);
  650.   glVertex3fv(bp[0][0]);
  651.   glVertex3fv(bp[0][1]);
  652.   glVertex3fv(bp[0][3]);
  653.   glVertex3fv(bp[0][2]);
  654.   glEnd();
  655.   glBegin(GL_POLYGON);
  656.   glNormal3fv(bn[1]);
  657.   glVertex3fv(bp[0][2]);
  658.   glVertex3fv(bp[0][3]);
  659.   glVertex3fv(bp[0][5]);
  660.   glVertex3fv(bp[0][4]);
  661.   glEnd();
  662.   glBegin(GL_POLYGON);
  663.   glNormal3fv(bn[2]);
  664.   glVertex3fv(bp[0][4]);
  665.   glVertex3fv(bp[0][5]);
  666.   glVertex3fv(bp[0][7]);
  667.   glVertex3fv(bp[0][6]);
  668.   glEnd();
  669.   glBegin(GL_POLYGON);
  670.   glNormal3fv(bn[3]);
  671.   glVertex3fv(bp[0][6]);
  672.   glVertex3fv(bp[0][7]);
  673.   glVertex3fv(bp[0][1]);
  674.   glVertex3fv(bp[0][0]);
  675.   glEnd();
  676.   glBegin(GL_TRIANGLE_STRIP);
  677.   glNormal3fv(bn[4]);
  678.   glVertex3fv(bp[0][1]);
  679.   glVertex3fv(bp[1][0]);
  680.   glVertex3fv(bp[0][3]);
  681.   glVertex3fv(bp[1][2]);
  682.   glVertex3fv(bp[0][5]);
  683.   glVertex3fv(bp[1][4]);
  684.   glVertex3fv(bp[0][7]);
  685.   glVertex3fv(bp[1][6]);
  686.   glVertex3fv(bp[0][1]);
  687.   glVertex3fv(bp[1][0]);
  688.   glEnd();
  689.   glBegin(GL_POLYGON);
  690.   glNormal3fv(bn[0]);
  691.   glVertex3fv(bp[1][0]);
  692.   glVertex3fv(bp[1][1]);
  693.   glVertex3fv(bp[1][3]);
  694.   glVertex3fv(bp[1][2]);
  695.   glEnd();
  696.   glBegin(GL_POLYGON);
  697.   glNormal3fv(bn[1]);
  698.   glVertex3fv(bp[1][2]);
  699.   glVertex3fv(bp[1][3]);
  700.   glVertex3fv(bp[1][5]);
  701.   glVertex3fv(bp[1][4]);
  702.   glEnd();
  703.   glBegin(GL_POLYGON);
  704.   glNormal3fv(bn[2]);
  705.   glVertex3fv(bp[1][4]);
  706.   glVertex3fv(bp[1][5]);
  707.   glVertex3fv(bp[1][7]);
  708.   glVertex3fv(bp[1][6]);
  709.   glEnd();
  710.   glBegin(GL_POLYGON);
  711.   glNormal3fv(bn[3]);
  712.   glVertex3fv(bp[1][6]);
  713.   glVertex3fv(bp[1][7]);
  714.   glVertex3fv(bp[1][1]);
  715.   glVertex3fv(bp[1][0]);
  716.   glEnd();
  717.   glBegin(GL_TRIANGLE_STRIP);
  718.   glNormal3fv(bn[4]);
  719.   glVertex3fv(bp[1][1]);
  720.   glVertex3fv(bp[2][0]);
  721.   glVertex3fv(bp[1][3]);
  722.   glVertex3fv(bp[2][2]);
  723.   glVertex3fv(bp[1][5]);
  724.   glVertex3fv(bp[2][4]);
  725.   glVertex3fv(bp[1][7]);
  726.   glVertex3fv(bp[2][6]);
  727.   glVertex3fv(bp[1][1]);
  728.   glVertex3fv(bp[2][0]);
  729.   glEnd();
  730.   glBegin(GL_POLYGON);
  731.   glNormal3fv(bn[0]);
  732.   glVertex3fv(bp[2][0]);
  733.   glVertex3fv(bp[2][1]);
  734.   glVertex3fv(bp[2][3]);
  735.   glVertex3fv(bp[2][2]);
  736.   glEnd();
  737.   glBegin(GL_POLYGON);
  738.   glNormal3fv(bn[1]);
  739.   glVertex3fv(bp[2][2]);
  740.   glVertex3fv(bp[2][3]);
  741.   glVertex3fv(bp[2][5]);
  742.   glVertex3fv(bp[2][4]);
  743.   glEnd();
  744.   glBegin(GL_POLYGON);
  745.   glNormal3fv(bn[2]);
  746.   glVertex3fv(bp[2][4]);
  747.   glVertex3fv(bp[2][5]);
  748.   glVertex3fv(bp[2][7]);
  749.   glVertex3fv(bp[2][6]);
  750.   glEnd();
  751.   glBegin(GL_POLYGON);
  752.   glNormal3fv(bn[3]);
  753.   glVertex3fv(bp[2][6]);
  754.   glVertex3fv(bp[2][7]);
  755.   glVertex3fv(bp[2][1]);
  756.   glVertex3fv(bp[2][0]);
  757.   glEnd();
  758.   glBegin(GL_TRIANGLE_STRIP);
  759.   glNormal3fv(bn[4]);
  760.   glVertex3fv(bp[2][1]);
  761.   glVertex3fv(bp[3][0]);
  762.   glVertex3fv(bp[2][3]);
  763.   glVertex3fv(bp[3][2]);
  764.   glVertex3fv(bp[2][5]);
  765.   glVertex3fv(bp[3][4]);
  766.   glVertex3fv(bp[2][7]);
  767.   glVertex3fv(bp[3][6]);
  768.   glVertex3fv(bp[2][1]);
  769.   glVertex3fv(bp[3][0]);
  770.   glEnd();
  771.   glBegin(GL_POLYGON);
  772.   glNormal3fv(bn[2]);
  773.   glVertex3fv(bp[3][0]);
  774.   glVertex3fv(bp[3][1]);
  775.   glVertex3fv(bp[3][3]);
  776.   glVertex3fv(bp[3][2]);
  777.   glEnd();
  778.   glBegin(GL_POLYGON);
  779.   glNormal3fv(bn[3]);
  780.   glVertex3fv(bp[3][2]);
  781.   glVertex3fv(bp[3][3]);
  782.   glVertex3fv(bp[3][5]);
  783.   glVertex3fv(bp[3][4]);
  784.   glEnd();
  785.   glBegin(GL_POLYGON);
  786.   glNormal3fv(bn[0]);
  787.   glVertex3fv(bp[3][4]);
  788.   glVertex3fv(bp[3][5]);
  789.   glVertex3fv(bp[3][7]);
  790.   glVertex3fv(bp[3][6]);
  791.   glEnd();
  792.   glBegin(GL_POLYGON);
  793.   glNormal3fv(bn[1]);
  794.   glVertex3fv(bp[3][6]);
  795.   glVertex3fv(bp[3][7]);
  796.   glVertex3fv(bp[3][1]);
  797.   glVertex3fv(bp[3][0]);
  798.   glEnd();
  799.   glBegin(GL_POLYGON);
  800.   glNormal3fv(bn[4]);
  801.   glVertex3fv(bp[3][1]);
  802.   glVertex3fv(bp[3][3]);
  803.   glVertex3fv(bp[3][5]);
  804.   glVertex3fv(bp[3][7]);
  805.   glEnd();
  806. }
  807. void draw_torus(void) {
  808.   
  809.   glCallList( MAT_HOLDER_RINGS);
  810.   
  811.   glBegin(GL_TRIANGLE_STRIP);
  812.   glNormal3fv(tn[0][0]); glVertex3fv(tp[0][0]);
  813.   glNormal3fv(tn[1][0]); glVertex3fv(tp[1][0]);
  814.   glNormal3fv(tn[0][1]); glVertex3fv(tp[0][1]);
  815.   glNormal3fv(tn[1][1]); glVertex3fv(tp[1][1]);
  816.   glNormal3fv(tn[0][2]); glVertex3fv(tp[0][2]);
  817.   glNormal3fv(tn[1][2]); glVertex3fv(tp[1][2]);
  818.   glNormal3fv(tn[0][3]); glVertex3fv(tp[0][3]);
  819.   glNormal3fv(tn[1][3]); glVertex3fv(tp[1][3]);
  820.   glNormal3fv(tn[0][4]); glVertex3fv(tp[0][4]);
  821.   glNormal3fv(tn[1][4]); glVertex3fv(tp[1][4]);
  822.   glNormal3fv(tn[0][5]); glVertex3fv(tp[0][5]);
  823.   glNormal3fv(tn[1][5]); glVertex3fv(tp[1][5]);
  824.   glNormal3fv(tn[0][6]); glVertex3fv(tp[0][6]);
  825.   glNormal3fv(tn[1][6]); glVertex3fv(tp[1][6]);
  826.   glNormal3fv(tn[0][7]); glVertex3fv(tp[0][7]);
  827.   glNormal3fv(tn[1][7]); glVertex3fv(tp[1][7]);
  828.   glNormal3fv(tn[0][8]); glVertex3fv(tp[0][8]);
  829.   glNormal3fv(tn[1][8]); glVertex3fv(tp[1][8]);
  830.   glNormal3fv(tn[0][9]); glVertex3fv(tp[0][9]);
  831.   glNormal3fv(tn[1][9]); glVertex3fv(tp[1][9]);
  832.   glNormal3fv(tn[0][10]); glVertex3fv(tp[0][10]);
  833.   glNormal3fv(tn[1][10]); glVertex3fv(tp[1][10]);
  834.   glNormal3fv(tn[0][11]); glVertex3fv(tp[0][11]);
  835.   glNormal3fv(tn[1][11]); glVertex3fv(tp[1][11]);
  836.   glNormal3fv(tn[0][12]); glVertex3fv(tp[0][12]);
  837.   glNormal3fv(tn[1][12]); glVertex3fv(tp[1][12]);
  838.   glNormal3fv(tn[0][13]); glVertex3fv(tp[0][13]);
  839.   glNormal3fv(tn[1][13]); glVertex3fv(tp[1][13]);
  840.   glNormal3fv(tn[0][14]); glVertex3fv(tp[0][14]);
  841.   glNormal3fv(tn[1][14]); glVertex3fv(tp[1][14]);
  842.   glNormal3fv(tn[0][15]); glVertex3fv(tp[0][15]);
  843.   glNormal3fv(tn[1][15]); glVertex3fv(tp[1][15]);
  844.   glNormal3fv(tn[0][16]); glVertex3fv(tp[0][16]);
  845.   glNormal3fv(tn[1][16]); glVertex3fv(tp[1][16]);
  846.   glNormal3fv(tn[0][17]); glVertex3fv(tp[0][17]);
  847.   glNormal3fv(tn[1][17]); glVertex3fv(tp[1][17]);
  848.   glNormal3fv(tn[0][18]); glVertex3fv(tp[0][18]);
  849.   glNormal3fv(tn[1][18]); glVertex3fv(tp[1][18]);
  850.   glNormal3fv(tn[0][19]); glVertex3fv(tp[0][19]);
  851.   glNormal3fv(tn[1][19]); glVertex3fv(tp[1][19]);
  852.   glNormal3fv(tn[0][20]); glVertex3fv(tp[0][20]);
  853.   glNormal3fv(tn[1][20]); glVertex3fv(tp[1][20]);
  854.   glEnd();
  855.   glBegin(GL_TRIANGLE_STRIP);
  856.   glNormal3fv(tn[1][0]); glVertex3fv(tp[1][0]);
  857.   glNormal3fv(tn[2][0]); glVertex3fv(tp[2][0]);
  858.   glNormal3fv(tn[1][1]); glVertex3fv(tp[1][1]);
  859.   glNormal3fv(tn[2][1]); glVertex3fv(tp[2][1]);
  860.   glNormal3fv(tn[1][2]); glVertex3fv(tp[1][2]);
  861.   glNormal3fv(tn[2][2]); glVertex3fv(tp[2][2]);
  862.   glNormal3fv(tn[1][3]); glVertex3fv(tp[1][3]);
  863.   glNormal3fv(tn[2][3]); glVertex3fv(tp[2][3]);
  864.   glNormal3fv(tn[1][4]); glVertex3fv(tp[1][4]);
  865.   glNormal3fv(tn[2][4]); glVertex3fv(tp[2][4]);
  866.   glNormal3fv(tn[1][5]); glVertex3fv(tp[1][5]);
  867.   glNormal3fv(tn[2][5]); glVertex3fv(tp[2][5]);
  868.   glNormal3fv(tn[1][6]); glVertex3fv(tp[1][6]);
  869.   glNormal3fv(tn[2][6]); glVertex3fv(tp[2][6]);
  870.   glNormal3fv(tn[1][7]); glVertex3fv(tp[1][7]);
  871.   glNormal3fv(tn[2][7]); glVertex3fv(tp[2][7]);
  872.   glNormal3fv(tn[1][8]); glVertex3fv(tp[1][8]);
  873.   glNormal3fv(tn[2][8]); glVertex3fv(tp[2][8]);
  874.   glNormal3fv(tn[1][9]); glVertex3fv(tp[1][9]);
  875.   glNormal3fv(tn[2][9]); glVertex3fv(tp[2][9]);
  876.   glNormal3fv(tn[1][10]); glVertex3fv(tp[1][10]);
  877.   glNormal3fv(tn[2][10]); glVertex3fv(tp[2][10]);
  878.   glNormal3fv(tn[1][11]); glVertex3fv(tp[1][11]);
  879.   glNormal3fv(tn[2][11]); glVertex3fv(tp[2][11]);
  880.   glNormal3fv(tn[1][12]); glVertex3fv(tp[1][12]);
  881.   glNormal3fv(tn[2][12]); glVertex3fv(tp[2][12]);
  882.   glNormal3fv(tn[1][13]); glVertex3fv(tp[1][13]);
  883.   glNormal3fv(tn[2][13]); glVertex3fv(tp[2][13]);
  884.   glNormal3fv(tn[1][14]); glVertex3fv(tp[1][14]);
  885.   glNormal3fv(tn[2][14]); glVertex3fv(tp[2][14]);
  886.   glNormal3fv(tn[1][15]); glVertex3fv(tp[1][15]);
  887.   glNormal3fv(tn[2][15]); glVertex3fv(tp[2][15]);
  888.   glNormal3fv(tn[1][16]); glVertex3fv(tp[1][16]);
  889.   glNormal3fv(tn[2][16]); glVertex3fv(tp[2][16]);
  890.   glNormal3fv(tn[1][17]); glVertex3fv(tp[1][17]);
  891.   glNormal3fv(tn[2][17]); glVertex3fv(tp[2][17]);
  892.   glNormal3fv(tn[1][18]); glVertex3fv(tp[1][18]);
  893.   glNormal3fv(tn[2][18]); glVertex3fv(tp[2][18]);
  894.   glNormal3fv(tn[1][19]); glVertex3fv(tp[1][19]);
  895.   glNormal3fv(tn[2][19]); glVertex3fv(tp[2][19]);
  896.   glNormal3fv(tn[1][20]); glVertex3fv(tp[1][20]);
  897.   glNormal3fv(tn[2][20]); glVertex3fv(tp[2][20]);
  898.   glEnd();
  899.   glBegin(GL_TRIANGLE_STRIP);
  900.   glNormal3fv(tn[2][0]); glVertex3fv(tp[2][0]);
  901.   glNormal3fv(tn[3][0]); glVertex3fv(tp[3][0]);
  902.   glNormal3fv(tn[2][1]); glVertex3fv(tp[2][1]);
  903.   glNormal3fv(tn[3][1]); glVertex3fv(tp[3][1]);
  904.   glNormal3fv(tn[2][2]); glVertex3fv(tp[2][2]);
  905.   glNormal3fv(tn[3][2]); glVertex3fv(tp[3][2]);
  906.   glNormal3fv(tn[2][3]); glVertex3fv(tp[2][3]);
  907.   glNormal3fv(tn[3][3]); glVertex3fv(tp[3][3]);
  908.   glNormal3fv(tn[2][4]); glVertex3fv(tp[2][4]);
  909.   glNormal3fv(tn[3][4]); glVertex3fv(tp[3][4]);
  910.   glNormal3fv(tn[2][5]); glVertex3fv(tp[2][5]);
  911.   glNormal3fv(tn[3][5]); glVertex3fv(tp[3][5]);
  912.   glNormal3fv(tn[2][6]); glVertex3fv(tp[2][6]);
  913.   glNormal3fv(tn[3][6]); glVertex3fv(tp[3][6]);
  914.   glNormal3fv(tn[2][7]); glVertex3fv(tp[2][7]);
  915.   glNormal3fv(tn[3][7]); glVertex3fv(tp[3][7]);
  916.   glNormal3fv(tn[2][8]); glVertex3fv(tp[2][8]);
  917.   glNormal3fv(tn[3][8]); glVertex3fv(tp[3][8]);
  918.   glNormal3fv(tn[2][9]); glVertex3fv(tp[2][9]);
  919.   glNormal3fv(tn[3][9]); glVertex3fv(tp[3][9]);
  920.   glNormal3fv(tn[2][10]); glVertex3fv(tp[2][10]);
  921.   glNormal3fv(tn[3][10]); glVertex3fv(tp[3][10]);
  922.   glNormal3fv(tn[2][11]); glVertex3fv(tp[2][11]);
  923.   glNormal3fv(tn[3][11]); glVertex3fv(tp[3][11]);
  924.   glNormal3fv(tn[2][12]); glVertex3fv(tp[2][12]);
  925.   glNormal3fv(tn[3][12]); glVertex3fv(tp[3][12]);
  926.   glNormal3fv(tn[2][13]); glVertex3fv(tp[2][13]);
  927.   glNormal3fv(tn[3][13]); glVertex3fv(tp[3][13]);
  928.   glNormal3fv(tn[2][14]); glVertex3fv(tp[2][14]);
  929.   glNormal3fv(tn[3][14]); glVertex3fv(tp[3][14]);
  930.   glNormal3fv(tn[2][15]); glVertex3fv(tp[2][15]);
  931.   glNormal3fv(tn[3][15]); glVertex3fv(tp[3][15]);
  932.   glNormal3fv(tn[2][16]); glVertex3fv(tp[2][16]);
  933.   glNormal3fv(tn[3][16]); glVertex3fv(tp[3][16]);
  934.   glNormal3fv(tn[2][17]); glVertex3fv(tp[2][17]);
  935.   glNormal3fv(tn[3][17]); glVertex3fv(tp[3][17]);
  936.   glNormal3fv(tn[2][18]); glVertex3fv(tp[2][18]);
  937.   glNormal3fv(tn[3][18]); glVertex3fv(tp[3][18]);
  938.   glNormal3fv(tn[2][19]); glVertex3fv(tp[2][19]);
  939.   glNormal3fv(tn[3][19]); glVertex3fv(tp[3][19]);
  940.   glNormal3fv(tn[2][20]); glVertex3fv(tp[2][20]);
  941.   glNormal3fv(tn[3][20]); glVertex3fv(tp[3][20]);
  942.   glEnd();
  943.   glBegin(GL_TRIANGLE_STRIP);
  944.   glNormal3fv(tn[3][0]); glVertex3fv(tp[3][0]);
  945.   glNormal3fv(tn[4][0]); glVertex3fv(tp[4][0]);
  946.   glNormal3fv(tn[3][1]); glVertex3fv(tp[3][1]);
  947.   glNormal3fv(tn[4][1]); glVertex3fv(tp[4][1]);
  948.   glNormal3fv(tn[3][2]); glVertex3fv(tp[3][2]);
  949.   glNormal3fv(tn[4][2]); glVertex3fv(tp[4][2]);
  950.   glNormal3fv(tn[3][3]); glVertex3fv(tp[3][3]);
  951.   glNormal3fv(tn[4][3]); glVertex3fv(tp[4][3]);
  952.   glNormal3fv(tn[3][4]); glVertex3fv(tp[3][4]);
  953.   glNormal3fv(tn[4][4]); glVertex3fv(tp[4][4]);
  954.   glNormal3fv(tn[3][5]); glVertex3fv(tp[3][5]);
  955.   glNormal3fv(tn[4][5]); glVertex3fv(tp[4][5]);
  956.   glNormal3fv(tn[3][6]); glVertex3fv(tp[3][6]);
  957.   glNormal3fv(tn[4][6]); glVertex3fv(tp[4][6]);
  958.   glNormal3fv(tn[3][7]); glVertex3fv(tp[3][7]);
  959.   glNormal3fv(tn[4][7]); glVertex3fv(tp[4][7]);
  960.   glNormal3fv(tn[3][8]); glVertex3fv(tp[3][8]);
  961.   glNormal3fv(tn[4][8]); glVertex3fv(tp[4][8]);
  962.   glNormal3fv(tn[3][9]); glVertex3fv(tp[3][9]);
  963.   glNormal3fv(tn[4][9]); glVertex3fv(tp[4][9]);
  964.   glNormal3fv(tn[3][10]); glVertex3fv(tp[3][10]);
  965.   glNormal3fv(tn[4][10]); glVertex3fv(tp[4][10]);
  966.   glNormal3fv(tn[3][11]); glVertex3fv(tp[3][11]);
  967.   glNormal3fv(tn[4][11]); glVertex3fv(tp[4][11]);
  968.   glNormal3fv(tn[3][12]); glVertex3fv(tp[3][12]);
  969.   glNormal3fv(tn[4][12]); glVertex3fv(tp[4][12]);
  970.   glNormal3fv(tn[3][13]); glVertex3fv(tp[3][13]);
  971.   glNormal3fv(tn[4][13]); glVertex3fv(tp[4][13]);
  972.   glNormal3fv(tn[3][14]); glVertex3fv(tp[3][14]);
  973.   glNormal3fv(tn[4][14]); glVertex3fv(tp[4][14]);
  974.   glNormal3fv(tn[3][15]); glVertex3fv(tp[3][15]);
  975.   glNormal3fv(tn[4][15]); glVertex3fv(tp[4][15]);
  976.   glNormal3fv(tn[3][16]); glVertex3fv(tp[3][16]);
  977.   glNormal3fv(tn[4][16]); glVertex3fv(tp[4][16]);
  978.   glNormal3fv(tn[3][17]); glVertex3fv(tp[3][17]);
  979.   glNormal3fv(tn[4][17]); glVertex3fv(tp[4][17]);
  980.   glNormal3fv(tn[3][18]); glVertex3fv(tp[3][18]);
  981.   glNormal3fv(tn[4][18]); glVertex3fv(tp[4][18]);
  982.   glNormal3fv(tn[3][19]); glVertex3fv(tp[3][19]);
  983.   glNormal3fv(tn[4][19]); glVertex3fv(tp[4][19]);
  984.   glNormal3fv(tn[3][20]); glVertex3fv(tp[3][20]);
  985.   glNormal3fv(tn[4][20]); glVertex3fv(tp[4][20]);
  986.   glEnd();
  987.   glBegin(GL_TRIANGLE_STRIP);
  988.   glNormal3fv(tn[4][0]); glVertex3fv(tp[4][0]);
  989.   glNormal3fv(tn[5][0]); glVertex3fv(tp[5][0]);
  990.   glNormal3fv(tn[4][1]); glVertex3fv(tp[4][1]);
  991.   glNormal3fv(tn[5][1]); glVertex3fv(tp[5][1]);
  992.   glNormal3fv(tn[4][2]); glVertex3fv(tp[4][2]);
  993.   glNormal3fv(tn[5][2]); glVertex3fv(tp[5][2]);
  994.   glNormal3fv(tn[4][3]); glVertex3fv(tp[4][3]);
  995.   glNormal3fv(tn[5][3]); glVertex3fv(tp[5][3]);
  996.   glNormal3fv(tn[4][4]); glVertex3fv(tp[4][4]);
  997.   glNormal3fv(tn[5][4]); glVertex3fv(tp[5][4]);
  998.   glNormal3fv(tn[4][5]); glVertex3fv(tp[4][5]);
  999.   glNormal3fv(tn[5][5]); glVertex3fv(tp[5][5]);
  1000.   glNormal3fv(tn[4][6]); glVertex3fv(tp[4][6]);
  1001.   glNormal3fv(tn[5][6]); glVertex3fv(tp[5][6]);
  1002.   glNormal3fv(tn[4][7]); glVertex3fv(tp[4][7]);
  1003.   glNormal3fv(tn[5][7]); glVertex3fv(tp[5][7]);
  1004.   glNormal3fv(tn[4][8]); glVertex3fv(tp[4][8]);
  1005.   glNormal3fv(tn[5][8]); glVertex3fv(tp[5][8]);
  1006.   glNormal3fv(tn[4][9]); glVertex3fv(tp[4][9]);
  1007.   glNormal3fv(tn[5][9]); glVertex3fv(tp[5][9]);
  1008.   glNormal3fv(tn[4][10]); glVertex3fv(tp[4][10]);
  1009.   glNormal3fv(tn[5][10]); glVertex3fv(tp[5][10]);
  1010.   glNormal3fv(tn[4][11]); glVertex3fv(tp[4][11]);
  1011.   glNormal3fv(tn[5][11]); glVertex3fv(tp[5][11]);
  1012.   glNormal3fv(tn[4][12]); glVertex3fv(tp[4][12]);
  1013.   glNormal3fv(tn[5][12]); glVertex3fv(tp[5][12]);
  1014.   glNormal3fv(tn[4][13]); glVertex3fv(tp[4][13]);
  1015.   glNormal3fv(tn[5][13]); glVertex3fv(tp[5][13]);
  1016.   glNormal3fv(tn[4][14]); glVertex3fv(tp[4][14]);
  1017.   glNormal3fv(tn[5][14]); glVertex3fv(tp[5][14]);
  1018.   glNormal3fv(tn[4][15]); glVertex3fv(tp[4][15]);
  1019.   glNormal3fv(tn[5][15]); glVertex3fv(tp[5][15]);
  1020.   glNormal3fv(tn[4][16]); glVertex3fv(tp[4][16]);
  1021.   glNormal3fv(tn[5][16]); glVertex3fv(tp[5][16]);
  1022.   glNormal3fv(tn[4][17]); glVertex3fv(tp[4][17]);
  1023.   glNormal3fv(tn[5][17]); glVertex3fv(tp[5][17]);
  1024.   glNormal3fv(tn[4][18]); glVertex3fv(tp[4][18]);
  1025.   glNormal3fv(tn[5][18]); glVertex3fv(tp[5][18]);
  1026.   glNormal3fv(tn[4][19]); glVertex3fv(tp[4][19]);
  1027.   glNormal3fv(tn[5][19]); glVertex3fv(tp[5][19]);
  1028.   glNormal3fv(tn[4][20]); glVertex3fv(tp[4][20]);
  1029.   glNormal3fv(tn[5][20]); glVertex3fv(tp[5][20]);
  1030.   glEnd();
  1031.   glBegin(GL_TRIANGLE_STRIP);
  1032.   glNormal3fv(tn[5][0]); glVertex3fv(tp[5][0]);
  1033.   glNormal3fv(tn[6][0]); glVertex3fv(tp[6][0]);
  1034.   glNormal3fv(tn[5][1]); glVertex3fv(tp[5][1]);
  1035.   glNormal3fv(tn[6][1]); glVertex3fv(tp[6][1]);
  1036.   glNormal3fv(tn[5][2]); glVertex3fv(tp[5][2]);
  1037.   glNormal3fv(tn[6][2]); glVertex3fv(tp[6][2]);
  1038.   glNormal3fv(tn[5][3]); glVertex3fv(tp[5][3]);
  1039.   glNormal3fv(tn[6][3]); glVertex3fv(tp[6][3]);
  1040.   glNormal3fv(tn[5][4]); glVertex3fv(tp[5][4]);
  1041.   glNormal3fv(tn[6][4]); glVertex3fv(tp[6][4]);
  1042.   glNormal3fv(tn[5][5]); glVertex3fv(tp[5][5]);
  1043.   glNormal3fv(tn[6][5]); glVertex3fv(tp[6][5]);
  1044.   glNormal3fv(tn[5][6]); glVertex3fv(tp[5][6]);
  1045.   glNormal3fv(tn[6][6]); glVertex3fv(tp[6][6]);
  1046.   glNormal3fv(tn[5][7]); glVertex3fv(tp[5][7]);
  1047.   glNormal3fv(tn[6][7]); glVertex3fv(tp[6][7]);
  1048.   glNormal3fv(tn[5][8]); glVertex3fv(tp[5][8]);
  1049.   glNormal3fv(tn[6][8]); glVertex3fv(tp[6][8]);
  1050.   glNormal3fv(tn[5][9]); glVertex3fv(tp[5][9]);
  1051.   glNormal3fv(tn[6][9]); glVertex3fv(tp[6][9]);
  1052.   glNormal3fv(tn[5][10]); glVertex3fv(tp[5][10]);
  1053.   glNormal3fv(tn[6][10]); glVertex3fv(tp[6][10]);
  1054.   glNormal3fv(tn[5][11]); glVertex3fv(tp[5][11]);
  1055.   glNormal3fv(tn[6][11]); glVertex3fv(tp[6][11]);
  1056.   glNormal3fv(tn[5][12]); glVertex3fv(tp[5][12]);
  1057.   glNormal3fv(tn[6][12]); glVertex3fv(tp[6][12]);
  1058.   glNormal3fv(tn[5][13]); glVertex3fv(tp[5][13]);
  1059.   glNormal3fv(tn[6][13]); glVertex3fv(tp[6][13]);
  1060.   glNormal3fv(tn[5][14]); glVertex3fv(tp[5][14]);
  1061.   glNormal3fv(tn[6][14]); glVertex3fv(tp[6][14]);
  1062.   glNormal3fv(tn[5][15]); glVertex3fv(tp[5][15]);
  1063.   glNormal3fv(tn[6][15]); glVertex3fv(tp[6][15]);
  1064.   glNormal3fv(tn[5][16]); glVertex3fv(tp[5][16]);
  1065.   glNormal3fv(tn[6][16]); glVertex3fv(tp[6][16]);
  1066.   glNormal3fv(tn[5][17]); glVertex3fv(tp[5][17]);
  1067.   glNormal3fv(tn[6][17]); glVertex3fv(tp[6][17]);
  1068.   glNormal3fv(tn[5][18]); glVertex3fv(tp[5][18]);
  1069.   glNormal3fv(tn[6][18]); glVertex3fv(tp[6][18]);
  1070.   glNormal3fv(tn[5][19]); glVertex3fv(tp[5][19]);
  1071.   glNormal3fv(tn[6][19]); glVertex3fv(tp[6][19]);
  1072.   glNormal3fv(tn[5][20]); glVertex3fv(tp[5][20]);
  1073.   glNormal3fv(tn[6][20]); glVertex3fv(tp[6][20]);
  1074.   glEnd();
  1075.   glBegin(GL_TRIANGLE_STRIP);
  1076.   glNormal3fv(tn[6][0]); glVertex3fv(tp[6][0]);
  1077.   glNormal3fv(tn[7][0]); glVertex3fv(tp[7][0]);
  1078.   glNormal3fv(tn[6][1]); glVertex3fv(tp[6][1]);
  1079.   glNormal3fv(tn[7][1]); glVertex3fv(tp[7][1]);
  1080.   glNormal3fv(tn[6][2]); glVertex3fv(tp[6][2]);
  1081.   glNormal3fv(tn[7][2]); glVertex3fv(tp[7][2]);
  1082.   glNormal3fv(tn[6][3]); glVertex3fv(tp[6][3]);
  1083.   glNormal3fv(tn[7][3]); glVertex3fv(tp[7][3]);
  1084.   glNormal3fv(tn[6][4]); glVertex3fv(tp[6][4]);
  1085.   glNormal3fv(tn[7][4]); glVertex3fv(tp[7][4]);
  1086.   glNormal3fv(tn[6][5]); glVertex3fv(tp[6][5]);
  1087.   glNormal3fv(tn[7][5]); glVertex3fv(tp[7][5]);
  1088.   glNormal3fv(tn[6][6]); glVertex3fv(tp[6][6]);
  1089.   glNormal3fv(tn[7][6]); glVertex3fv(tp[7][6]);
  1090.   glNormal3fv(tn[6][7]); glVertex3fv(tp[6][7]);
  1091.   glNormal3fv(tn[7][7]); glVertex3fv(tp[7][7]);
  1092.   glNormal3fv(tn[6][8]); glVertex3fv(tp[6][8]);
  1093.   glNormal3fv(tn[7][8]); glVertex3fv(tp[7][8]);
  1094.   glNormal3fv(tn[6][9]); glVertex3fv(tp[6][9]);
  1095.   glNormal3fv(tn[7][9]); glVertex3fv(tp[7][9]);
  1096.   glNormal3fv(tn[6][10]); glVertex3fv(tp[6][10]);
  1097.   glNormal3fv(tn[7][10]); glVertex3fv(tp[7][10]);
  1098.   glNormal3fv(tn[6][11]); glVertex3fv(tp[6][11]);
  1099.   glNormal3fv(tn[7][11]); glVertex3fv(tp[7][11]);
  1100.   glNormal3fv(tn[6][12]); glVertex3fv(tp[6][12]);
  1101.   glNormal3fv(tn[7][12]); glVertex3fv(tp[7][12]);
  1102.   glNormal3fv(tn[6][13]); glVertex3fv(tp[6][13]);
  1103.   glNormal3fv(tn[7][13]); glVertex3fv(tp[7][13]);
  1104.   glNormal3fv(tn[6][14]); glVertex3fv(tp[6][14]);
  1105.   glNormal3fv(tn[7][14]); glVertex3fv(tp[7][14]);
  1106.   glNormal3fv(tn[6][15]); glVertex3fv(tp[6][15]);
  1107.   glNormal3fv(tn[7][15]); glVertex3fv(tp[7][15]);
  1108.   glNormal3fv(tn[6][16]); glVertex3fv(tp[6][16]);
  1109.   glNormal3fv(tn[7][16]); glVertex3fv(tp[7][16]);
  1110.   glNormal3fv(tn[6][17]); glVertex3fv(tp[6][17]);
  1111.   glNormal3fv(tn[7][17]); glVertex3fv(tp[7][17]);
  1112.   glNormal3fv(tn[6][18]); glVertex3fv(tp[6][18]);
  1113.   glNormal3fv(tn[7][18]); glVertex3fv(tp[7][18]);
  1114.   glNormal3fv(tn[6][19]); glVertex3fv(tp[6][19]);
  1115.   glNormal3fv(tn[7][19]); glVertex3fv(tp[7][19]);
  1116.   glNormal3fv(tn[6][20]); glVertex3fv(tp[6][20]);
  1117.   glNormal3fv(tn[7][20]); glVertex3fv(tp[7][20]);
  1118.   glEnd();
  1119.   glBegin(GL_TRIANGLE_STRIP);
  1120.   glNormal3fv(tn[7][0]); glVertex3fv(tp[7][0]);
  1121.   glNormal3fv(tn[8][0]); glVertex3fv(tp[8][0]);
  1122.   glNormal3fv(tn[7][1]); glVertex3fv(tp[7][1]);
  1123.   glNormal3fv(tn[8][1]); glVertex3fv(tp[8][1]);
  1124.   glNormal3fv(tn[7][2]); glVertex3fv(tp[7][2]);
  1125.   glNormal3fv(tn[8][2]); glVertex3fv(tp[8][2]);
  1126.   glNormal3fv(tn[7][3]); glVertex3fv(tp[7][3]);
  1127.   glNormal3fv(tn[8][3]); glVertex3fv(tp[8][3]);
  1128.   glNormal3fv(tn[7][4]); glVertex3fv(tp[7][4]);
  1129.   glNormal3fv(tn[8][4]); glVertex3fv(tp[8][4]);
  1130.   glNormal3fv(tn[7][5]); glVertex3fv(tp[7][5]);
  1131.   glNormal3fv(tn[8][5]); glVertex3fv(tp[8][5]);
  1132.   glNormal3fv(tn[7][6]); glVertex3fv(tp[7][6]);
  1133.   glNormal3fv(tn[8][6]); glVertex3fv(tp[8][6]);
  1134.   glNormal3fv(tn[7][7]); glVertex3fv(tp[7][7]);
  1135.   glNormal3fv(tn[8][7]); glVertex3fv(tp[8][7]);
  1136.   glNormal3fv(tn[7][8]); glVertex3fv(tp[7][8]);
  1137.   glNormal3fv(tn[8][8]); glVertex3fv(tp[8][8]);
  1138.   glNormal3fv(tn[7][9]); glVertex3fv(tp[7][9]);
  1139.   glNormal3fv(tn[8][9]); glVertex3fv(tp[8][9]);
  1140.   glNormal3fv(tn[7][10]); glVertex3fv(tp[7][10]);
  1141.   glNormal3fv(tn[8][10]); glVertex3fv(tp[8][10]);
  1142.   glNormal3fv(tn[7][11]); glVertex3fv(tp[7][11]);
  1143.   glNormal3fv(tn[8][11]); glVertex3fv(tp[8][11]);
  1144.   glNormal3fv(tn[7][12]); glVertex3fv(tp[7][12]);
  1145.   glNormal3fv(tn[8][12]); glVertex3fv(tp[8][12]);
  1146.   glNormal3fv(tn[7][13]); glVertex3fv(tp[7][13]);
  1147.   glNormal3fv(tn[8][13]); glVertex3fv(tp[8][13]);
  1148.   glNormal3fv(tn[7][14]); glVertex3fv(tp[7][14]);
  1149.   glNormal3fv(tn[8][14]); glVertex3fv(tp[8][14]);
  1150.   glNormal3fv(tn[7][15]); glVertex3fv(tp[7][15]);
  1151.   glNormal3fv(tn[8][15]); glVertex3fv(tp[8][15]);
  1152.   glNormal3fv(tn[7][16]); glVertex3fv(tp[7][16]);
  1153.   glNormal3fv(tn[8][16]); glVertex3fv(tp[8][16]);
  1154.   glNormal3fv(tn[7][17]); glVertex3fv(tp[7][17]);
  1155.   glNormal3fv(tn[8][17]); glVertex3fv(tp[8][17]);
  1156.   glNormal3fv(tn[7][18]); glVertex3fv(tp[7][18]);
  1157.   glNormal3fv(tn[8][18]); glVertex3fv(tp[8][18]);
  1158.   glNormal3fv(tn[7][19]); glVertex3fv(tp[7][19]);
  1159.   glNormal3fv(tn[8][19]); glVertex3fv(tp[8][19]);
  1160.   glNormal3fv(tn[7][20]); glVertex3fv(tp[7][20]);
  1161.   glNormal3fv(tn[8][20]); glVertex3fv(tp[8][20]);
  1162.   glEnd();
  1163.   glBegin(GL_TRIANGLE_STRIP);
  1164.   glNormal3fv(tn[8][0]); glVertex3fv(tp[8][0]);
  1165.   glNormal3fv(tn[9][0]); glVertex3fv(tp[9][0]);
  1166.   glNormal3fv(tn[8][1]); glVertex3fv(tp[8][1]);
  1167.   glNormal3fv(tn[9][1]); glVertex3fv(tp[9][1]);
  1168.   glNormal3fv(tn[8][2]); glVertex3fv(tp[8][2]);
  1169.   glNormal3fv(tn[9][2]); glVertex3fv(tp[9][2]);
  1170.   glNormal3fv(tn[8][3]); glVertex3fv(tp[8][3]);
  1171.   glNormal3fv(tn[9][3]); glVertex3fv(tp[9][3]);
  1172.   glNormal3fv(tn[8][4]); glVertex3fv(tp[8][4]);
  1173.   glNormal3fv(tn[9][4]); glVertex3fv(tp[9][4]);
  1174.   glNormal3fv(tn[8][5]); glVertex3fv(tp[8][5]);
  1175.   glNormal3fv(tn[9][5]); glVertex3fv(tp[9][5]);
  1176.   glNormal3fv(tn[8][6]); glVertex3fv(tp[8][6]);
  1177.   glNormal3fv(tn[9][6]); glVertex3fv(tp[9][6]);
  1178.   glNormal3fv(tn[8][7]); glVertex3fv(tp[8][7]);
  1179.   glNormal3fv(tn[9][7]); glVertex3fv(tp[9][7]);
  1180.   glNormal3fv(tn[8][8]); glVertex3fv(tp[8][8]);
  1181.   glNormal3fv(tn[9][8]); glVertex3fv(tp[9][8]);
  1182.   glNormal3fv(tn[8][9]); glVertex3fv(tp[8][9]);
  1183.   glNormal3fv(tn[9][9]); glVertex3fv(tp[9][9]);
  1184.   glNormal3fv(tn[8][10]); glVertex3fv(tp[8][10]);
  1185.   glNormal3fv(tn[9][10]); glVertex3fv(tp[9][10]);
  1186.   glNormal3fv(tn[8][11]); glVertex3fv(tp[8][11]);
  1187.   glNormal3fv(tn[9][11]); glVertex3fv(tp[9][11]);
  1188.   glNormal3fv(tn[8][12]); glVertex3fv(tp[8][12]);
  1189.   glNormal3fv(tn[9][12]); glVertex3fv(tp[9][12]);
  1190.   glNormal3fv(tn[8][13]); glVertex3fv(tp[8][13]);
  1191.   glNormal3fv(tn[9][13]); glVertex3fv(tp[9][13]);
  1192.   glNormal3fv(tn[8][14]); glVertex3fv(tp[8][14]);
  1193.   glNormal3fv(tn[9][14]); glVertex3fv(tp[9][14]);
  1194.   glNormal3fv(tn[8][15]); glVertex3fv(tp[8][15]);
  1195.   glNormal3fv(tn[9][15]); glVertex3fv(tp[9][15]);
  1196.   glNormal3fv(tn[8][16]); glVertex3fv(tp[8][16]);
  1197.   glNormal3fv(tn[9][16]); glVertex3fv(tp[9][16]);
  1198.   glNormal3fv(tn[8][17]); glVertex3fv(tp[8][17]);
  1199.   glNormal3fv(tn[9][17]); glVertex3fv(tp[9][17]);
  1200.   glNormal3fv(tn[8][18]); glVertex3fv(tp[8][18]);
  1201.   glNormal3fv(tn[9][18]); glVertex3fv(tp[9][18]);
  1202.   glNormal3fv(tn[8][19]); glVertex3fv(tp[8][19]);
  1203.   glNormal3fv(tn[9][19]); glVertex3fv(tp[9][19]);
  1204.   glNormal3fv(tn[8][20]); glVertex3fv(tp[8][20]);
  1205.   glNormal3fv(tn[9][20]); glVertex3fv(tp[9][20]);
  1206.   glEnd();
  1207.   glBegin(GL_TRIANGLE_STRIP);
  1208.   glNormal3fv(tn[9][0]); glVertex3fv(tp[9][0]);
  1209.   glNormal3fv(tn[10][0]); glVertex3fv(tp[10][0]);
  1210.   glNormal3fv(tn[9][1]); glVertex3fv(tp[9][1]);
  1211.   glNormal3fv(tn[10][1]); glVertex3fv(tp[10][1]);
  1212.   glNormal3fv(tn[9][2]); glVertex3fv(tp[9][2]);
  1213.   glNormal3fv(tn[10][2]); glVertex3fv(tp[10][2]);
  1214.   glNormal3fv(tn[9][3]); glVertex3fv(tp[9][3]);
  1215.   glNormal3fv(tn[10][3]); glVertex3fv(tp[10][3]);
  1216.   glNormal3fv(tn[9][4]); glVertex3fv(tp[9][4]);
  1217.   glNormal3fv(tn[10][4]); glVertex3fv(tp[10][4]);
  1218.   glNormal3fv(tn[9][5]); glVertex3fv(tp[9][5]);
  1219.   glNormal3fv(tn[10][5]); glVertex3fv(tp[10][5]);
  1220.   glNormal3fv(tn[9][6]); glVertex3fv(tp[9][6]);
  1221.   glNormal3fv(tn[10][6]); glVertex3fv(tp[10][6]);
  1222.   glNormal3fv(tn[9][7]); glVertex3fv(tp[9][7]);
  1223.   glNormal3fv(tn[10][7]); glVertex3fv(tp[10][7]);
  1224.   glNormal3fv(tn[9][8]); glVertex3fv(tp[9][8]);
  1225.   glNormal3fv(tn[10][8]); glVertex3fv(tp[10][8]);
  1226.   glNormal3fv(tn[9][9]); glVertex3fv(tp[9][9]);
  1227.   glNormal3fv(tn[10][9]); glVertex3fv(tp[10][9]);
  1228.   glNormal3fv(tn[9][10]); glVertex3fv(tp[9][10]);
  1229.   glNormal3fv(tn[10][10]); glVertex3fv(tp[10][10]);
  1230.   glNormal3fv(tn[9][11]); glVertex3fv(tp[9][11]);
  1231.   glNormal3fv(tn[10][11]); glVertex3fv(tp[10][11]);
  1232.   glNormal3fv(tn[9][12]); glVertex3fv(tp[9][12]);
  1233.   glNormal3fv(tn[10][12]); glVertex3fv(tp[10][12]);
  1234.   glNormal3fv(tn[9][13]); glVertex3fv(tp[9][13]);
  1235.   glNormal3fv(tn[10][13]); glVertex3fv(tp[10][13]);
  1236.   glNormal3fv(tn[9][14]); glVertex3fv(tp[9][14]);
  1237.   glNormal3fv(tn[10][14]); glVertex3fv(tp[10][14]);
  1238.   glNormal3fv(tn[9][15]); glVertex3fv(tp[9][15]);
  1239.   glNormal3fv(tn[10][15]); glVertex3fv(tp[10][15]);
  1240.   glNormal3fv(tn[9][16]); glVertex3fv(tp[9][16]);
  1241.   glNormal3fv(tn[10][16]); glVertex3fv(tp[10][16]);
  1242.   glNormal3fv(tn[9][17]); glVertex3fv(tp[9][17]);
  1243.   glNormal3fv(tn[10][17]); glVertex3fv(tp[10][17]);
  1244.   glNormal3fv(tn[9][18]); glVertex3fv(tp[9][18]);
  1245.   glNormal3fv(tn[10][18]); glVertex3fv(tp[10][18]);
  1246.   glNormal3fv(tn[9][19]); glVertex3fv(tp[9][19]);
  1247.   glNormal3fv(tn[10][19]); glVertex3fv(tp[10][19]);
  1248.   glNormal3fv(tn[9][20]); glVertex3fv(tp[9][20]);
  1249.   glNormal3fv(tn[10][20]); glVertex3fv(tp[10][20]);
  1250.   glEnd();
  1251.   glBegin(GL_TRIANGLE_STRIP);
  1252.   glNormal3fv(tn[10][0]); glVertex3fv(tp[10][0]);
  1253.   glNormal3fv(tn[11][0]); glVertex3fv(tp[11][0]);
  1254.   glNormal3fv(tn[10][1]); glVertex3fv(tp[10][1]);
  1255.   glNormal3fv(tn[11][1]); glVertex3fv(tp[11][1]);
  1256.   glNormal3fv(tn[10][2]); glVertex3fv(tp[10][2]);
  1257.   glNormal3fv(tn[11][2]); glVertex3fv(tp[11][2]);
  1258.   glNormal3fv(tn[10][3]); glVertex3fv(tp[10][3]);
  1259.   glNormal3fv(tn[11][3]); glVertex3fv(tp[11][3]);
  1260.   glNormal3fv(tn[10][4]); glVertex3fv(tp[10][4]);
  1261.   glNormal3fv(tn[11][4]); glVertex3fv(tp[11][4]);
  1262.   glNormal3fv(tn[10][5]); glVertex3fv(tp[10][5]);
  1263.   glNormal3fv(tn[11][5]); glVertex3fv(tp[11][5]);
  1264.   glNormal3fv(tn[10][6]); glVertex3fv(tp[10][6]);
  1265.   glNormal3fv(tn[11][6]); glVertex3fv(tp[11][6]);
  1266.   glNormal3fv(tn[10][7]); glVertex3fv(tp[10][7]);
  1267.   glNormal3fv(tn[11][7]); glVertex3fv(tp[11][7]);
  1268.   glNormal3fv(tn[10][8]); glVertex3fv(tp[10][8]);
  1269.   glNormal3fv(tn[11][8]); glVertex3fv(tp[11][8]);
  1270.   glNormal3fv(tn[10][9]); glVertex3fv(tp[10][9]);
  1271.   glNormal3fv(tn[11][9]); glVertex3fv(tp[11][9]);
  1272.   glNormal3fv(tn[10][10]); glVertex3fv(tp[10][10]);
  1273.   glNormal3fv(tn[11][10]); glVertex3fv(tp[11][10]);
  1274.   glNormal3fv(tn[10][11]); glVertex3fv(tp[10][11]);
  1275.   glNormal3fv(tn[11][11]); glVertex3fv(tp[11][11]);
  1276.   glNormal3fv(tn[10][12]); glVertex3fv(tp[10][12]);
  1277.   glNormal3fv(tn[11][12]); glVertex3fv(tp[11][12]);
  1278.   glNormal3fv(tn[10][13]); glVertex3fv(tp[10][13]);
  1279.   glNormal3fv(tn[11][13]); glVertex3fv(tp[11][13]);
  1280.   glNormal3fv(tn[10][14]); glVertex3fv(tp[10][14]);
  1281.   glNormal3fv(tn[11][14]); glVertex3fv(tp[11][14]);
  1282.   glNormal3fv(tn[10][15]); glVertex3fv(tp[10][15]);
  1283.   glNormal3fv(tn[11][15]); glVertex3fv(tp[11][15]);
  1284.   glNormal3fv(tn[10][16]); glVertex3fv(tp[10][16]);
  1285.   glNormal3fv(tn[11][16]); glVertex3fv(tp[11][16]);
  1286.   glNormal3fv(tn[10][17]); glVertex3fv(tp[10][17]);
  1287.   glNormal3fv(tn[11][17]); glVertex3fv(tp[11][17]);
  1288.   glNormal3fv(tn[10][18]); glVertex3fv(tp[10][18]);
  1289.   glNormal3fv(tn[11][18]); glVertex3fv(tp[11][18]);
  1290.   glNormal3fv(tn[10][19]); glVertex3fv(tp[10][19]);
  1291.   glNormal3fv(tn[11][19]); glVertex3fv(tp[11][19]);
  1292.   glNormal3fv(tn[10][20]); glVertex3fv(tp[10][20]);
  1293.   glNormal3fv(tn[11][20]); glVertex3fv(tp[11][20]);
  1294.   glEnd();
  1295. }
  1296. void draw_holder(void) {
  1297.   
  1298.   glCallList( MAT_HOLDER_RINGS); 
  1299.   
  1300.   glPushMatrix();
  1301.   draw_base();
  1302.   glTranslatef(0.0,  0.0,  20.000000);
  1303.   draw_torus();
  1304.   glTranslatef(0.0,  0.0,  5.000000);
  1305.   draw_torus();
  1306.   glTranslatef(0.0,  0.0,  5.000000);
  1307.   draw_torus();
  1308.   glPopMatrix();
  1309. }