1 /* -------------------------------------------------------------------- */
2 /* CALCULIX */
3 /* - GRAPHICAL INTERFACE - */
4 /* */
5 /* A 3-dimensional pre- and post-processor for finite elements */
6 /* Copyright (C) 1996 Klaus Wittig */
7 /* */
8 /* This program is free software; you can redistribute it and/or */
9 /* modify it under the terms of the GNU General Public License as */
10 /* published by the Free Software Foundation; version 2 of */
11 /* the License. */
12 /* */
13 /* This program is distributed in the hope that it will be useful, */
14 /* but WITHOUT ANY WARRANTY; without even the implied warranty of */
15 /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
16 /* GNU General Public License for more details. */
17 /* */
18 /* You should have received a copy of the GNU General Public License */
19 /* along with this program; if not, write to the Free Software */
20 /* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
21 /* -------------------------------------------------------------------- */
22
23 /* TO DO
24 */
25 #include <cgx.h>
26
27 #define TEST 0
28
29
30 extern Entitycol *entitycol; /* predefined colors of entities */
31
32 extern int basCol[3]; /* color indexes due to basic colormap: 0=bl. 1=w 2=gy */
33 extern int foregrndcol, backgrndcol; /* default fore- and background color */
34 extern double foregrndcol_rgb[4];
35 extern double backgrndcol_rgb[4];
36
37 extern char datin[MAX_LINE_LENGTH]; /* Input-data-file */
38 extern char buffer[MAX_LINE_LENGTH];
39 extern int offset, maxIndex; /* offset+steps-1 = maxIndex */
40 extern int width_ini, height_ini; /* Grafig-Fensterbreite/hoehe */
41 extern int width_menu, height_menu;
42 extern int w0, w1, w_index, w_rgb, activWindow;
43 extern int width_w0, height_w0;
44 extern int width_w1, height_w1;
45 extern int MouseMode; /* status maustasten */
46 extern double dtx, dty, dtz, drx, dry, drz, ds; /* Verschiebungen */
47 extern double anim_faktor; /* Scalierung der Amplitude */
48 extern char drawMode; /* protokoliert drawFunktion (Load=1,Light=2,Animate=3,preprocessor=4, vector=5)*/
49 extern double lmodel_twoside[1];
50 extern GLint gl_max_eval_order; /* max order of NURBS */
51 extern GLdouble R[4][4]; /* Rotationsmatrix */
52 extern char surfFlag; /* zeichne nur Oberflaechenelemente (1), sonst (0)*/
53 extern char modelEdgeFlag; /* zeichne mit Modell-Ecken (1), sonst (0)*/
54 extern char frameFlag; /* mit (1) oder ohne Rahmen um das Grafikfenster */
55 extern char captionFlag; /* mit (1) oder ohne filename im Menufenster */
56 extern char textFlag; /* mit (1) oder ohne text im Menufenster */
57 extern char printFlag; /* printf 1:on 0:off */
58 extern char frameFlag; /* mit (1) oder ohne Rahmen um das Grafigfenster */
59 extern char scalaFlag; /* mit (1) oder ohne scala und wertetexte */
60 extern char addDispFlag; /* 0: original node-coordinates, 1: node-coordinates+displacements */
61 extern double dx ,dy; /* Mauskoordinaten */
62 extern int steps; /* Schrittweite der Farbscala */
63 extern double gtol;
64 extern int ddiv;
65 extern double dbias;
66 extern char picture_text[MAX_LINE_LENGTH], datin[MAX_LINE_LENGTH];
67 extern double v_scale; /* scaling-factor for the vectors in the vector-plot */
68
69 extern char delPntFlag; /* 1: deleted points exists */
70 extern char delLineFlag; /* 1: deleted lines exists */
71 extern char delLcmbFlag; /* 1: deleted lcmbs exists */
72 extern char delSurfFlag; /* 1: deleted surfs exists */
73 extern char delBodyFlag; /* 1: deleted bodys exists */
74 extern char delNursFlag;
75 extern char delSetFlag; /* 1: deleted sets exists */
76 extern char writeCFDflag; /* 1: write cfd-files for duns during meshing */
77 extern char movieFlag; /* >0: save sequence of gif pictures */
78 extern char illumResultFlag; /* results with illumination */
79
80 extern int elemMat[MAX_MATERIALS]; /* Material Numbers, Number of Materials stored in elemMat[0] */
81
82 extern double *colNr;
83 #define GLCOLOR glTexCoord1d
84
85
86 extern Scale scale[1];
87 extern Elements *e_enqire;
88 extern Summen anz[1];
89 extern Edges *edge;
90 extern Nodes *node;
91 extern Datasets *lcase;
92 extern Faces *face;
93 extern Texts *ntext;
94
95 extern Meshp meshp;
96
97 extern Alias *alias;
98 extern Sets *set;
99 extern Psets *pset;
100 extern Points *point;
101 extern Lines *line;
102 extern Lcmb *lcmb;
103 extern Gsur *surf;
104 extern Gbod *body;
105 extern Nurbl *nurbl;
106 extern Nurbs *nurbs;
107 extern SumGeo anzGeo[1];
108 extern SumAsci sumAsci[1];
109
110 extern int cur_entity; /* aktive entity (component) */
111 extern int cur_lc;
112 extern void *glut_font[]; /* glut fonts */
113 extern int pixPerCharx[];
114 extern int legend_font; /* active font for the legend */
115 extern int draw_font; /* active font for the annotation of entities */
116 extern int menu_font; /* active font for the menu */
117
118
119 /* additional entities */
120 extern OpenSets openSets[1];
121 extern SpecialSet specialset[1];
122
123
124 int current_nurbs;
NurbsErrorCallback(GLenum which)125 static void NurbsErrorCallback(GLenum which)
126 {
127 printf(" GluNURBS: error occured (%d):\n", which);
128 if(current_nurbs>-1)
129 {
130 printf(" %s in nurbs:%s see set:%s\n", gluErrorString(which), nurbs[current_nurbs].name,specialset->bnur);
131 pre_seta(specialset->bnur,"S",nurbs[current_nurbs].name);
132 }
133 else
134 {
135 printf(" %s in nurl:%s see set:%s\n", gluErrorString(which), nurbs[-current_nurbs-1].name,specialset->bnur);
136 pre_seta(specialset->bnur,"L",nurbs[current_nurbs].name);
137 }
138 }
139
140
141
142 /* prepares vectors pointing from the nodes (like a tape in a storm)*/
143 /* the length is proportional to the value of the vector */
144 /* lc Dataset */
145 /* ne number of entities */
146 /* *e entities */
147 /* v_factor scale factor for the vectors */
drawNodes_vector(int lc,int ne,int * e,double v_factor,int num,int * name,Nodes * node)148 void drawNodes_vector( int lc, int ne, int *e, double v_factor, int num, int *name, Nodes *node )
149 {
150 register int i,k;
151 double p1[3], p2[3], v2[3];
152
153 #if TEST
154 printf ("in drawNodes_vector\n");
155 #endif
156
157 glLineWidth(1);
158 glPointSize(2);
159 glColor3dv( foregrndcol_rgb );
160
161 if(ne>3) ne=3;
162 for (i=0; i<num; i++ )
163 {
164 /* calculate the start and end-point of the vector */
165 if(node[name[i]].pflag!=1)
166 {
167 for(k=0; k<3; k++) v2[k]=0.;
168 for(k=0; k<ne; k++) v2[k]+=lcase[lc].dat[e[k]][name[i]];
169 p1[0]=node[name[i]].nx-(v2[0]*v_factor);
170 p1[1]=node[name[i]].ny-(v2[1]*v_factor);
171 p1[2]=node[name[i]].nz-(v2[2]*v_factor);
172 p2[0]=node[name[i]].nx+(v2[0]*v_factor);
173 p2[1]=node[name[i]].ny+(v2[1]*v_factor);
174 p2[2]=node[name[i]].nz+(v2[2]*v_factor);
175 glBegin ( GL_LINES );
176 glVertex3dv ( p1 );
177 glVertex3dv ( p2 );
178 glEnd();
179 glBegin ( GL_POINTS );
180 glVertex3dv ( p2 );
181 glEnd();
182 }
183 }
184 }
185
186
187
188 /* prepares vectors pointing from the nodes of the faces (like a tape in a storm)*/
189 /* the length is proportional to the value of the vector */
190 /* lc Dataset */
191 /* ne number of entities */
192 /* *e entities */
193 /* v_factor scale factor for the vectors */
drawFaces_vector(int lc,int ne,int * e,double v_factor,int num,int * name,Nodes * node,Faces * face)194 void drawFaces_vector( int lc, int ne, int *e, double v_factor, int num, int *name, Nodes *node, Faces *face )
195 {
196 register int i,j,k,n;
197 double p1[3], p2[3], v2[3];
198
199 #if TEST
200 printf ("in drawFaces_vector\n");
201 #endif
202
203 glLineWidth(1);
204 glPointSize (2);
205 glColor3dv( foregrndcol_rgb );
206
207 if(ne>3) ne=3;
208 for (i=0; i<num; i++ )
209 {
210 n=0;
211 if ( face[name[i]].type == 7 ) n=3;
212 else
213 if ( face[name[i]].type == 8 ) n=6;
214 else
215 if ( face[name[i]].type == 9 ) n=4;
216 else
217 if ( face[name[i]].type == 10) n=8;
218 if(n>0)
219 {
220 /* calculate the start and end-point of the vector */
221 for(j=0; j<n; j++)
222 {
223 if(node[face[name[i]].nod[j]].pflag!=1)
224 {
225 for(k=0; k<3; k++) v2[k]=0.;
226 for(k=0; k<ne; k++) v2[k]+=lcase[lc].dat[e[k]][face[name[i]].nod[j]];
227 p1[0]=node[face[name[i]].nod[j]].nx+face[name[i]].side[0][0]*1.e-2*ds-(v2[0]*v_factor);
228 p1[1]=node[face[name[i]].nod[j]].ny+face[name[i]].side[0][1]*1.e-2*ds-(v2[1]*v_factor);
229 p1[2]=node[face[name[i]].nod[j]].nz+face[name[i]].side[0][2]*1.e-2*ds-(v2[2]*v_factor);
230 p2[0]=node[face[name[i]].nod[j]].nx+face[name[i]].side[0][0]*1.e-2*ds+(v2[0]*v_factor);
231 p2[1]=node[face[name[i]].nod[j]].ny+face[name[i]].side[0][1]*1.e-2*ds+(v2[1]*v_factor);
232 p2[2]=node[face[name[i]].nod[j]].nz+face[name[i]].side[0][2]*1.e-2*ds+(v2[2]*v_factor);
233 glBegin ( GL_LINES );
234 glVertex3dv ( p1 );
235 glVertex3dv ( p2 );
236 glEnd();
237 glBegin ( GL_POINTS );
238 glVertex3dv ( p2 );
239 glEnd();
240 }
241 }
242 }
243 }
244 }
245
246
drawElements_vector(int lc,int ne,int * e,double v_factor,int num,int * name,Nodes * node,Elements * e_enqire)247 void drawElements_vector( int lc, int ne, int *e, double v_factor, int num, int *name, Nodes *node, Elements *e_enqire )
248 {
249 register int i,j,k,n;
250 double p1[3], p2[3], v2[3];
251
252 #if TEST
253 printf ("in drawElements_vector\n");
254 #endif
255
256 glLineWidth(1);
257 glPointSize (2);
258 glColor3dv( foregrndcol_rgb );
259
260 if(ne>3) ne=3;
261 for (i=0; i<num; i++ )
262 {
263 n=0;
264 if( e_enqire[name[i]].type == 1 ) n=8;
265 else
266 if( e_enqire[name[i]].type == 2 ) n=6;
267 else
268 if( e_enqire[name[i]].type == 3 ) n=4;
269 else
270 if( e_enqire[name[i]].type == 4 ) n=20;
271 else
272 if( e_enqire[name[i]].type == 5 ) n=15;
273 else
274 if( e_enqire[name[i]].type == 6 ) n=10;
275 else
276 if( e_enqire[name[i]].type == 7 ) n=3;
277 else
278 if( e_enqire[name[i]].type == 8 ) n=6;
279 else
280 if( e_enqire[name[i]].type == 9 ) n=4;
281 else
282 if( e_enqire[name[i]].type == 10 ) n=8;
283 if(n>0)
284 {
285 /* calculate the start and end-point of the vector */
286 for(j=0; j<n; j++)
287 {
288 for(k=0; k<3; k++) v2[k]=0.;
289 for(k=0; k<ne; k++) v2[k]+=lcase[lc].dat[e[k]][e_enqire[name[i]].nod[j]];
290 p1[0]=node[e_enqire[name[i]].nod[j]].nx-(v2[0]*v_factor);
291 p1[1]=node[e_enqire[name[i]].nod[j]].ny-(v2[1]*v_factor);
292 p1[2]=node[e_enqire[name[i]].nod[j]].nz-(v2[2]*v_factor);
293 p2[0]=node[e_enqire[name[i]].nod[j]].nx+(v2[0]*v_factor);
294 p2[1]=node[e_enqire[name[i]].nod[j]].ny+(v2[1]*v_factor);
295 p2[2]=node[e_enqire[name[i]].nod[j]].nz+(v2[2]*v_factor);
296 glBegin ( GL_LINES );
297 glVertex3dv ( p1 );
298 glVertex3dv ( p2 );
299 glEnd();
300 glBegin ( GL_POINTS );
301 glVertex3dv ( p2 );
302 glEnd();
303 }
304 }
305 }
306 }
307
308
309
310
drawNodes_plot(int num,int * name,Nodes * node,int col,char type,int width)311 void drawNodes_plot( int num, int *name, Nodes *node , int col, char type, int width)
312 {
313 register int i,j;
314 int mode;
315 GLint viewport[4];
316 GLdouble mvmatrix[16], projmatrix[16];
317 static GLdouble wx, wy, wz, wxl; /* returned window x, y, z coords */
318 double mxl,myl,mzl;
319 static int flag2;
320
321 glutSetWindow( w1);
322 glLineWidth(1);
323 if(width>0) glPointSize(width);
324 else glPointSize(4);
325
326 glColor3f ( entitycol[col].r, entitycol[col].g, entitycol[col].b );
327
328 if(type=='t')
329 {
330 glGetIntegerv (GL_VIEWPORT, viewport);
331 glGetDoublev (GL_MODELVIEW_MATRIX, mvmatrix);
332 glGetDoublev (GL_PROJECTION_MATRIX, projmatrix);
333 for (i=0; i<num; i++ )
334 {
335 for(j=0; j<anz->t; j++)
336 {
337 if(ntext[j].node_nr==name[i])
338 {
339 buffer[0]=0;
340 if((ntext[j].text)&&(ntext[j].tFlag)&&(ntext[j].pFlag==1)) sprintf(buffer,"%s ",ntext[j].text);
341 if((ntext[j].nFlag)&&(ntext[j].vFlag)&&(anz->l))
342 {
343 switch(ntext[j].fFlag)
344 {
345 case 0:
346 sprintf(&buffer[strlen(buffer)],"%d %6.2le", name[i], lcase[cur_lc].dat[cur_entity][name[i]]);
347 break;
348 case 1:
349 sprintf(&buffer[strlen(buffer)],"%d %.2f", name[i], lcase[cur_lc].dat[cur_entity][name[i]]);
350 break;
351 case 2:
352 sprintf(&buffer[strlen(buffer)],"%d %d", name[i], (int)lcase[cur_lc].dat[cur_entity][name[i]]);
353 break;
354 printf("ERROR case:%d\n", ntext[j].fFlag);
355 }
356 }
357 else if(ntext[j].nFlag) sprintf(&buffer[strlen(buffer)],"%d", name[i]);
358 else if((ntext[j].vFlag)&&(anz->l))
359 {
360 switch(ntext[j].fFlag)
361 {
362 case 0:
363 sprintf(&buffer[strlen(buffer)],"%6.2le", lcase[cur_lc].dat[cur_entity][name[i]]);
364 break;
365 case 1:
366 sprintf(&buffer[strlen(buffer)],"%.2f", lcase[cur_lc].dat[cur_entity][name[i]]);
367 break;
368 case 2:
369 sprintf(&buffer[strlen(buffer)],"%d", (int)lcase[cur_lc].dat[cur_entity][name[i]]);
370 break;
371 printf("ERROR case:%d\n", ntext[j].fFlag);
372 }
373 }
374 if((ntext[j].text)&&(ntext[j].tFlag)&&(ntext[j].pFlag==0)) sprintf(&buffer[strlen(buffer)]," %s",ntext[j].text);
375
376 glLoadName('n');
377 glPushName(name[i]);
378 glBegin ( GL_POINTS );
379 glVertex3d ( node[name[i]].nx, node[name[i]].ny, node[name[i]].nz );
380 glEnd();
381 glPopName();
382 glLoadName(-1);
383
384 /* remark, calc of correct text coords works only if the related node is visible. this is not the case during picking and the last coords are taken */
385 glGetIntegerv(GL_RENDER_MODE,&mode);
386 //printf("mode:%d GL_SELECT:%d GL_RENDER:%d\n", mode, GL_SELECT, GL_RENDER);
387 if(mode==GL_SELECT)
388 {
389 glLoadName('t');
390 glPushName(j);
391 glBegin ( GL_LINE_STRIP );
392 glVertex3dv( &node[name[i]].nx);
393 /* mxl, myl, mzl would have to be updated and therefore this code has to be skipped for picking */
394 //if(wxl!=ntext[j].tx) glVertex3d( mxl, myl, mzl);
395 //else
396 glVertex3d( ntext[j].mx, ntext[j].my, ntext[j].mz);
397 glEnd();
398 text( ntext[j].mx, ntext[j].my, ntext[j].mz, buffer, glut_font[draw_font] );
399 glPopName();
400 glLoadName(-1);
401 continue;
402 }
403 flag2=gluProject( node[name[i]].nx, node[name[i]].ny, node[name[i]].nz, mvmatrix, projmatrix, viewport, &wx, &wy, &wz);
404 if (flag2==GL_FALSE) printf("WARNING: Malfunction, please reselect\n");
405 //printf("nxyz:%f %f %f\n",node[name[i]].nx, node[name[i]].ny, node[name[i]].nz);
406 //printf("wxyz:%f %f %f %f %f\n",wx, wy, wz, ntext[j].tx, ntext[j].ty);
407 if(ntext[j].tx>0)
408 {
409 /* line-start might be at the end of text (wxl) if CG-text_x < node_x */
410 if((int)ntext[j].tx+strlen(buffer)*pixPerCharx[draw_font]/2 < wx)
411 {
412 wxl=ntext[j].tx+strlen(buffer)*pixPerCharx[draw_font];
413 }
414 else wxl=ntext[j].tx;
415
416 wx=ntext[j].tx;
417 wy=viewport[3]-ntext[j].ty;
418 }
419 else wxl=wx;
420
421
422 wz=0.01; // close to the user, in front of the model
423 if (gluUnProject (wx, wy, wz, mvmatrix, projmatrix, viewport, &ntext[j].mx, &ntext[j].my, &ntext[j].mz)==GL_TRUE)
424 {
425 /* new model coords of the text-end */
426 gluUnProject (wxl, wy, wz, mvmatrix, projmatrix, viewport, &mxl, &myl, &mzl);
427 //printf ("model coords are %lf, %lf, %lf\n", ntext[j].mx, ntext[j].my, ntext[j].mz);
428 glBegin ( GL_LINE_STRIP );
429 glVertex3dv( &node[name[i]].nx);
430 if(wxl!=ntext[j].tx) glVertex3d( mxl, myl, mzl);
431 else glVertex3d( ntext[j].mx, ntext[j].my, ntext[j].mz);
432 glEnd();
433 text( ntext[j].mx, ntext[j].my, ntext[j].mz, buffer, glut_font[draw_font] );
434 }
435 else printf("WARNING: Malfunction, please reselect\n");
436 break;
437 }
438 }
439 }
440 return;
441 }
442
443 glLoadName('n');
444 if(type=='v')
445 {
446 if(anz->l)
447 {
448 /* enable all colors */
449 defineColTextur_load(1.);
450 glColor3d( 1,1,1);
451 glEnable(GL_TEXTURE_1D);
452 glDisable( GL_LIGHTING );
453 for (i=0; i<num; i++ )
454 {
455 glPushName(name[i]);
456 glBegin ( GL_POINTS );
457 GLCOLOR ( colNr[name[i]] );
458 glVertex3d ( node[name[i]].nx, node[name[i]].ny, node[name[i]].nz );
459 glEnd();
460 glPopName();
461 }
462 glDisable(GL_TEXTURE_1D);
463 }
464 }
465 else
466 {
467 for (i=0; i<num; i++ )
468 {
469 glPushName(name[i]);
470 glBegin ( GL_POINTS );
471 glVertex3d ( node[name[i]].nx, node[name[i]].ny, node[name[i]].nz );
472 glEnd();
473 glPopName();
474 }
475 }
476 glLoadName(-1);
477
478 if(type=='a')
479 {
480 for (i=0; i<num; i++ )
481 {
482 sprintf( buffer, "%d ", name[i]);
483 text( node[name[i]].nx, node[name[i]].ny, node[name[i]].nz, buffer, glut_font[draw_font] );
484 }
485 }
486 else if(type=='n')
487 {
488 if(anz->l)
489 {
490 glGetIntegerv (GL_VIEWPORT, viewport);
491 glGetDoublev (GL_MODELVIEW_MATRIX, mvmatrix);
492 glGetDoublev (GL_PROJECTION_MATRIX, projmatrix);
493 for (i=0; i<num; i++ )
494 {
495 sprintf( buffer, "%6.2le ", lcase[cur_lc].dat[cur_entity][name[i]]);
496 text( node[name[i]].nx, node[name[i]].ny, node[name[i]].nz, buffer, glut_font[draw_font] );
497 }
498 }
499 }
500 }
501
502
503
drawElements_plot(int num,int * name,Nodes * node,double * colNr,Elements * e_enqire,int col,char type,int width,int pickflag)504 void drawElements_plot( int num, int *name, Nodes *node, double *colNr, Elements *e_enqire, int col, char type, int width, int pickflag )
505 {
506 int i, j, n;
507 double x, y, z, alpha=1.;
508 static GLint ipuf[2];
509
510 if((type=='x')||(type=='b'))
511 {
512 if(width>0) { alpha=(float)width/100.; }
513 else alpha=BLEND_ALPHA;
514 width=1;
515 if(type=='x') type='v';
516 }
517 else
518 {
519 if(width<1) width=1;
520 glGetIntegerv( GL_CULL_FACE_MODE, ipuf );
521 if ( ipuf[0] == GL_FRONT ) glEnable ( GL_CULL_FACE );
522 else glDisable ( GL_CULL_FACE );
523 }
524 glLineWidth(width);
525
526 if((type=='v')&&(!pickflag)&&(illumResultFlag))
527 {
528 /* enable all colors */
529 defineColTextur_load(alpha);
530 //glColor3d( 1,1,1);
531 glEnable(GL_TEXTURE_1D);
532
533 setMaterial_rgb(1, 1.);
534 glEnable( GL_LIGHTING );
535
536 for (i=0; i<num; i++ )
537 {
538 switch(e_enqire[name[i]].type)
539 {
540 case 1:
541 glBegin ( GL_TRIANGLE_STRIP );
542 glNormal3dv ( e_enqire[name[i]].side[0] );
543 GLCOLOR ( colNr[e_enqire[name[i]].nod[1]] );
544 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
545 GLCOLOR ( colNr[e_enqire[name[i]].nod[2]] );
546 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
547 GLCOLOR ( colNr[e_enqire[name[i]].nod[5]] );
548 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
549 GLCOLOR ( colNr[e_enqire[name[i]].nod[6]] );
550 glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
551 glEnd();
552 glBegin ( GL_TRIANGLE_STRIP );
553 glNormal3dv ( e_enqire[name[i]].side[1] );
554 GLCOLOR ( colNr[e_enqire[name[i]].nod[5]] );
555 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
556 GLCOLOR ( colNr[e_enqire[name[i]].nod[6]] );
557 glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
558 GLCOLOR ( colNr[e_enqire[name[i]].nod[4]] );
559 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
560 GLCOLOR ( colNr[e_enqire[name[i]].nod[7]] );
561 glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
562 glEnd();
563 glBegin ( GL_TRIANGLE_STRIP );
564 glNormal3dv ( e_enqire[name[i]].side[2] );
565 GLCOLOR ( colNr[e_enqire[name[i]].nod[4]] );
566 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
567 GLCOLOR ( colNr[e_enqire[name[i]].nod[7]] );
568 glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
569 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
570 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
571 GLCOLOR ( colNr[e_enqire[name[i]].nod[3]] );
572 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
573 glEnd();
574 /* math.pos von z->y */
575 glBegin ( GL_TRIANGLE_STRIP );
576 glNormal3dv ( e_enqire[name[i]].side[3] );
577 GLCOLOR ( colNr[e_enqire[name[i]].nod[5]] );
578 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
579 GLCOLOR ( colNr[e_enqire[name[i]].nod[4]] );
580 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
581 GLCOLOR ( colNr[e_enqire[name[i]].nod[1]] );
582 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
583 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
584 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
585 glEnd();
586 glBegin ( GL_TRIANGLE_STRIP );
587 glNormal3dv ( e_enqire[name[i]].side[4] );
588 GLCOLOR ( colNr[e_enqire[name[i]].nod[1]] );
589 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
590 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
591 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
592 GLCOLOR ( colNr[e_enqire[name[i]].nod[2]] );
593 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
594 GLCOLOR ( colNr[e_enqire[name[i]].nod[3]] );
595 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
596 glEnd();
597 glBegin ( GL_TRIANGLE_STRIP );
598 glNormal3dv ( e_enqire[name[i]].side[5] );
599 GLCOLOR ( colNr[e_enqire[name[i]].nod[2]] );
600 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
601 GLCOLOR ( colNr[e_enqire[name[i]].nod[3]] );
602 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
603 GLCOLOR ( colNr[e_enqire[name[i]].nod[6]] );
604 glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
605 GLCOLOR ( colNr[e_enqire[name[i]].nod[7]] );
606 glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
607 glEnd();
608 break;
609
610 case 2:
611 glBegin ( GL_TRIANGLES );
612 glNormal3dv ( e_enqire[name[i]].side[0] );
613 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
614 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
615 GLCOLOR ( colNr[e_enqire[name[i]].nod[2]] );
616 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
617 GLCOLOR ( colNr[e_enqire[name[i]].nod[1]] );
618 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
619 glEnd();
620 glBegin ( GL_TRIANGLES );
621 glNormal3dv ( e_enqire[name[i]].side[1] );
622 GLCOLOR ( colNr[e_enqire[name[i]].nod[3]] );
623 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
624 GLCOLOR ( colNr[e_enqire[name[i]].nod[4]] );
625 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
626 GLCOLOR ( colNr[e_enqire[name[i]].nod[5]] );
627 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
628 glEnd();
629 glBegin ( GL_TRIANGLE_STRIP );
630 glNormal3dv ( e_enqire[name[i]].side[2] );
631 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
632 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
633 GLCOLOR ( colNr[e_enqire[name[i]].nod[1]] );
634 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
635 GLCOLOR ( colNr[e_enqire[name[i]].nod[3]] );
636 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
637 GLCOLOR ( colNr[e_enqire[name[i]].nod[2]] );
638 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
639 glEnd();
640 glBegin ( GL_TRIANGLE_STRIP );
641 glNormal3dv ( e_enqire[name[i]].side[3] );
642 GLCOLOR ( colNr[e_enqire[name[i]].nod[1]] );
643 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
644 GLCOLOR ( colNr[e_enqire[name[i]].nod[2]] );
645 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
646 GLCOLOR ( colNr[e_enqire[name[i]].nod[4]] );
647 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
648 GLCOLOR ( colNr[e_enqire[name[i]].nod[5]] );
649 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
650 glEnd();
651 glBegin ( GL_TRIANGLE_STRIP );
652 glNormal3dv ( e_enqire[name[i]].side[4] );
653 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
654 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
655 GLCOLOR ( colNr[e_enqire[name[i]].nod[3]] );
656 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
657 GLCOLOR ( colNr[e_enqire[name[i]].nod[2]] );
658 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
659 GLCOLOR ( colNr[e_enqire[name[i]].nod[5]] );
660 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
661 glEnd();
662 break;
663
664 case 3:
665 glBegin ( GL_TRIANGLE_FAN );
666 glNormal3dv ( e_enqire[name[i]].side[0] );
667 GLCOLOR ( colNr[e_enqire[name[i]].nod[3]] );
668 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
669 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
670 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
671 GLCOLOR ( colNr[e_enqire[name[i]].nod[1]] );
672 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
673 glNormal3dv ( e_enqire[name[i]].side[1] );
674 GLCOLOR ( colNr[e_enqire[name[i]].nod[2]] );
675 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
676 glNormal3dv ( e_enqire[name[i]].side[2] );
677 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
678 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
679 glEnd();
680 glBegin ( GL_TRIANGLES );
681 glNormal3dv ( e_enqire[name[i]].side[3] );
682 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
683 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
684 GLCOLOR ( colNr[e_enqire[name[i]].nod[2]] );
685 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
686 GLCOLOR ( colNr[e_enqire[name[i]].nod[1]] );
687 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
688 glEnd();
689 break;
690
691 case 4:
692 glBegin ( GL_TRIANGLE_FAN );
693 glNormal3dv ( e_enqire[name[i]].side[0] );
694 GLCOLOR ( colNr[e_enqire[name[i]].nod[21]] );
695 glVertex3dv ( &node[e_enqire[name[i]].nod[21]].nx );
696 GLCOLOR ( colNr[e_enqire[name[i]].nod[1]] );
697 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
698 GLCOLOR ( colNr[e_enqire[name[i]].nod[9]] );
699 glVertex3dv ( &node[e_enqire[name[i]].nod[9]].nx );
700 glNormal3dv ( e_enqire[name[i]].side[1] );
701 GLCOLOR ( colNr[e_enqire[name[i]].nod[2]] );
702 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
703 glNormal3dv ( e_enqire[name[i]].side[2] );
704 GLCOLOR ( colNr[e_enqire[name[i]].nod[14]] );
705 glVertex3dv ( &node[e_enqire[name[i]].nod[14]].nx );
706 glNormal3dv ( e_enqire[name[i]].side[3] );
707 GLCOLOR ( colNr[e_enqire[name[i]].nod[6]] );
708 glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
709 glNormal3dv ( e_enqire[name[i]].side[4] );
710 GLCOLOR ( colNr[e_enqire[name[i]].nod[17]] );
711 glVertex3dv ( &node[e_enqire[name[i]].nod[17]].nx );
712 glNormal3dv ( e_enqire[name[i]].side[5] );
713 GLCOLOR ( colNr[e_enqire[name[i]].nod[5]] );
714 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
715 glNormal3dv ( e_enqire[name[i]].side[6] );
716 GLCOLOR ( colNr[e_enqire[name[i]].nod[13]] );
717 glVertex3dv ( &node[e_enqire[name[i]].nod[13]].nx );
718 glNormal3dv ( e_enqire[name[i]].side[7] );
719 GLCOLOR ( colNr[e_enqire[name[i]].nod[1]] );
720 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
721 glEnd();
722 glBegin ( GL_TRIANGLE_FAN );
723 glNormal3dv ( e_enqire[name[i]].side[8] );
724 GLCOLOR ( colNr[e_enqire[name[i]].nod[22]] );
725 glVertex3dv ( &node[e_enqire[name[i]].nod[22]].nx );
726 GLCOLOR ( colNr[e_enqire[name[i]].nod[2]] );
727 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
728 GLCOLOR ( colNr[e_enqire[name[i]].nod[10]] );
729 glVertex3dv ( &node[e_enqire[name[i]].nod[10]].nx );
730 glNormal3dv ( e_enqire[name[i]].side[9] );
731 GLCOLOR ( colNr[e_enqire[name[i]].nod[3]] );
732 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
733 glNormal3dv ( e_enqire[name[i]].side[10] );
734 GLCOLOR ( colNr[e_enqire[name[i]].nod[15]] );
735 glVertex3dv ( &node[e_enqire[name[i]].nod[15]].nx );
736 glNormal3dv ( e_enqire[name[i]].side[11] );
737 GLCOLOR ( colNr[e_enqire[name[i]].nod[7]] );
738 glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
739 glNormal3dv ( e_enqire[name[i]].side[12] );
740 GLCOLOR ( colNr[e_enqire[name[i]].nod[18]] );
741 glVertex3dv ( &node[e_enqire[name[i]].nod[18]].nx );
742 glNormal3dv ( e_enqire[name[i]].side[13] );
743 GLCOLOR ( colNr[e_enqire[name[i]].nod[6]] );
744 glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
745 glNormal3dv ( e_enqire[name[i]].side[14] );
746 GLCOLOR ( colNr[e_enqire[name[i]].nod[14]] );
747 glVertex3dv ( &node[e_enqire[name[i]].nod[14]].nx );
748 glNormal3dv ( e_enqire[name[i]].side[15] );
749 GLCOLOR ( colNr[e_enqire[name[i]].nod[2]] );
750 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
751 glEnd();
752 glBegin ( GL_TRIANGLE_FAN );
753 glNormal3dv ( e_enqire[name[i]].side[16] );
754 GLCOLOR ( colNr[e_enqire[name[i]].nod[23]] );
755 glVertex3dv ( &node[e_enqire[name[i]].nod[23]].nx );
756 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
757 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
758 GLCOLOR ( colNr[e_enqire[name[i]].nod[12]] );
759 glVertex3dv ( &node[e_enqire[name[i]].nod[12]].nx );
760 glNormal3dv ( e_enqire[name[i]].side[17] );
761 GLCOLOR ( colNr[e_enqire[name[i]].nod[4]] );
762 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
763 glNormal3dv ( e_enqire[name[i]].side[18] );
764 GLCOLOR ( colNr[e_enqire[name[i]].nod[19]] );
765 glVertex3dv ( &node[e_enqire[name[i]].nod[19]].nx );
766 glNormal3dv ( e_enqire[name[i]].side[19] );
767 GLCOLOR ( colNr[e_enqire[name[i]].nod[7]] );
768 glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
769 glNormal3dv ( e_enqire[name[i]].side[20] );
770 GLCOLOR ( colNr[e_enqire[name[i]].nod[15]] );
771 glVertex3dv ( &node[e_enqire[name[i]].nod[15]].nx );
772 glNormal3dv ( e_enqire[name[i]].side[21] );
773 GLCOLOR ( colNr[e_enqire[name[i]].nod[3]] );
774 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
775 glNormal3dv ( e_enqire[name[i]].side[22] );
776 GLCOLOR ( colNr[e_enqire[name[i]].nod[11]] );
777 glVertex3dv ( &node[e_enqire[name[i]].nod[11]].nx );
778 glNormal3dv ( e_enqire[name[i]].side[23] );
779 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
780 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
781 glEnd();
782 glBegin ( GL_TRIANGLE_FAN );
783 glNormal3dv ( e_enqire[name[i]].side[24] );
784 GLCOLOR ( colNr[e_enqire[name[i]].nod[24]] );
785 glVertex3dv ( &node[e_enqire[name[i]].nod[24]].nx );
786 GLCOLOR ( colNr[e_enqire[name[i]].nod[1]] );
787 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
788 GLCOLOR ( colNr[e_enqire[name[i]].nod[8]] );
789 glVertex3dv ( &node[e_enqire[name[i]].nod[8]].nx );
790 glNormal3dv ( e_enqire[name[i]].side[25] );
791 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
792 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
793 glNormal3dv ( e_enqire[name[i]].side[26] );
794 GLCOLOR ( colNr[e_enqire[name[i]].nod[11]] );
795 glVertex3dv ( &node[e_enqire[name[i]].nod[11]].nx );
796 glNormal3dv ( e_enqire[name[i]].side[27] );
797 GLCOLOR ( colNr[e_enqire[name[i]].nod[3]] );
798 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
799 glNormal3dv ( e_enqire[name[i]].side[28] );
800 GLCOLOR ( colNr[e_enqire[name[i]].nod[10]] );
801 glVertex3dv ( &node[e_enqire[name[i]].nod[10]].nx );
802 glNormal3dv ( e_enqire[name[i]].side[29] );
803 GLCOLOR ( colNr[e_enqire[name[i]].nod[2]] );
804 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
805 glNormal3dv ( e_enqire[name[i]].side[30] );
806 GLCOLOR ( colNr[e_enqire[name[i]].nod[9]] );
807 glVertex3dv ( &node[e_enqire[name[i]].nod[9]].nx );
808 glNormal3dv ( e_enqire[name[i]].side[31] );
809 GLCOLOR ( colNr[e_enqire[name[i]].nod[1]] );
810 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
811 glEnd();
812 glBegin ( GL_TRIANGLE_FAN );
813 glNormal3dv ( e_enqire[name[i]].side[32] );
814 GLCOLOR ( colNr[e_enqire[name[i]].nod[25]] );
815 glVertex3dv ( &node[e_enqire[name[i]].nod[25]].nx );
816 GLCOLOR ( colNr[e_enqire[name[i]].nod[4]] );
817 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
818 GLCOLOR ( colNr[e_enqire[name[i]].nod[16]] );
819 glVertex3dv ( &node[e_enqire[name[i]].nod[16]].nx );
820 glNormal3dv ( e_enqire[name[i]].side[33] );
821 GLCOLOR ( colNr[e_enqire[name[i]].nod[5]] );
822 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
823 glNormal3dv ( e_enqire[name[i]].side[34] );
824 GLCOLOR ( colNr[e_enqire[name[i]].nod[17]] );
825 glVertex3dv ( &node[e_enqire[name[i]].nod[17]].nx );
826 glNormal3dv ( e_enqire[name[i]].side[35] );
827 GLCOLOR ( colNr[e_enqire[name[i]].nod[6]] );
828 glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
829 glNormal3dv ( e_enqire[name[i]].side[36] );
830 GLCOLOR ( colNr[e_enqire[name[i]].nod[18]] );
831 glVertex3dv ( &node[e_enqire[name[i]].nod[18]].nx );
832 glNormal3dv ( e_enqire[name[i]].side[37] );
833 GLCOLOR ( colNr[e_enqire[name[i]].nod[7]] );
834 glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
835 glNormal3dv ( e_enqire[name[i]].side[38] );
836 GLCOLOR ( colNr[e_enqire[name[i]].nod[19]] );
837 glVertex3dv ( &node[e_enqire[name[i]].nod[19]].nx );
838 glNormal3dv ( e_enqire[name[i]].side[39] );
839 GLCOLOR ( colNr[e_enqire[name[i]].nod[4]] );
840 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
841 glEnd();
842 glBegin ( GL_TRIANGLE_FAN );
843 glNormal3dv ( e_enqire[name[i]].side[40] );
844 GLCOLOR ( colNr[e_enqire[name[i]].nod[20]] );
845 glVertex3dv ( &node[e_enqire[name[i]].nod[20]].nx );
846 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
847 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
848 GLCOLOR ( colNr[e_enqire[name[i]].nod[8]] );
849 glVertex3dv ( &node[e_enqire[name[i]].nod[8]].nx );
850 glNormal3dv ( e_enqire[name[i]].side[41] );
851 GLCOLOR ( colNr[e_enqire[name[i]].nod[1]] );
852 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
853 glNormal3dv ( e_enqire[name[i]].side[42] );
854 GLCOLOR ( colNr[e_enqire[name[i]].nod[13]] );
855 glVertex3dv ( &node[e_enqire[name[i]].nod[13]].nx );
856 glNormal3dv ( e_enqire[name[i]].side[43] );
857 GLCOLOR ( colNr[e_enqire[name[i]].nod[5]] );
858 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
859 glNormal3dv ( e_enqire[name[i]].side[44] );
860 GLCOLOR ( colNr[e_enqire[name[i]].nod[16]] );
861 glVertex3dv ( &node[e_enqire[name[i]].nod[16]].nx );
862 glNormal3dv ( e_enqire[name[i]].side[45] );
863 GLCOLOR ( colNr[e_enqire[name[i]].nod[4]] );
864 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
865 glNormal3dv ( e_enqire[name[i]].side[46] );
866 GLCOLOR ( colNr[e_enqire[name[i]].nod[12]] );
867 glVertex3dv ( &node[e_enqire[name[i]].nod[12]].nx );
868 glNormal3dv ( e_enqire[name[i]].side[47] );
869 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
870 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
871 glEnd();
872 break;
873
874 case 5:
875 glBegin ( GL_TRIANGLES );
876 glNormal3dv ( e_enqire[name[i]].side[0] );
877 GLCOLOR ( colNr[e_enqire[name[i]].nod[1]] );
878 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
879 GLCOLOR ( colNr[e_enqire[name[i]].nod[10]] );
880 glVertex3dv ( &node[e_enqire[name[i]].nod[10]].nx );
881 GLCOLOR ( colNr[e_enqire[name[i]].nod[6]] );
882 glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
883 glNormal3dv ( e_enqire[name[i]].side[1] );
884 GLCOLOR ( colNr[e_enqire[name[i]].nod[6]] );
885 glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
886 GLCOLOR ( colNr[e_enqire[name[i]].nod[10]] );
887 glVertex3dv ( &node[e_enqire[name[i]].nod[10]].nx );
888 GLCOLOR ( colNr[e_enqire[name[i]].nod[15]] );
889 glVertex3dv ( &node[e_enqire[name[i]].nod[15]].nx );
890 glNormal3dv ( e_enqire[name[i]].side[2] );
891 GLCOLOR ( colNr[e_enqire[name[i]].nod[6]] );
892 glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
893 GLCOLOR ( colNr[e_enqire[name[i]].nod[15]] );
894 glVertex3dv ( &node[e_enqire[name[i]].nod[15]].nx );
895 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
896 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
897 glNormal3dv ( e_enqire[name[i]].side[3] );
898 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
899 glVertex3dv ( &node[e_enqire[name[i]].nod[00]].nx );
900 GLCOLOR ( colNr[e_enqire[name[i]].nod[15]] );
901 glVertex3dv ( &node[e_enqire[name[i]].nod[15]].nx );
902 GLCOLOR ( colNr[e_enqire[name[i]].nod[9]] );
903 glVertex3dv ( &node[e_enqire[name[i]].nod[9]].nx );
904 glNormal3dv ( e_enqire[name[i]].side[4] );
905 GLCOLOR ( colNr[e_enqire[name[i]].nod[10]] );
906 glVertex3dv ( &node[e_enqire[name[i]].nod[10]].nx );
907 GLCOLOR ( colNr[e_enqire[name[i]].nod[4]] );
908 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
909 GLCOLOR ( colNr[e_enqire[name[i]].nod[15]] );
910 glVertex3dv ( &node[e_enqire[name[i]].nod[15]].nx );
911 glNormal3dv ( e_enqire[name[i]].side[5] );
912 GLCOLOR ( colNr[e_enqire[name[i]].nod[15]] );
913 glVertex3dv ( &node[e_enqire[name[i]].nod[15]].nx );
914 GLCOLOR ( colNr[e_enqire[name[i]].nod[4]] );
915 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
916 GLCOLOR ( colNr[e_enqire[name[i]].nod[12]] );
917 glVertex3dv ( &node[e_enqire[name[i]].nod[12]].nx );
918 glNormal3dv ( e_enqire[name[i]].side[6] );
919 GLCOLOR ( colNr[e_enqire[name[i]].nod[15]] );
920 glVertex3dv ( &node[e_enqire[name[i]].nod[15]].nx );
921 GLCOLOR ( colNr[e_enqire[name[i]].nod[12]] );
922 glVertex3dv ( &node[e_enqire[name[i]].nod[12]].nx );
923 GLCOLOR ( colNr[e_enqire[name[i]].nod[9]] );
924 glVertex3dv ( &node[e_enqire[name[i]].nod[9]].nx );
925 glNormal3dv ( e_enqire[name[i]].side[7] );
926 GLCOLOR ( colNr[e_enqire[name[i]].nod[9]] );
927 glVertex3dv ( &node[e_enqire[name[i]].nod[9]].nx );
928 GLCOLOR ( colNr[e_enqire[name[i]].nod[12]] );
929 glVertex3dv ( &node[e_enqire[name[i]].nod[12]].nx );
930 GLCOLOR ( colNr[e_enqire[name[i]].nod[3]] );
931 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
932 glNormal3dv ( e_enqire[name[i]].side[8] );
933 GLCOLOR ( colNr[e_enqire[name[i]].nod[2]] );
934 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
935 GLCOLOR ( colNr[e_enqire[name[i]].nod[11]] );
936 glVertex3dv ( &node[e_enqire[name[i]].nod[11]].nx );
937 GLCOLOR ( colNr[e_enqire[name[i]].nod[7]] );
938 glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
939 glNormal3dv ( e_enqire[name[i]].side[9] );
940 GLCOLOR ( colNr[e_enqire[name[i]].nod[7]] );
941 glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
942 GLCOLOR ( colNr[e_enqire[name[i]].nod[11]] );
943 glVertex3dv ( &node[e_enqire[name[i]].nod[11]].nx );
944 GLCOLOR ( colNr[e_enqire[name[i]].nod[16]] );
945 glVertex3dv ( &node[e_enqire[name[i]].nod[16]].nx );
946 glNormal3dv ( e_enqire[name[i]].side[10] );
947 GLCOLOR ( colNr[e_enqire[name[i]].nod[7]] );
948 glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
949 GLCOLOR ( colNr[e_enqire[name[i]].nod[16]] );
950 glVertex3dv ( &node[e_enqire[name[i]].nod[16]].nx );
951 GLCOLOR ( colNr[e_enqire[name[i]].nod[1]] );
952 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
953 glNormal3dv ( e_enqire[name[i]].side[11] );
954 GLCOLOR ( colNr[e_enqire[name[i]].nod[1]] );
955 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
956 GLCOLOR ( colNr[e_enqire[name[i]].nod[16]] );
957 glVertex3dv ( &node[e_enqire[name[i]].nod[16]].nx );
958 GLCOLOR ( colNr[e_enqire[name[i]].nod[10]] );
959 glVertex3dv ( &node[e_enqire[name[i]].nod[10]].nx );
960 glNormal3dv ( e_enqire[name[i]].side[12] );
961 GLCOLOR ( colNr[e_enqire[name[i]].nod[11]] );
962 glVertex3dv ( &node[e_enqire[name[i]].nod[11]].nx );
963 GLCOLOR ( colNr[e_enqire[name[i]].nod[5]] );
964 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
965 GLCOLOR ( colNr[e_enqire[name[i]].nod[16]] );
966 glVertex3dv ( &node[e_enqire[name[i]].nod[16]].nx );
967 glNormal3dv ( e_enqire[name[i]].side[13] );
968 GLCOLOR ( colNr[e_enqire[name[i]].nod[16]] );
969 glVertex3dv ( &node[e_enqire[name[i]].nod[16]].nx );
970 GLCOLOR ( colNr[e_enqire[name[i]].nod[5]] );
971 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
972 GLCOLOR ( colNr[e_enqire[name[i]].nod[13]] );
973 glVertex3dv ( &node[e_enqire[name[i]].nod[13]].nx );
974 glNormal3dv ( e_enqire[name[i]].side[14] );
975 GLCOLOR ( colNr[e_enqire[name[i]].nod[16]] );
976 glVertex3dv ( &node[e_enqire[name[i]].nod[16]].nx );
977 GLCOLOR ( colNr[e_enqire[name[i]].nod[13]] );
978 glVertex3dv ( &node[e_enqire[name[i]].nod[13]].nx );
979 GLCOLOR ( colNr[e_enqire[name[i]].nod[10]] );
980 glVertex3dv ( &node[e_enqire[name[i]].nod[10]].nx );
981 glNormal3dv ( e_enqire[name[i]].side[15] );
982 GLCOLOR ( colNr[e_enqire[name[i]].nod[10]] );
983 glVertex3dv ( &node[e_enqire[name[i]].nod[10]].nx );
984 GLCOLOR ( colNr[e_enqire[name[i]].nod[13]] );
985 glVertex3dv ( &node[e_enqire[name[i]].nod[13]].nx );
986 GLCOLOR ( colNr[e_enqire[name[i]].nod[4]] );
987 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
988 glNormal3dv ( e_enqire[name[i]].side[16] );
989 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
990 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
991 GLCOLOR ( colNr[e_enqire[name[i]].nod[9]] );
992 glVertex3dv ( &node[e_enqire[name[i]].nod[9]].nx );
993 GLCOLOR ( colNr[e_enqire[name[i]].nod[8]] );
994 glVertex3dv ( &node[e_enqire[name[i]].nod[8]].nx );
995 glNormal3dv ( e_enqire[name[i]].side[17] );
996 GLCOLOR ( colNr[e_enqire[name[i]].nod[8]] );
997 glVertex3dv ( &node[e_enqire[name[i]].nod[8]].nx );
998 GLCOLOR ( colNr[e_enqire[name[i]].nod[9]] );
999 glVertex3dv ( &node[e_enqire[name[i]].nod[9]].nx );
1000 GLCOLOR ( colNr[e_enqire[name[i]].nod[17]] );
1001 glVertex3dv ( &node[e_enqire[name[i]].nod[17]].nx );
1002 glNormal3dv ( e_enqire[name[i]].side[18] );
1003 GLCOLOR ( colNr[e_enqire[name[i]].nod[8]] );
1004 glVertex3dv ( &node[e_enqire[name[i]].nod[8]].nx );
1005 GLCOLOR ( colNr[e_enqire[name[i]].nod[17]] );
1006 glVertex3dv ( &node[e_enqire[name[i]].nod[17]].nx );
1007 GLCOLOR ( colNr[e_enqire[name[i]].nod[2]] );
1008 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1009 glNormal3dv ( e_enqire[name[i]].side[19] );
1010 GLCOLOR ( colNr[e_enqire[name[i]].nod[2]] );
1011 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1012 GLCOLOR ( colNr[e_enqire[name[i]].nod[17]] );
1013 glVertex3dv ( &node[e_enqire[name[i]].nod[17]].nx );
1014 GLCOLOR ( colNr[e_enqire[name[i]].nod[11]] );
1015 glVertex3dv ( &node[e_enqire[name[i]].nod[11]].nx );
1016 glNormal3dv ( e_enqire[name[i]].side[20] );
1017 GLCOLOR ( colNr[e_enqire[name[i]].nod[9]] );
1018 glVertex3dv ( &node[e_enqire[name[i]].nod[9]].nx );
1019 GLCOLOR ( colNr[e_enqire[name[i]].nod[3]] );
1020 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1021 GLCOLOR ( colNr[e_enqire[name[i]].nod[17]] );
1022 glVertex3dv ( &node[e_enqire[name[i]].nod[17]].nx );
1023 glNormal3dv ( e_enqire[name[i]].side[21] );
1024 GLCOLOR ( colNr[e_enqire[name[i]].nod[17]] );
1025 glVertex3dv ( &node[e_enqire[name[i]].nod[17]].nx );
1026 GLCOLOR ( colNr[e_enqire[name[i]].nod[3]] );
1027 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1028 GLCOLOR ( colNr[e_enqire[name[i]].nod[14]] );
1029 glVertex3dv ( &node[e_enqire[name[i]].nod[14]].nx );
1030 glNormal3dv ( e_enqire[name[i]].side[22] );
1031 GLCOLOR ( colNr[e_enqire[name[i]].nod[17]] );
1032 glVertex3dv ( &node[e_enqire[name[i]].nod[17]].nx );
1033 GLCOLOR ( colNr[e_enqire[name[i]].nod[14]] );
1034 glVertex3dv ( &node[e_enqire[name[i]].nod[14]].nx );
1035 GLCOLOR ( colNr[e_enqire[name[i]].nod[11]] );
1036 glVertex3dv ( &node[e_enqire[name[i]].nod[11]].nx );
1037 glNormal3dv ( e_enqire[name[i]].side[23] );
1038 GLCOLOR ( colNr[e_enqire[name[i]].nod[11]] );
1039 glVertex3dv ( &node[e_enqire[name[i]].nod[11]].nx );
1040 GLCOLOR ( colNr[e_enqire[name[i]].nod[14]] );
1041 glVertex3dv ( &node[e_enqire[name[i]].nod[14]].nx );
1042 GLCOLOR ( colNr[e_enqire[name[i]].nod[5]] );
1043 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1044 glNormal3dv ( e_enqire[name[i]].side[24] );
1045 GLCOLOR ( colNr[e_enqire[name[i]].nod[2]] );
1046 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1047 GLCOLOR ( colNr[e_enqire[name[i]].nod[7]] );
1048 glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
1049 GLCOLOR ( colNr[e_enqire[name[i]].nod[8]] );
1050 glVertex3dv ( &node[e_enqire[name[i]].nod[8]].nx );
1051 glNormal3dv ( e_enqire[name[i]].side[25] );
1052 GLCOLOR ( colNr[e_enqire[name[i]].nod[8]] );
1053 glVertex3dv ( &node[e_enqire[name[i]].nod[8]].nx );
1054 GLCOLOR ( colNr[e_enqire[name[i]].nod[7]] );
1055 glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
1056 GLCOLOR ( colNr[e_enqire[name[i]].nod[18]] );
1057 glVertex3dv ( &node[e_enqire[name[i]].nod[18]].nx );
1058 glNormal3dv ( e_enqire[name[i]].side[26] );
1059 GLCOLOR ( colNr[e_enqire[name[i]].nod[8]] );
1060 glVertex3dv ( &node[e_enqire[name[i]].nod[8]].nx );
1061 GLCOLOR ( colNr[e_enqire[name[i]].nod[18]] );
1062 glVertex3dv ( &node[e_enqire[name[i]].nod[18]].nx );
1063 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
1064 glVertex3dv ( &node[e_enqire[name[i]].nod[00]].nx );
1065 glNormal3dv ( e_enqire[name[i]].side[27] );
1066 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
1067 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1068 GLCOLOR ( colNr[e_enqire[name[i]].nod[18]] );
1069 glVertex3dv ( &node[e_enqire[name[i]].nod[18]].nx );
1070 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
1071 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1072 glNormal3dv ( e_enqire[name[i]].side[28] );
1073 GLCOLOR ( colNr[e_enqire[name[i]].nod[7]] );
1074 glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
1075 GLCOLOR ( colNr[e_enqire[name[i]].nod[1]] );
1076 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1077 GLCOLOR ( colNr[e_enqire[name[i]].nod[18]] );
1078 glVertex3dv ( &node[e_enqire[name[i]].nod[18]].nx );
1079 glNormal3dv ( e_enqire[name[i]].side[29] );
1080 GLCOLOR ( colNr[e_enqire[name[i]].nod[18]] );
1081 glVertex3dv ( &node[e_enqire[name[i]].nod[18]].nx );
1082 GLCOLOR ( colNr[e_enqire[name[i]].nod[1]] );
1083 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1084 GLCOLOR ( colNr[e_enqire[name[i]].nod[6]] );
1085 glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
1086 glNormal3dv ( e_enqire[name[i]].side[30] );
1087 GLCOLOR ( colNr[e_enqire[name[i]].nod[18]] );
1088 glVertex3dv ( &node[e_enqire[name[i]].nod[18]].nx );
1089 GLCOLOR ( colNr[e_enqire[name[i]].nod[6]] );
1090 glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
1091 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
1092 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1093 glNormal3dv ( e_enqire[name[i]].side[31] );
1094 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
1095 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1096 GLCOLOR ( colNr[e_enqire[name[i]].nod[6]] );
1097 glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
1098 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
1099 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1100 glNormal3dv ( e_enqire[name[i]].side[32] );
1101 GLCOLOR ( colNr[e_enqire[name[i]].nod[4]] );
1102 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1103 GLCOLOR ( colNr[e_enqire[name[i]].nod[13]] );
1104 glVertex3dv ( &node[e_enqire[name[i]].nod[13]].nx );
1105 GLCOLOR ( colNr[e_enqire[name[i]].nod[12]] );
1106 glVertex3dv ( &node[e_enqire[name[i]].nod[12]].nx );
1107 glNormal3dv ( e_enqire[name[i]].side[33] );
1108 GLCOLOR ( colNr[e_enqire[name[i]].nod[12]] );
1109 glVertex3dv ( &node[e_enqire[name[i]].nod[12]].nx );
1110 GLCOLOR ( colNr[e_enqire[name[i]].nod[13]] );
1111 glVertex3dv ( &node[e_enqire[name[i]].nod[13]].nx );
1112 GLCOLOR ( colNr[e_enqire[name[i]].nod[19]] );
1113 glVertex3dv ( &node[e_enqire[name[i]].nod[19]].nx );
1114 glNormal3dv ( e_enqire[name[i]].side[34] );
1115 GLCOLOR ( colNr[e_enqire[name[i]].nod[12]] );
1116 glVertex3dv ( &node[e_enqire[name[i]].nod[12]].nx );
1117 GLCOLOR ( colNr[e_enqire[name[i]].nod[19]] );
1118 glVertex3dv ( &node[e_enqire[name[i]].nod[19]].nx );
1119 GLCOLOR ( colNr[e_enqire[name[i]].nod[3]] );
1120 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1121 glNormal3dv ( e_enqire[name[i]].side[35] );
1122 GLCOLOR ( colNr[e_enqire[name[i]].nod[3]] );
1123 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1124 GLCOLOR ( colNr[e_enqire[name[i]].nod[19]] );
1125 glVertex3dv ( &node[e_enqire[name[i]].nod[19]].nx );
1126 GLCOLOR ( colNr[e_enqire[name[i]].nod[3]] );
1127 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1128 glNormal3dv ( e_enqire[name[i]].side[36] );
1129 GLCOLOR ( colNr[e_enqire[name[i]].nod[13]] );
1130 glVertex3dv ( &node[e_enqire[name[i]].nod[13]].nx );
1131 GLCOLOR ( colNr[e_enqire[name[i]].nod[5]] );
1132 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1133 GLCOLOR ( colNr[e_enqire[name[i]].nod[19]] );
1134 glVertex3dv ( &node[e_enqire[name[i]].nod[19]].nx );
1135 glNormal3dv ( e_enqire[name[i]].side[37] );
1136 GLCOLOR ( colNr[e_enqire[name[i]].nod[19]] );
1137 glVertex3dv ( &node[e_enqire[name[i]].nod[19]].nx );
1138 GLCOLOR ( colNr[e_enqire[name[i]].nod[5]] );
1139 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1140 GLCOLOR ( colNr[e_enqire[name[i]].nod[14]] );
1141 glVertex3dv ( &node[e_enqire[name[i]].nod[14]].nx );
1142 glNormal3dv ( e_enqire[name[i]].side[38] );
1143 GLCOLOR ( colNr[e_enqire[name[i]].nod[19]] );
1144 glVertex3dv ( &node[e_enqire[name[i]].nod[19]].nx );
1145 GLCOLOR ( colNr[e_enqire[name[i]].nod[14]] );
1146 glVertex3dv ( &node[e_enqire[name[i]].nod[14]].nx );
1147 GLCOLOR ( colNr[e_enqire[name[i]].nod[3]] );
1148 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1149 glNormal3dv ( e_enqire[name[i]].side[39] );
1150 GLCOLOR ( colNr[e_enqire[name[i]].nod[3]] );
1151 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1152 GLCOLOR ( colNr[e_enqire[name[i]].nod[14]] );
1153 glVertex3dv ( &node[e_enqire[name[i]].nod[14]].nx );
1154 GLCOLOR ( colNr[e_enqire[name[i]].nod[3]] );
1155 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1156 glEnd();
1157 break;
1158
1159 case 6:
1160 glBegin ( GL_TRIANGLES );
1161 glNormal3dv ( e_enqire[name[i]].side[0] );
1162 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
1163 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1164 GLCOLOR ( colNr[e_enqire[name[i]].nod[4]] );
1165 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1166 GLCOLOR ( colNr[e_enqire[name[i]].nod[7]] );
1167 glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
1168 glNormal3dv ( e_enqire[name[i]].side[1] );
1169 GLCOLOR ( colNr[e_enqire[name[i]].nod[7]] );
1170 glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
1171 GLCOLOR ( colNr[e_enqire[name[i]].nod[4]] );
1172 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1173 GLCOLOR ( colNr[e_enqire[name[i]].nod[8]] );
1174 glVertex3dv ( &node[e_enqire[name[i]].nod[8]].nx );
1175 glNormal3dv ( e_enqire[name[i]].side[2] );
1176 GLCOLOR ( colNr[e_enqire[name[i]].nod[8]] );
1177 glVertex3dv ( &node[e_enqire[name[i]].nod[8]].nx );
1178 GLCOLOR ( colNr[e_enqire[name[i]].nod[4]] );
1179 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1180 GLCOLOR ( colNr[e_enqire[name[i]].nod[1]] );
1181 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1182 glNormal3dv ( e_enqire[name[i]].side[3] );
1183 GLCOLOR ( colNr[e_enqire[name[i]].nod[7]] );
1184 glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
1185 GLCOLOR ( colNr[e_enqire[name[i]].nod[8]] );
1186 glVertex3dv ( &node[e_enqire[name[i]].nod[8]].nx );
1187 GLCOLOR ( colNr[e_enqire[name[i]].nod[3]] );
1188 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1189 glNormal3dv ( e_enqire[name[i]].side[4] );
1190 GLCOLOR ( colNr[e_enqire[name[i]].nod[1]] );
1191 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1192 GLCOLOR ( colNr[e_enqire[name[i]].nod[5]] );
1193 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1194 GLCOLOR ( colNr[e_enqire[name[i]].nod[8]] );
1195 glVertex3dv ( &node[e_enqire[name[i]].nod[8]].nx );
1196 glNormal3dv ( e_enqire[name[i]].side[5] );
1197 GLCOLOR ( colNr[e_enqire[name[i]].nod[8]] );
1198 glVertex3dv ( &node[e_enqire[name[i]].nod[8]].nx );
1199 GLCOLOR ( colNr[e_enqire[name[i]].nod[5]] );
1200 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1201 GLCOLOR ( colNr[e_enqire[name[i]].nod[9]] );
1202 glVertex3dv ( &node[e_enqire[name[i]].nod[9]].nx );
1203 glNormal3dv ( e_enqire[name[i]].side[6] );
1204 GLCOLOR ( colNr[e_enqire[name[i]].nod[9]] );
1205 glVertex3dv ( &node[e_enqire[name[i]].nod[9]].nx );
1206 GLCOLOR ( colNr[e_enqire[name[i]].nod[5]] );
1207 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1208 GLCOLOR ( colNr[e_enqire[name[i]].nod[2]] );
1209 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1210 glNormal3dv ( e_enqire[name[i]].side[7] );
1211 GLCOLOR ( colNr[e_enqire[name[i]].nod[8]] );
1212 glVertex3dv ( &node[e_enqire[name[i]].nod[8]].nx );
1213 GLCOLOR ( colNr[e_enqire[name[i]].nod[9]] );
1214 glVertex3dv ( &node[e_enqire[name[i]].nod[9]].nx );
1215 GLCOLOR ( colNr[e_enqire[name[i]].nod[3]] );
1216 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1217 glNormal3dv ( e_enqire[name[i]].side[8] );
1218 GLCOLOR ( colNr[e_enqire[name[i]].nod[2]] );
1219 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1220 GLCOLOR ( colNr[e_enqire[name[i]].nod[6]] );
1221 glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
1222 GLCOLOR ( colNr[e_enqire[name[i]].nod[9]] );
1223 glVertex3dv ( &node[e_enqire[name[i]].nod[9]].nx );
1224 glNormal3dv ( e_enqire[name[i]].side[9] );
1225 GLCOLOR ( colNr[e_enqire[name[i]].nod[9]] );
1226 glVertex3dv ( &node[e_enqire[name[i]].nod[9]].nx );
1227 GLCOLOR ( colNr[e_enqire[name[i]].nod[6]] );
1228 glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
1229 GLCOLOR ( colNr[e_enqire[name[i]].nod[7]] );
1230 glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
1231 glNormal3dv ( e_enqire[name[i]].side[10] );
1232 GLCOLOR ( colNr[e_enqire[name[i]].nod[7]] );
1233 glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
1234 GLCOLOR ( colNr[e_enqire[name[i]].nod[6]] );
1235 glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
1236 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
1237 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1238 glNormal3dv ( e_enqire[name[i]].side[11] );
1239 GLCOLOR ( colNr[e_enqire[name[i]].nod[9]] );
1240 glVertex3dv ( &node[e_enqire[name[i]].nod[9]].nx );
1241 GLCOLOR ( colNr[e_enqire[name[i]].nod[7]] );
1242 glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
1243 GLCOLOR ( colNr[e_enqire[name[i]].nod[3]] );
1244 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1245 glNormal3dv ( e_enqire[name[i]].side[12] );
1246 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
1247 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1248 GLCOLOR ( colNr[e_enqire[name[i]].nod[6]] );
1249 glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
1250 GLCOLOR ( colNr[e_enqire[name[i]].nod[4]] );
1251 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1252 glNormal3dv ( e_enqire[name[i]].side[13] );
1253 GLCOLOR ( colNr[e_enqire[name[i]].nod[4]] );
1254 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1255 GLCOLOR ( colNr[e_enqire[name[i]].nod[6]] );
1256 glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
1257 GLCOLOR ( colNr[e_enqire[name[i]].nod[5]] );
1258 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1259 glNormal3dv ( e_enqire[name[i]].side[14] );
1260 GLCOLOR ( colNr[e_enqire[name[i]].nod[5]] );
1261 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1262 GLCOLOR ( colNr[e_enqire[name[i]].nod[6]] );
1263 glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
1264 GLCOLOR ( colNr[e_enqire[name[i]].nod[2]] );
1265 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1266 glNormal3dv ( e_enqire[name[i]].side[15] );
1267 GLCOLOR ( colNr[e_enqire[name[i]].nod[4]] );
1268 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1269 GLCOLOR ( colNr[e_enqire[name[i]].nod[5]] );
1270 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1271 GLCOLOR ( colNr[e_enqire[name[i]].nod[1]] );
1272 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1273 glEnd();
1274 break;
1275
1276 case 7:
1277 glNormal3dv ( e_enqire[name[i]].side[0] );
1278 glBegin ( GL_TRIANGLES );
1279 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
1280 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1281 GLCOLOR ( colNr[e_enqire[name[i]].nod[1]] );
1282 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1283 glNormal3dv ( e_enqire[name[i]].side[0] );
1284 GLCOLOR ( colNr[e_enqire[name[i]].nod[2]] );
1285 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1286 glEnd();
1287 break;
1288
1289 case 8:
1290 glNormal3dv ( e_enqire[name[i]].side[0] );
1291 glBegin ( GL_TRIANGLES );
1292 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
1293 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1294 GLCOLOR ( colNr[e_enqire[name[i]].nod[3]] );
1295 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1296 glNormal3dv ( e_enqire[name[i]].side[0] );
1297 GLCOLOR ( colNr[e_enqire[name[i]].nod[5]] );
1298 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1299 GLCOLOR ( colNr[e_enqire[name[i]].nod[2]] );
1300 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1301 GLCOLOR ( colNr[e_enqire[name[i]].nod[5]] );
1302 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1303 glNormal3dv ( e_enqire[name[i]].side[1] );
1304 GLCOLOR ( colNr[e_enqire[name[i]].nod[4]] );
1305 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1306 GLCOLOR ( colNr[e_enqire[name[i]].nod[4]] );
1307 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1308 GLCOLOR ( colNr[e_enqire[name[i]].nod[5]] );
1309 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1310 glNormal3dv ( e_enqire[name[i]].side[2] );
1311 GLCOLOR ( colNr[e_enqire[name[i]].nod[3]] );
1312 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1313 GLCOLOR ( colNr[e_enqire[name[i]].nod[3]] );
1314 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1315 GLCOLOR ( colNr[e_enqire[name[i]].nod[1]] );
1316 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1317 glNormal3dv ( e_enqire[name[i]].side[3] );
1318 GLCOLOR ( colNr[e_enqire[name[i]].nod[4]] );
1319 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1320 glEnd();
1321 break;
1322
1323 case 9:
1324 glNormal3dv ( e_enqire[name[i]].side[0] );
1325 glBegin ( GL_TRIANGLE_STRIP );
1326 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
1327 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1328 GLCOLOR ( colNr[e_enqire[name[i]].nod[1]] );
1329 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1330 glNormal3dv ( e_enqire[name[i]].side[0] );
1331 GLCOLOR ( colNr[e_enqire[name[i]].nod[3]] );
1332 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1333 GLCOLOR ( colNr[e_enqire[name[i]].nod[2]] );
1334 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1335 glEnd();
1336 break;
1337
1338 case 10:
1339 glNormal3dv ( e_enqire[name[i]].side[0] );
1340 glBegin ( GL_TRIANGLE_FAN );
1341 GLCOLOR ( colNr[e_enqire[name[i]].nod[8]] );
1342 glVertex3dv ( &node[e_enqire[name[i]].nod[8]].nx );
1343 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
1344 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1345 glNormal3dv ( e_enqire[name[i]].side[0] );
1346 GLCOLOR ( colNr[e_enqire[name[i]].nod[4]] );
1347 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1348 glNormal3dv ( e_enqire[name[i]].side[1] );
1349 GLCOLOR ( colNr[e_enqire[name[i]].nod[1]] );
1350 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1351 glNormal3dv ( e_enqire[name[i]].side[2] );
1352 GLCOLOR ( colNr[e_enqire[name[i]].nod[5]] );
1353 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1354 glNormal3dv ( e_enqire[name[i]].side[3] );
1355 GLCOLOR ( colNr[e_enqire[name[i]].nod[2]] );
1356 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1357 glNormal3dv ( e_enqire[name[i]].side[4] );
1358 GLCOLOR ( colNr[e_enqire[name[i]].nod[6]] );
1359 glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
1360 glNormal3dv ( e_enqire[name[i]].side[5] );
1361 GLCOLOR ( colNr[e_enqire[name[i]].nod[3]] );
1362 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1363 glNormal3dv ( e_enqire[name[i]].side[6] );
1364 GLCOLOR ( colNr[e_enqire[name[i]].nod[7]] );
1365 glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
1366 glNormal3dv ( e_enqire[name[i]].side[7] );
1367 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
1368 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1369 glEnd();
1370 break;
1371
1372 case 11:
1373 glBegin ( GL_LINES );
1374 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
1375 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1376 GLCOLOR ( colNr[e_enqire[name[i]].nod[1]] );
1377 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1378 glEnd();
1379 break;
1380
1381 case 12:
1382 glBegin ( GL_LINE_STRIP );
1383 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
1384 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1385 GLCOLOR ( colNr[e_enqire[name[i]].nod[2]] );
1386 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1387 GLCOLOR ( colNr[e_enqire[name[i]].nod[1]] );
1388 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1389 glEnd();
1390 }
1391 }
1392 glDisable(GL_TEXTURE_1D);
1393 glDisable( GL_LIGHTING );
1394 }
1395 else if((type=='v')&&(!pickflag))
1396 {
1397 /* enable all colors */
1398 defineColTextur_load(alpha);
1399 glColor3d( 1,1,1);
1400 glEnable(GL_TEXTURE_1D);
1401
1402 for (i=0; i<num; i++ )
1403 {
1404 switch(e_enqire[name[i]].type)
1405 {
1406 case 1:
1407 glBegin ( GL_TRIANGLE_STRIP );
1408 GLCOLOR ( colNr[e_enqire[name[i]].nod[1]] );
1409 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1410 GLCOLOR ( colNr[e_enqire[name[i]].nod[2]] );
1411 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1412 GLCOLOR ( colNr[e_enqire[name[i]].nod[5]] );
1413 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1414 GLCOLOR ( colNr[e_enqire[name[i]].nod[6]] );
1415 glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
1416 GLCOLOR ( colNr[e_enqire[name[i]].nod[4]] );
1417 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1418 GLCOLOR ( colNr[e_enqire[name[i]].nod[7]] );
1419 glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
1420 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
1421 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1422 GLCOLOR ( colNr[e_enqire[name[i]].nod[3]] );
1423 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1424 glEnd();
1425 glBegin ( GL_TRIANGLE_STRIP );
1426 GLCOLOR ( colNr[e_enqire[name[i]].nod[5]] );
1427 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1428 GLCOLOR ( colNr[e_enqire[name[i]].nod[4]] );
1429 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1430 GLCOLOR ( colNr[e_enqire[name[i]].nod[1]] );
1431 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1432 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
1433 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1434 GLCOLOR ( colNr[e_enqire[name[i]].nod[2]] );
1435 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1436 GLCOLOR ( colNr[e_enqire[name[i]].nod[3]] );
1437 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1438 GLCOLOR ( colNr[e_enqire[name[i]].nod[6]] );
1439 glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
1440 GLCOLOR ( colNr[e_enqire[name[i]].nod[7]] );
1441 glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
1442 glEnd();
1443 break;
1444
1445 case 2:
1446 glBegin ( GL_TRIANGLE_STRIP );
1447 GLCOLOR ( colNr[e_enqire[name[i]].nod[3]] );
1448 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1449 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
1450 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1451 GLCOLOR ( colNr[e_enqire[name[i]].nod[4]] );
1452 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1453 GLCOLOR ( colNr[e_enqire[name[i]].nod[1]] );
1454 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1455 GLCOLOR ( colNr[e_enqire[name[i]].nod[5]] );
1456 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1457 GLCOLOR ( colNr[e_enqire[name[i]].nod[2]] );
1458 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1459 GLCOLOR ( colNr[e_enqire[name[i]].nod[3]] );
1460 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1461 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
1462 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1463 glEnd();
1464 glBegin ( GL_TRIANGLES );
1465 GLCOLOR ( colNr[e_enqire[name[i]].nod[3]] );
1466 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1467 GLCOLOR ( colNr[e_enqire[name[i]].nod[4]] );
1468 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1469 GLCOLOR ( colNr[e_enqire[name[i]].nod[5]] );
1470 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1471 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
1472 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1473 GLCOLOR ( colNr[e_enqire[name[i]].nod[2]] );
1474 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1475 GLCOLOR ( colNr[e_enqire[name[i]].nod[1]] );
1476 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1477 glEnd();
1478 break;
1479
1480 case 3:
1481 glBegin ( GL_TRIANGLE_FAN );
1482 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
1483 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1484 GLCOLOR ( colNr[e_enqire[name[i]].nod[1]] );
1485 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1486 GLCOLOR ( colNr[e_enqire[name[i]].nod[3]] );
1487 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1488 GLCOLOR ( colNr[e_enqire[name[i]].nod[2]] );
1489 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1490 GLCOLOR ( colNr[e_enqire[name[i]].nod[1]] );
1491 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1492 glEnd();
1493 glBegin ( GL_TRIANGLES );
1494 GLCOLOR ( colNr[e_enqire[name[i]].nod[1]] );
1495 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1496 GLCOLOR ( colNr[e_enqire[name[i]].nod[2]] );
1497 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1498 GLCOLOR ( colNr[e_enqire[name[i]].nod[3]] );
1499 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1500 glEnd();
1501 break;
1502
1503 case 4:
1504 glBegin ( GL_TRIANGLE_STRIP );
1505 GLCOLOR ( colNr[e_enqire[name[i]].nod[1]] );
1506 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1507 GLCOLOR ( colNr[e_enqire[name[i]].nod[9]] );
1508 glVertex3dv ( &node[e_enqire[name[i]].nod[9]].nx );
1509 GLCOLOR ( colNr[e_enqire[name[i]].nod[13]] );
1510 glVertex3dv ( &node[e_enqire[name[i]].nod[13]].nx );
1511 GLCOLOR ( colNr[e_enqire[name[i]].nod[21]] );
1512 glVertex3dv ( &node[e_enqire[name[i]].nod[21]].nx );
1513 GLCOLOR ( colNr[e_enqire[name[i]].nod[5]] );
1514 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1515 GLCOLOR ( colNr[e_enqire[name[i]].nod[17]] );
1516 glVertex3dv ( &node[e_enqire[name[i]].nod[17]].nx );
1517 GLCOLOR ( colNr[e_enqire[name[i]].nod[16]] );
1518 glVertex3dv ( &node[e_enqire[name[i]].nod[16]].nx );
1519 GLCOLOR ( colNr[e_enqire[name[i]].nod[25]] );
1520 glVertex3dv ( &node[e_enqire[name[i]].nod[25]].nx );
1521 GLCOLOR ( colNr[e_enqire[name[i]].nod[4]] );
1522 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1523 GLCOLOR ( colNr[e_enqire[name[i]].nod[19]] );
1524 glVertex3dv ( &node[e_enqire[name[i]].nod[19]].nx );
1525 GLCOLOR ( colNr[e_enqire[name[i]].nod[12]] );
1526 glVertex3dv ( &node[e_enqire[name[i]].nod[12]].nx );
1527 GLCOLOR ( colNr[e_enqire[name[i]].nod[23]] );
1528 glVertex3dv ( &node[e_enqire[name[i]].nod[23]].nx );
1529 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
1530 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1531 GLCOLOR ( colNr[e_enqire[name[i]].nod[11]] );
1532 glVertex3dv ( &node[e_enqire[name[i]].nod[11]].nx );
1533 glEnd();
1534 glBegin ( GL_TRIANGLE_STRIP );
1535 GLCOLOR ( colNr[e_enqire[name[i]].nod[9]] );
1536 glVertex3dv ( &node[e_enqire[name[i]].nod[9]].nx );
1537 GLCOLOR ( colNr[e_enqire[name[i]].nod[2]] );
1538 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1539 GLCOLOR ( colNr[e_enqire[name[i]].nod[21]] );
1540 glVertex3dv ( &node[e_enqire[name[i]].nod[21]].nx );
1541 GLCOLOR ( colNr[e_enqire[name[i]].nod[14]] );
1542 glVertex3dv ( &node[e_enqire[name[i]].nod[14]].nx );
1543 GLCOLOR ( colNr[e_enqire[name[i]].nod[17]] );
1544 glVertex3dv ( &node[e_enqire[name[i]].nod[17]].nx );
1545 GLCOLOR ( colNr[e_enqire[name[i]].nod[6]] );
1546 glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
1547 GLCOLOR ( colNr[e_enqire[name[i]].nod[25]] );
1548 glVertex3dv ( &node[e_enqire[name[i]].nod[25]].nx );
1549 GLCOLOR ( colNr[e_enqire[name[i]].nod[18]] );
1550 glVertex3dv ( &node[e_enqire[name[i]].nod[18]].nx );
1551 GLCOLOR ( colNr[e_enqire[name[i]].nod[19]] );
1552 glVertex3dv ( &node[e_enqire[name[i]].nod[19]].nx );
1553 GLCOLOR ( colNr[e_enqire[name[i]].nod[7]] );
1554 glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
1555 GLCOLOR ( colNr[e_enqire[name[i]].nod[23]] );
1556 glVertex3dv ( &node[e_enqire[name[i]].nod[23]].nx );
1557 GLCOLOR ( colNr[e_enqire[name[i]].nod[15]] );
1558 glVertex3dv ( &node[e_enqire[name[i]].nod[15]].nx );
1559 GLCOLOR ( colNr[e_enqire[name[i]].nod[11]] );
1560 glVertex3dv ( &node[e_enqire[name[i]].nod[11]].nx );
1561 GLCOLOR ( colNr[e_enqire[name[i]].nod[3]] );
1562 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1563 glEnd();
1564 glBegin ( GL_TRIANGLE_STRIP );
1565 GLCOLOR ( colNr[e_enqire[name[i]].nod[5]] );
1566 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1567 GLCOLOR ( colNr[e_enqire[name[i]].nod[16]] );
1568 glVertex3dv ( &node[e_enqire[name[i]].nod[16]].nx );
1569 GLCOLOR ( colNr[e_enqire[name[i]].nod[13]] );
1570 glVertex3dv ( &node[e_enqire[name[i]].nod[13]].nx );
1571 GLCOLOR ( colNr[e_enqire[name[i]].nod[20]] );
1572 glVertex3dv ( &node[e_enqire[name[i]].nod[20]].nx );
1573 GLCOLOR ( colNr[e_enqire[name[i]].nod[1]] );
1574 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1575 GLCOLOR ( colNr[e_enqire[name[i]].nod[8]] );
1576 glVertex3dv ( &node[e_enqire[name[i]].nod[8]].nx );
1577 GLCOLOR ( colNr[e_enqire[name[i]].nod[9]] );
1578 glVertex3dv ( &node[e_enqire[name[i]].nod[9]].nx );
1579 GLCOLOR ( colNr[e_enqire[name[i]].nod[24]] );
1580 glVertex3dv ( &node[e_enqire[name[i]].nod[24]].nx );
1581 GLCOLOR ( colNr[e_enqire[name[i]].nod[2]] );
1582 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1583 GLCOLOR ( colNr[e_enqire[name[i]].nod[10]] );
1584 glVertex3dv ( &node[e_enqire[name[i]].nod[10]].nx );
1585 GLCOLOR ( colNr[e_enqire[name[i]].nod[14]] );
1586 glVertex3dv ( &node[e_enqire[name[i]].nod[14]].nx );
1587 GLCOLOR ( colNr[e_enqire[name[i]].nod[22]] );
1588 glVertex3dv ( &node[e_enqire[name[i]].nod[22]].nx );
1589 GLCOLOR ( colNr[e_enqire[name[i]].nod[6]] );
1590 glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
1591 GLCOLOR ( colNr[e_enqire[name[i]].nod[18]] );
1592 glVertex3dv ( &node[e_enqire[name[i]].nod[18]].nx );
1593 glEnd();
1594 glBegin ( GL_TRIANGLE_STRIP );
1595 GLCOLOR ( colNr[e_enqire[name[i]].nod[16]] );
1596 glVertex3dv ( &node[e_enqire[name[i]].nod[16]].nx );
1597 GLCOLOR ( colNr[e_enqire[name[i]].nod[4]] );
1598 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1599 GLCOLOR ( colNr[e_enqire[name[i]].nod[20]] );
1600 glVertex3dv ( &node[e_enqire[name[i]].nod[20]].nx );
1601 GLCOLOR ( colNr[e_enqire[name[i]].nod[12]] );
1602 glVertex3dv ( &node[e_enqire[name[i]].nod[12]].nx );
1603 GLCOLOR ( colNr[e_enqire[name[i]].nod[8]] );
1604 glVertex3dv ( &node[e_enqire[name[i]].nod[8]].nx );
1605 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
1606 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1607 GLCOLOR ( colNr[e_enqire[name[i]].nod[24]] );
1608 glVertex3dv ( &node[e_enqire[name[i]].nod[24]].nx );
1609 GLCOLOR ( colNr[e_enqire[name[i]].nod[11]] );
1610 glVertex3dv ( &node[e_enqire[name[i]].nod[11]].nx );
1611 GLCOLOR ( colNr[e_enqire[name[i]].nod[10]] );
1612 glVertex3dv ( &node[e_enqire[name[i]].nod[10]].nx );
1613 GLCOLOR ( colNr[e_enqire[name[i]].nod[3]] );
1614 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1615 GLCOLOR ( colNr[e_enqire[name[i]].nod[22]] );
1616 glVertex3dv ( &node[e_enqire[name[i]].nod[22]].nx );
1617 GLCOLOR ( colNr[e_enqire[name[i]].nod[15]] );
1618 glVertex3dv ( &node[e_enqire[name[i]].nod[15]].nx );
1619 GLCOLOR ( colNr[e_enqire[name[i]].nod[18]] );
1620 glVertex3dv ( &node[e_enqire[name[i]].nod[18]].nx );
1621 GLCOLOR ( colNr[e_enqire[name[i]].nod[7]] );
1622 glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
1623 glEnd();
1624 break;
1625
1626 case 5:
1627 glBegin ( GL_TRIANGLE_STRIP );
1628 GLCOLOR ( colNr[e_enqire[name[i]].nod[1]] );
1629 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1630 GLCOLOR ( colNr[e_enqire[name[i]].nod[10]] );
1631 glVertex3dv ( &node[e_enqire[name[i]].nod[10]].nx );
1632 GLCOLOR ( colNr[e_enqire[name[i]].nod[ 6]] );
1633 glVertex3dv ( &node[e_enqire[name[i]].nod[ 6]].nx );
1634 GLCOLOR ( colNr[e_enqire[name[i]].nod[15]] );
1635 glVertex3dv ( &node[e_enqire[name[i]].nod[15]].nx );
1636 GLCOLOR ( colNr[e_enqire[name[i]].nod[ 0]] );
1637 glVertex3dv ( &node[e_enqire[name[i]].nod[ 0]].nx );
1638 GLCOLOR ( colNr[e_enqire[name[i]].nod[ 9]] );
1639 glVertex3dv ( &node[e_enqire[name[i]].nod[ 9]].nx );
1640 GLCOLOR ( colNr[e_enqire[name[i]].nod[ 0]] );
1641 glVertex3dv ( &node[e_enqire[name[i]].nod[ 0]].nx );
1642 GLCOLOR ( colNr[e_enqire[name[i]].nod[ 9]] );
1643 glVertex3dv ( &node[e_enqire[name[i]].nod[ 9]].nx );
1644 GLCOLOR ( colNr[e_enqire[name[i]].nod[8]] );
1645 glVertex3dv ( &node[e_enqire[name[i]].nod[8]].nx );
1646 GLCOLOR ( colNr[e_enqire[name[i]].nod[17]] );
1647 glVertex3dv ( &node[e_enqire[name[i]].nod[17]].nx );
1648 GLCOLOR ( colNr[e_enqire[name[i]].nod[ 2]] );
1649 glVertex3dv ( &node[e_enqire[name[i]].nod[ 2]].nx );
1650 GLCOLOR ( colNr[e_enqire[name[i]].nod[11]] );
1651 glVertex3dv ( &node[e_enqire[name[i]].nod[11]].nx );
1652 GLCOLOR ( colNr[e_enqire[name[i]].nod[7]] );
1653 glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
1654 GLCOLOR ( colNr[e_enqire[name[i]].nod[16]] );
1655 glVertex3dv ( &node[e_enqire[name[i]].nod[16]].nx );
1656 GLCOLOR ( colNr[e_enqire[name[i]].nod[1]] );
1657 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1658 GLCOLOR ( colNr[e_enqire[name[i]].nod[10]] );
1659 glVertex3dv ( &node[e_enqire[name[i]].nod[10]].nx );
1660 glEnd();
1661 glBegin ( GL_TRIANGLE_STRIP );
1662 GLCOLOR ( colNr[e_enqire[name[i]].nod[10]] );
1663 glVertex3dv ( &node[e_enqire[name[i]].nod[10]].nx );
1664 GLCOLOR ( colNr[e_enqire[name[i]].nod[ 4]] );
1665 glVertex3dv ( &node[e_enqire[name[i]].nod[ 4]].nx );
1666 GLCOLOR ( colNr[e_enqire[name[i]].nod[15]] );
1667 glVertex3dv ( &node[e_enqire[name[i]].nod[15]].nx );
1668 GLCOLOR ( colNr[e_enqire[name[i]].nod[12]] );
1669 glVertex3dv ( &node[e_enqire[name[i]].nod[12]].nx );
1670 GLCOLOR ( colNr[e_enqire[name[i]].nod[ 9]] );
1671 glVertex3dv ( &node[e_enqire[name[i]].nod[ 9]].nx );
1672 GLCOLOR ( colNr[e_enqire[name[i]].nod[ 3]] );
1673 glVertex3dv ( &node[e_enqire[name[i]].nod[ 3]].nx );
1674 GLCOLOR ( colNr[e_enqire[name[i]].nod[17]] );
1675 glVertex3dv ( &node[e_enqire[name[i]].nod[17]].nx );
1676 GLCOLOR ( colNr[e_enqire[name[i]].nod[14]] );
1677 glVertex3dv ( &node[e_enqire[name[i]].nod[14]].nx );
1678 GLCOLOR ( colNr[e_enqire[name[i]].nod[11]] );
1679 glVertex3dv ( &node[e_enqire[name[i]].nod[11]].nx );
1680 GLCOLOR ( colNr[e_enqire[name[i]].nod[ 5]] );
1681 glVertex3dv ( &node[e_enqire[name[i]].nod[ 5]].nx );
1682 GLCOLOR ( colNr[e_enqire[name[i]].nod[16]] );
1683 glVertex3dv ( &node[e_enqire[name[i]].nod[16]].nx );
1684 GLCOLOR ( colNr[e_enqire[name[i]].nod[13]] );
1685 glVertex3dv ( &node[e_enqire[name[i]].nod[13]].nx );
1686 GLCOLOR ( colNr[e_enqire[name[i]].nod[10]] );
1687 glVertex3dv ( &node[e_enqire[name[i]].nod[10]].nx );
1688 GLCOLOR ( colNr[e_enqire[name[i]].nod[ 4]] );
1689 glVertex3dv ( &node[e_enqire[name[i]].nod[ 4]].nx );
1690 glEnd();
1691 glBegin ( GL_TRIANGLE_STRIP );
1692 GLCOLOR ( colNr[e_enqire[name[i]].nod[ 2]] );
1693 glVertex3dv ( &node[e_enqire[name[i]].nod[ 2]].nx );
1694 GLCOLOR ( colNr[e_enqire[name[i]].nod[ 7]] );
1695 glVertex3dv ( &node[e_enqire[name[i]].nod[ 7]].nx );
1696 GLCOLOR ( colNr[e_enqire[name[i]].nod[8]] );
1697 glVertex3dv ( &node[e_enqire[name[i]].nod[8]].nx );
1698 GLCOLOR ( colNr[e_enqire[name[i]].nod[18]] );
1699 glVertex3dv ( &node[e_enqire[name[i]].nod[18]].nx );
1700 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
1701 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1702 glEnd();
1703 glBegin ( GL_TRIANGLE_STRIP );
1704 GLCOLOR ( colNr[e_enqire[name[i]].nod[ 7]] );
1705 glVertex3dv ( &node[e_enqire[name[i]].nod[ 7]].nx );
1706 GLCOLOR ( colNr[e_enqire[name[i]].nod[ 1]] );
1707 glVertex3dv ( &node[e_enqire[name[i]].nod[ 1]].nx );
1708 GLCOLOR ( colNr[e_enqire[name[i]].nod[18]] );
1709 glVertex3dv ( &node[e_enqire[name[i]].nod[18]].nx );
1710 GLCOLOR ( colNr[e_enqire[name[i]].nod[ 6]] );
1711 glVertex3dv ( &node[e_enqire[name[i]].nod[ 6]].nx );
1712 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
1713 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1714 glEnd();
1715 glBegin ( GL_TRIANGLE_STRIP );
1716 GLCOLOR ( colNr[e_enqire[name[i]].nod[ 4]] );
1717 glVertex3dv ( &node[e_enqire[name[i]].nod[ 4]].nx );
1718 GLCOLOR ( colNr[e_enqire[name[i]].nod[13]] );
1719 glVertex3dv ( &node[e_enqire[name[i]].nod[13]].nx );
1720 GLCOLOR ( colNr[e_enqire[name[i]].nod[12]] );
1721 glVertex3dv ( &node[e_enqire[name[i]].nod[12]].nx );
1722 GLCOLOR ( colNr[e_enqire[name[i]].nod[19]] );
1723 glVertex3dv ( &node[e_enqire[name[i]].nod[19]].nx );
1724 GLCOLOR ( colNr[e_enqire[name[i]].nod[3]] );
1725 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1726 glEnd();
1727 glBegin ( GL_TRIANGLE_STRIP );
1728 GLCOLOR ( colNr[e_enqire[name[i]].nod[13]] );
1729 glVertex3dv ( &node[e_enqire[name[i]].nod[13]].nx );
1730 GLCOLOR ( colNr[e_enqire[name[i]].nod[ 5]] );
1731 glVertex3dv ( &node[e_enqire[name[i]].nod[ 5]].nx );
1732 GLCOLOR ( colNr[e_enqire[name[i]].nod[19]] );
1733 glVertex3dv ( &node[e_enqire[name[i]].nod[19]].nx );
1734 GLCOLOR ( colNr[e_enqire[name[i]].nod[14]] );
1735 glVertex3dv ( &node[e_enqire[name[i]].nod[14]].nx );
1736 GLCOLOR ( colNr[e_enqire[name[i]].nod[3]] );
1737 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1738 glEnd();
1739 break;
1740
1741 case 6:
1742 glBegin ( GL_TRIANGLE_STRIP );
1743 GLCOLOR ( colNr[e_enqire[name[i]].nod[1]] );
1744 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1745 GLCOLOR ( colNr[e_enqire[name[i]].nod[8]] );
1746 glVertex3dv ( &node[e_enqire[name[i]].nod[8]].nx );
1747 GLCOLOR ( colNr[e_enqire[name[i]].nod[4]] );
1748 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1749 GLCOLOR ( colNr[e_enqire[name[i]].nod[7]] );
1750 glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
1751 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
1752 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1753 glEnd();
1754 glBegin ( GL_TRIANGLE_STRIP );
1755 GLCOLOR ( colNr[e_enqire[name[i]].nod[2]] );
1756 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1757 GLCOLOR ( colNr[e_enqire[name[i]].nod[9]] );
1758 glVertex3dv ( &node[e_enqire[name[i]].nod[9]].nx );
1759 GLCOLOR ( colNr[e_enqire[name[i]].nod[5]] );
1760 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1761 GLCOLOR ( colNr[e_enqire[name[i]].nod[8]] );
1762 glVertex3dv ( &node[e_enqire[name[i]].nod[8]].nx );
1763 GLCOLOR ( colNr[e_enqire[name[i]].nod[1]] );
1764 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1765 glEnd();
1766 glBegin ( GL_TRIANGLE_STRIP );
1767 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
1768 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1769 GLCOLOR ( colNr[e_enqire[name[i]].nod[7]] );
1770 glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
1771 GLCOLOR ( colNr[e_enqire[name[i]].nod[6]] );
1772 glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
1773 GLCOLOR ( colNr[e_enqire[name[i]].nod[9]] );
1774 glVertex3dv ( &node[e_enqire[name[i]].nod[9]].nx );
1775 GLCOLOR ( colNr[e_enqire[name[i]].nod[2]] );
1776 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1777 glEnd();
1778 glBegin ( GL_TRIANGLE_STRIP );
1779 GLCOLOR ( colNr[e_enqire[name[i]].nod[2]] );
1780 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1781 GLCOLOR ( colNr[e_enqire[name[i]].nod[5]] );
1782 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1783 GLCOLOR ( colNr[e_enqire[name[i]].nod[6]] );
1784 glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
1785 GLCOLOR ( colNr[e_enqire[name[i]].nod[4]] );
1786 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1787 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
1788 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1789 glEnd();
1790 glBegin ( GL_TRIANGLE_FAN );
1791 GLCOLOR ( colNr[e_enqire[name[i]].nod[3]] );
1792 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1793 GLCOLOR ( colNr[e_enqire[name[i]].nod[7]] );
1794 glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
1795 GLCOLOR ( colNr[e_enqire[name[i]].nod[8]] );
1796 glVertex3dv ( &node[e_enqire[name[i]].nod[8]].nx );
1797 GLCOLOR ( colNr[e_enqire[name[i]].nod[9]] );
1798 glVertex3dv ( &node[e_enqire[name[i]].nod[9]].nx );
1799 GLCOLOR ( colNr[e_enqire[name[i]].nod[7]] );
1800 glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
1801 glEnd();
1802 glBegin ( GL_TRIANGLES );
1803 GLCOLOR ( colNr[e_enqire[name[i]].nod[1]] );
1804 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1805 GLCOLOR ( colNr[e_enqire[name[i]].nod[4]] );
1806 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1807 GLCOLOR ( colNr[e_enqire[name[i]].nod[5]] );
1808 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1809 glEnd();
1810 break;
1811
1812 case 7:
1813 glBegin ( GL_TRIANGLES );
1814 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
1815 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1816 GLCOLOR ( colNr[e_enqire[name[i]].nod[1]] );
1817 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1818 GLCOLOR ( colNr[e_enqire[name[i]].nod[2]] );
1819 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1820 glEnd();
1821 break;
1822
1823 case 8:
1824 glBegin ( GL_TRIANGLES );
1825 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
1826 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1827 GLCOLOR ( colNr[e_enqire[name[i]].nod[3]] );
1828 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1829 GLCOLOR ( colNr[e_enqire[name[i]].nod[5]] );
1830 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1831
1832 GLCOLOR ( colNr[e_enqire[name[i]].nod[2]] );
1833 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1834 GLCOLOR ( colNr[e_enqire[name[i]].nod[5]] );
1835 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1836 GLCOLOR ( colNr[e_enqire[name[i]].nod[4]] );
1837 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1838
1839 GLCOLOR ( colNr[e_enqire[name[i]].nod[4]] );
1840 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1841 GLCOLOR ( colNr[e_enqire[name[i]].nod[5]] );
1842 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1843 GLCOLOR ( colNr[e_enqire[name[i]].nod[3]] );
1844 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1845
1846 GLCOLOR ( colNr[e_enqire[name[i]].nod[3]] );
1847 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1848 GLCOLOR ( colNr[e_enqire[name[i]].nod[1]] );
1849 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1850 GLCOLOR ( colNr[e_enqire[name[i]].nod[4]] );
1851 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1852 glEnd();
1853 break;
1854
1855 case 9:
1856 glBegin ( GL_TRIANGLE_STRIP );
1857 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
1858 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1859 GLCOLOR ( colNr[e_enqire[name[i]].nod[1]] );
1860 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1861 GLCOLOR ( colNr[e_enqire[name[i]].nod[3]] );
1862 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1863 GLCOLOR ( colNr[e_enqire[name[i]].nod[2]] );
1864 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1865 glEnd();
1866 break;
1867
1868 case 10:
1869 glBegin ( GL_TRIANGLE_FAN );
1870 GLCOLOR ( colNr[e_enqire[name[i]].nod[8]] );
1871 glVertex3dv ( &node[e_enqire[name[i]].nod[8]].nx );
1872 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
1873 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1874 GLCOLOR ( colNr[e_enqire[name[i]].nod[4]] );
1875 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1876 GLCOLOR ( colNr[e_enqire[name[i]].nod[1]] );
1877 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1878 GLCOLOR ( colNr[e_enqire[name[i]].nod[5]] );
1879 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1880 GLCOLOR ( colNr[e_enqire[name[i]].nod[2]] );
1881 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1882 GLCOLOR ( colNr[e_enqire[name[i]].nod[6]] );
1883 glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
1884 GLCOLOR ( colNr[e_enqire[name[i]].nod[3]] );
1885 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1886 GLCOLOR ( colNr[e_enqire[name[i]].nod[7]] );
1887 glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
1888 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
1889 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1890 glEnd();
1891 break;
1892
1893 case 11:
1894 glBegin ( GL_LINES );
1895 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
1896 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1897 GLCOLOR ( colNr[e_enqire[name[i]].nod[1]] );
1898 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1899 glEnd();
1900 break;
1901
1902 case 12:
1903 glBegin ( GL_LINE_STRIP );
1904 GLCOLOR ( colNr[e_enqire[name[i]].nod[0]] );
1905 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1906 GLCOLOR ( colNr[e_enqire[name[i]].nod[2]] );
1907 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1908 GLCOLOR ( colNr[e_enqire[name[i]].nod[1]] );
1909 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1910 glEnd();
1911 }
1912 }
1913 glDisable(GL_TEXTURE_1D);
1914 }
1915 else if(pickflag)
1916 {
1917 /* any other color */
1918 glColor3f ( entitycol[col].r, entitycol[col].g, entitycol[col].b );
1919
1920 glLoadName('e');
1921
1922 for (i=0; i<num; i++ )
1923 {
1924 glPushName(name[i]);
1925 switch(e_enqire[name[i]].type)
1926 {
1927 case 1:
1928 case 4:
1929 glBegin ( GL_TRIANGLES );
1930 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1931 glEdgeFlag ( GL_FALSE );
1932 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1933 glEdgeFlag ( GL_TRUE );
1934 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1935
1936 glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
1937 glEdgeFlag ( GL_FALSE );
1938 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1939 glEdgeFlag ( GL_TRUE );
1940 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1941
1942 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1943 glEdgeFlag ( GL_FALSE );
1944 glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
1945 glEdgeFlag ( GL_TRUE );
1946 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1947
1948 glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
1949 glEdgeFlag ( GL_FALSE );
1950 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1951 glEdgeFlag ( GL_TRUE );
1952 glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
1953
1954 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1955 glEdgeFlag ( GL_FALSE );
1956 glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
1957 glEdgeFlag ( GL_TRUE );
1958 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1959
1960 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1961 glEdgeFlag ( GL_FALSE );
1962 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1963 glEdgeFlag ( GL_TRUE );
1964 glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
1965
1966 /* new strip */
1967 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
1968 glEdgeFlag ( GL_FALSE );
1969 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1970 glEdgeFlag ( GL_TRUE );
1971 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1972
1973 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1974 glEdgeFlag ( GL_FALSE );
1975 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1976 glEdgeFlag ( GL_TRUE );
1977 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
1978
1979 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
1980 glEdgeFlag ( GL_FALSE );
1981 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1982 glEdgeFlag ( GL_TRUE );
1983 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1984
1985 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1986 glEdgeFlag ( GL_FALSE );
1987 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1988 glEdgeFlag ( GL_TRUE );
1989 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
1990
1991 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
1992 glEdgeFlag ( GL_FALSE );
1993 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
1994 glEdgeFlag ( GL_TRUE );
1995 glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
1996
1997 glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
1998 glEdgeFlag ( GL_FALSE );
1999 glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
2000 glEdgeFlag ( GL_TRUE );
2001 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
2002 glEnd();
2003 break;
2004
2005 case 2:
2006 case 5:
2007 glBegin ( GL_TRIANGLES );
2008 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
2009 glEdgeFlag ( GL_FALSE );
2010 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
2011 glEdgeFlag ( GL_TRUE );
2012 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
2013
2014 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
2015 glEdgeFlag ( GL_FALSE );
2016 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
2017 glEdgeFlag ( GL_TRUE );
2018 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
2019
2020 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
2021 glEdgeFlag ( GL_FALSE );
2022 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
2023 glEdgeFlag ( GL_TRUE );
2024 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
2025
2026 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
2027 glEdgeFlag ( GL_FALSE );
2028 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
2029 glEdgeFlag ( GL_TRUE );
2030 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
2031
2032 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
2033 glEdgeFlag ( GL_FALSE );
2034 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
2035 glEdgeFlag ( GL_TRUE );
2036 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
2037
2038 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
2039 glEdgeFlag ( GL_FALSE );
2040 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
2041 glEdgeFlag ( GL_TRUE );
2042 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
2043
2044 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
2045 glEdgeFlag ( GL_FALSE );
2046 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
2047 glEdgeFlag ( GL_TRUE );
2048 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
2049
2050 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
2051 glEdgeFlag ( GL_FALSE );
2052 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
2053 glEdgeFlag ( GL_TRUE );
2054 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
2055 glEnd();
2056 break;
2057
2058 case 3:
2059 case 6:
2060 glBegin ( GL_TRIANGLES );
2061 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
2062 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
2063 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
2064 glEnd();
2065 glBegin ( GL_TRIANGLE_FAN );
2066 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
2067 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
2068 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
2069 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
2070 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
2071 glEnd();
2072 break;
2073
2074 case 7:
2075 case 8:
2076 glBegin ( GL_TRIANGLES );
2077 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
2078 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
2079 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
2080 glEnd();
2081 break;
2082
2083 case 9:
2084 glBegin ( GL_TRIANGLES );
2085 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
2086 glEdgeFlag ( GL_FALSE );
2087 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
2088 glEdgeFlag ( GL_TRUE );
2089 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
2090
2091 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
2092 glEdgeFlag ( GL_FALSE );
2093 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
2094 glEdgeFlag ( GL_TRUE );
2095 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
2096 glEnd();
2097 break;
2098
2099 case 10:
2100 glBegin ( GL_TRIANGLES );
2101 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
2102 glEdgeFlag ( GL_FALSE );
2103 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
2104 glEdgeFlag ( GL_TRUE );
2105 glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
2106
2107 glEdgeFlag ( GL_FALSE );
2108 glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
2109 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
2110 glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
2111
2112 glEdgeFlag ( GL_TRUE );
2113 glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
2114 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
2115 glEdgeFlag ( GL_FALSE );
2116 glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
2117
2118
2119 glEdgeFlag ( GL_TRUE );
2120 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
2121 glEdgeFlag ( GL_FALSE );
2122 glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
2123 glEdgeFlag ( GL_TRUE );
2124 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
2125
2126 glEdgeFlag ( GL_FALSE );
2127 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
2128 glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
2129 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
2130
2131 glEdgeFlag ( GL_TRUE );
2132 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
2133 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
2134 glEdgeFlag ( GL_FALSE );
2135 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
2136 glEdgeFlag ( GL_TRUE );
2137 glEnd();
2138 break;
2139
2140 case 11:
2141 glBegin ( GL_LINES );
2142 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
2143 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
2144 glEnd();
2145 break;
2146
2147 case 12:
2148 glBegin ( GL_LINE_STRIP );
2149 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
2150 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
2151 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
2152 glEnd();
2153 break;
2154 }
2155
2156 if(type=='a')
2157 {
2158 switch(e_enqire[name[i]].type)
2159 {
2160 case 1:
2161 case 4:
2162 j=8;
2163 break;
2164 case 2:
2165 case 5:
2166 j=6;
2167 break;
2168 case 3:
2169 case 6:
2170 case 9:
2171 case 10:
2172 j=4;
2173 break;
2174 case 7:
2175 case 8:
2176 case 12:
2177 j=3;
2178 break;
2179 case 11:
2180 j=2;
2181 break;
2182 default:
2183 // assure that j!=0 (see division below)
2184 printf("ERROR: type:%d of elem:%d not known\n",e_enqire[name[i]].type,name[i]);
2185 j=1;
2186 break;
2187 }
2188 x=y=z=0.;
2189 for (n=0; n<j; n++)
2190 {
2191 x+= node[e_enqire[name[i]].nod[n]].nx;
2192 y+= node[e_enqire[name[i]].nod[n]].ny;
2193 z+= node[e_enqire[name[i]].nod[n]].nz;
2194 }
2195 x/= j; y/= j; z/= j;
2196 sprintf( buffer, "%d ", name[i]);
2197 text( x, y, z, buffer, glut_font[draw_font] );
2198 }
2199 glPopName();
2200 }
2201 glLoadName(-1);
2202 }
2203 else
2204 {
2205 setMaterial_rgb(col, alpha);
2206 glEnable( GL_LIGHTING );
2207
2208 for (i=0; i<num; i++ )
2209 {
2210 switch(e_enqire[name[i]].type)
2211 {
2212 case 1:
2213 glBegin ( GL_TRIANGLE_STRIP );
2214 glNormal3dv ( e_enqire[name[i]].side[0] );
2215 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
2216 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
2217 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
2218 glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
2219 glEnd();
2220 glBegin ( GL_TRIANGLE_STRIP );
2221 glNormal3dv ( e_enqire[name[i]].side[1] );
2222 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
2223 glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
2224 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
2225 glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
2226 glEnd();
2227 glBegin ( GL_TRIANGLE_STRIP );
2228 glNormal3dv ( e_enqire[name[i]].side[2] );
2229 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
2230 glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
2231 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
2232 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
2233 glEnd();
2234 /* math.pos von z->y */
2235 glBegin ( GL_TRIANGLE_STRIP );
2236 glNormal3dv ( e_enqire[name[i]].side[3] );
2237 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
2238 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
2239 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
2240 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
2241 glEnd();
2242 glBegin ( GL_TRIANGLE_STRIP );
2243 glNormal3dv ( e_enqire[name[i]].side[4] );
2244 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
2245 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
2246 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
2247 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
2248 glEnd();
2249 glBegin ( GL_TRIANGLE_STRIP );
2250 glNormal3dv ( e_enqire[name[i]].side[5] );
2251 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
2252 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
2253 glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
2254 glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
2255 glEnd();
2256 break;
2257
2258 case 2:
2259 glBegin ( GL_TRIANGLES );
2260 glNormal3dv ( e_enqire[name[i]].side[0] );
2261 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
2262 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
2263 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
2264 glEnd();
2265 glBegin ( GL_TRIANGLES );
2266 glNormal3dv ( e_enqire[name[i]].side[1] );
2267 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
2268 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
2269 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
2270 glEnd();
2271 glBegin ( GL_TRIANGLE_STRIP );
2272 glNormal3dv ( e_enqire[name[i]].side[2] );
2273 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
2274 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
2275 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
2276 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
2277 glEnd();
2278 glBegin ( GL_TRIANGLE_STRIP );
2279 glNormal3dv ( e_enqire[name[i]].side[3] );
2280 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
2281 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
2282 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
2283 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
2284 glEnd();
2285 glBegin ( GL_TRIANGLE_STRIP );
2286 glNormal3dv ( e_enqire[name[i]].side[4] );
2287 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
2288 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
2289 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
2290 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
2291 glEnd();
2292 break;
2293
2294 case 3:
2295 glBegin ( GL_TRIANGLE_FAN );
2296 glNormal3dv ( e_enqire[name[i]].side[0] );
2297 glVertex3dv ( &node[e_enqire[name[i]].nod[ 3]].nx );
2298 glVertex3dv ( &node[e_enqire[name[i]].nod[ 0]].nx );
2299 glVertex3dv ( &node[e_enqire[name[i]].nod[ 1]].nx );
2300 glNormal3dv ( e_enqire[name[i]].side[1] );
2301 glVertex3dv ( &node[e_enqire[name[i]].nod[ 2]].nx );
2302 glNormal3dv ( e_enqire[name[i]].side[2] );
2303 glVertex3dv ( &node[e_enqire[name[i]].nod[ 0]].nx );
2304 glEnd();
2305 glBegin ( GL_TRIANGLES );
2306 glNormal3dv ( e_enqire[name[i]].side[3] );
2307 glVertex3dv ( &node[e_enqire[name[i]].nod[ 0]].nx );
2308 glVertex3dv ( &node[e_enqire[name[i]].nod[ 2]].nx );
2309 glVertex3dv ( &node[e_enqire[name[i]].nod[ 1]].nx );
2310 glEnd();
2311 break;
2312
2313 case 4:
2314 glBegin ( GL_TRIANGLE_FAN );
2315 glNormal3dv ( e_enqire[name[i]].side[0] );
2316 glVertex3dv ( &node[e_enqire[name[i]].nod[21]].nx );
2317 glVertex3dv ( &node[e_enqire[name[i]].nod[ 1]].nx );
2318 glVertex3dv ( &node[e_enqire[name[i]].nod[ 9]].nx );
2319 glNormal3dv ( e_enqire[name[i]].side[1] );
2320 glVertex3dv ( &node[e_enqire[name[i]].nod[ 2]].nx );
2321 glNormal3dv ( e_enqire[name[i]].side[2] );
2322 glVertex3dv ( &node[e_enqire[name[i]].nod[14]].nx );
2323 glNormal3dv ( e_enqire[name[i]].side[3] );
2324 glVertex3dv ( &node[e_enqire[name[i]].nod[ 6]].nx );
2325 glNormal3dv ( e_enqire[name[i]].side[4] );
2326 glVertex3dv ( &node[e_enqire[name[i]].nod[17]].nx );
2327 glNormal3dv ( e_enqire[name[i]].side[5] );
2328 glVertex3dv ( &node[e_enqire[name[i]].nod[ 5]].nx );
2329 glNormal3dv ( e_enqire[name[i]].side[6] );
2330 glVertex3dv ( &node[e_enqire[name[i]].nod[13]].nx );
2331 glNormal3dv ( e_enqire[name[i]].side[7] );
2332 glVertex3dv ( &node[e_enqire[name[i]].nod[ 1]].nx );
2333 glEnd();
2334 glBegin ( GL_TRIANGLE_FAN );
2335 glNormal3dv ( e_enqire[name[i]].side[8] );
2336 glVertex3dv ( &node[e_enqire[name[i]].nod[22]].nx );
2337 glVertex3dv ( &node[e_enqire[name[i]].nod[ 2]].nx );
2338 glVertex3dv ( &node[e_enqire[name[i]].nod[10]].nx );
2339 glNormal3dv ( e_enqire[name[i]].side[9] );
2340 glVertex3dv ( &node[e_enqire[name[i]].nod[ 3]].nx );
2341 glNormal3dv ( e_enqire[name[i]].side[10] );
2342 glVertex3dv ( &node[e_enqire[name[i]].nod[15]].nx );
2343 glNormal3dv ( e_enqire[name[i]].side[11] );
2344 glVertex3dv ( &node[e_enqire[name[i]].nod[ 7]].nx );
2345 glNormal3dv ( e_enqire[name[i]].side[12] );
2346 glVertex3dv ( &node[e_enqire[name[i]].nod[18]].nx );
2347 glNormal3dv ( e_enqire[name[i]].side[13] );
2348 glVertex3dv ( &node[e_enqire[name[i]].nod[ 6]].nx );
2349 glNormal3dv ( e_enqire[name[i]].side[14] );
2350 glVertex3dv ( &node[e_enqire[name[i]].nod[14]].nx );
2351 glNormal3dv ( e_enqire[name[i]].side[15] );
2352 glVertex3dv ( &node[e_enqire[name[i]].nod[ 2]].nx );
2353 glEnd();
2354 glBegin ( GL_TRIANGLE_FAN );
2355 glNormal3dv ( e_enqire[name[i]].side[16] );
2356 glVertex3dv ( &node[e_enqire[name[i]].nod[23]].nx );
2357 glVertex3dv ( &node[e_enqire[name[i]].nod[ 0]].nx );
2358 glVertex3dv ( &node[e_enqire[name[i]].nod[12]].nx );
2359 glNormal3dv ( e_enqire[name[i]].side[17] );
2360 glVertex3dv ( &node[e_enqire[name[i]].nod[ 4]].nx );
2361 glNormal3dv ( e_enqire[name[i]].side[18] );
2362 glVertex3dv ( &node[e_enqire[name[i]].nod[19]].nx );
2363 glNormal3dv ( e_enqire[name[i]].side[19] );
2364 glVertex3dv ( &node[e_enqire[name[i]].nod[ 7]].nx );
2365 glNormal3dv ( e_enqire[name[i]].side[20] );
2366 glVertex3dv ( &node[e_enqire[name[i]].nod[15]].nx );
2367 glNormal3dv ( e_enqire[name[i]].side[21] );
2368 glVertex3dv ( &node[e_enqire[name[i]].nod[ 3]].nx );
2369 glNormal3dv ( e_enqire[name[i]].side[22] );
2370 glVertex3dv ( &node[e_enqire[name[i]].nod[11]].nx );
2371 glNormal3dv ( e_enqire[name[i]].side[23] );
2372 glVertex3dv ( &node[e_enqire[name[i]].nod[ 0]].nx );
2373 glEnd();
2374 glBegin ( GL_TRIANGLE_FAN );
2375 glNormal3dv ( e_enqire[name[i]].side[24] );
2376 glVertex3dv ( &node[e_enqire[name[i]].nod[24]].nx );
2377 glVertex3dv ( &node[e_enqire[name[i]].nod[ 1]].nx );
2378 glVertex3dv ( &node[e_enqire[name[i]].nod[ 8]].nx );
2379 glNormal3dv ( e_enqire[name[i]].side[25] );
2380 glVertex3dv ( &node[e_enqire[name[i]].nod[ 0]].nx );
2381 glNormal3dv ( e_enqire[name[i]].side[26] );
2382 glVertex3dv ( &node[e_enqire[name[i]].nod[11]].nx );
2383 glNormal3dv ( e_enqire[name[i]].side[27] );
2384 glVertex3dv ( &node[e_enqire[name[i]].nod[ 3]].nx );
2385 glNormal3dv ( e_enqire[name[i]].side[28] );
2386 glVertex3dv ( &node[e_enqire[name[i]].nod[10]].nx );
2387 glNormal3dv ( e_enqire[name[i]].side[29] );
2388 glVertex3dv ( &node[e_enqire[name[i]].nod[ 2]].nx );
2389 glNormal3dv ( e_enqire[name[i]].side[30] );
2390 glVertex3dv ( &node[e_enqire[name[i]].nod[ 9]].nx );
2391 glNormal3dv ( e_enqire[name[i]].side[31] );
2392 glVertex3dv ( &node[e_enqire[name[i]].nod[ 1]].nx );
2393 glEnd();
2394 glBegin ( GL_TRIANGLE_FAN );
2395 glNormal3dv ( e_enqire[name[i]].side[32] );
2396 glVertex3dv ( &node[e_enqire[name[i]].nod[25]].nx );
2397 glVertex3dv ( &node[e_enqire[name[i]].nod[ 4]].nx );
2398 glVertex3dv ( &node[e_enqire[name[i]].nod[16]].nx );
2399 glNormal3dv ( e_enqire[name[i]].side[33] );
2400 glVertex3dv ( &node[e_enqire[name[i]].nod[ 5]].nx );
2401 glNormal3dv ( e_enqire[name[i]].side[34] );
2402 glVertex3dv ( &node[e_enqire[name[i]].nod[17]].nx );
2403 glNormal3dv ( e_enqire[name[i]].side[35] );
2404 glVertex3dv ( &node[e_enqire[name[i]].nod[ 6]].nx );
2405 glNormal3dv ( e_enqire[name[i]].side[36] );
2406 glVertex3dv ( &node[e_enqire[name[i]].nod[18]].nx );
2407 glNormal3dv ( e_enqire[name[i]].side[37] );
2408 glVertex3dv ( &node[e_enqire[name[i]].nod[ 7]].nx );
2409 glNormal3dv ( e_enqire[name[i]].side[38] );
2410 glVertex3dv ( &node[e_enqire[name[i]].nod[19]].nx );
2411 glNormal3dv ( e_enqire[name[i]].side[39] );
2412 glVertex3dv ( &node[e_enqire[name[i]].nod[ 4]].nx );
2413 glEnd();
2414 glBegin ( GL_TRIANGLE_FAN );
2415 glNormal3dv ( e_enqire[name[i]].side[40] );
2416 glVertex3dv ( &node[e_enqire[name[i]].nod[20]].nx );
2417 glVertex3dv ( &node[e_enqire[name[i]].nod[ 0]].nx );
2418 glVertex3dv ( &node[e_enqire[name[i]].nod[ 8]].nx );
2419 glNormal3dv ( e_enqire[name[i]].side[41] );
2420 glVertex3dv ( &node[e_enqire[name[i]].nod[ 1]].nx );
2421 glNormal3dv ( e_enqire[name[i]].side[42] );
2422 glVertex3dv ( &node[e_enqire[name[i]].nod[13]].nx );
2423 glNormal3dv ( e_enqire[name[i]].side[43] );
2424 glVertex3dv ( &node[e_enqire[name[i]].nod[ 5]].nx );
2425 glNormal3dv ( e_enqire[name[i]].side[44] );
2426 glVertex3dv ( &node[e_enqire[name[i]].nod[16]].nx );
2427 glNormal3dv ( e_enqire[name[i]].side[45] );
2428 glVertex3dv ( &node[e_enqire[name[i]].nod[ 4]].nx );
2429 glNormal3dv ( e_enqire[name[i]].side[46] );
2430 glVertex3dv ( &node[e_enqire[name[i]].nod[12]].nx );
2431 glNormal3dv ( e_enqire[name[i]].side[47] );
2432 glVertex3dv ( &node[e_enqire[name[i]].nod[ 0]].nx );
2433 glEnd();
2434 break;
2435
2436 case 5:
2437 glBegin ( GL_TRIANGLES );
2438 glNormal3dv ( e_enqire[name[i]].side[0] );
2439 glVertex3dv ( &node[e_enqire[name[i]].nod[ 1]].nx );
2440 glVertex3dv ( &node[e_enqire[name[i]].nod[10]].nx );
2441 glVertex3dv ( &node[e_enqire[name[i]].nod[ 6]].nx );
2442 glNormal3dv ( e_enqire[name[i]].side[1] );
2443 glVertex3dv ( &node[e_enqire[name[i]].nod[ 6]].nx );
2444 glVertex3dv ( &node[e_enqire[name[i]].nod[10]].nx );
2445 glVertex3dv ( &node[e_enqire[name[i]].nod[15]].nx );
2446 glNormal3dv ( e_enqire[name[i]].side[2] );
2447 glVertex3dv ( &node[e_enqire[name[i]].nod[ 6]].nx );
2448 glVertex3dv ( &node[e_enqire[name[i]].nod[15]].nx );
2449 glVertex3dv ( &node[e_enqire[name[i]].nod[ 0]].nx );
2450 glNormal3dv ( e_enqire[name[i]].side[3] );
2451 glVertex3dv ( &node[e_enqire[name[i]].nod[ 0]].nx );
2452 glVertex3dv ( &node[e_enqire[name[i]].nod[15]].nx );
2453 glVertex3dv ( &node[e_enqire[name[i]].nod[ 9]].nx );
2454 glNormal3dv ( e_enqire[name[i]].side[4] );
2455 glVertex3dv ( &node[e_enqire[name[i]].nod[10]].nx );
2456 glVertex3dv ( &node[e_enqire[name[i]].nod[ 4]].nx );
2457 glVertex3dv ( &node[e_enqire[name[i]].nod[15]].nx );
2458 glNormal3dv ( e_enqire[name[i]].side[5] );
2459 glVertex3dv ( &node[e_enqire[name[i]].nod[15]].nx );
2460 glVertex3dv ( &node[e_enqire[name[i]].nod[ 4]].nx );
2461 glVertex3dv ( &node[e_enqire[name[i]].nod[12]].nx );
2462 glNormal3dv ( e_enqire[name[i]].side[6] );
2463 glVertex3dv ( &node[e_enqire[name[i]].nod[15]].nx );
2464 glVertex3dv ( &node[e_enqire[name[i]].nod[12]].nx );
2465 glVertex3dv ( &node[e_enqire[name[i]].nod[ 9]].nx );
2466 glNormal3dv ( e_enqire[name[i]].side[7] );
2467 glVertex3dv ( &node[e_enqire[name[i]].nod[ 9]].nx );
2468 glVertex3dv ( &node[e_enqire[name[i]].nod[12]].nx );
2469 glVertex3dv ( &node[e_enqire[name[i]].nod[ 3]].nx );
2470 glNormal3dv ( e_enqire[name[i]].side[8] );
2471 glVertex3dv ( &node[e_enqire[name[i]].nod[ 2]].nx );
2472 glVertex3dv ( &node[e_enqire[name[i]].nod[11]].nx );
2473 glVertex3dv ( &node[e_enqire[name[i]].nod[ 7]].nx );
2474 glNormal3dv ( e_enqire[name[i]].side[9] );
2475 glVertex3dv ( &node[e_enqire[name[i]].nod[ 7]].nx );
2476 glVertex3dv ( &node[e_enqire[name[i]].nod[11]].nx );
2477 glVertex3dv ( &node[e_enqire[name[i]].nod[16]].nx );
2478 glNormal3dv ( e_enqire[name[i]].side[10] );
2479 glVertex3dv ( &node[e_enqire[name[i]].nod[ 7]].nx );
2480 glVertex3dv ( &node[e_enqire[name[i]].nod[16]].nx );
2481 glVertex3dv ( &node[e_enqire[name[i]].nod[ 1]].nx );
2482 glNormal3dv ( e_enqire[name[i]].side[11] );
2483 glVertex3dv ( &node[e_enqire[name[i]].nod[ 1]].nx );
2484 glVertex3dv ( &node[e_enqire[name[i]].nod[16]].nx );
2485 glVertex3dv ( &node[e_enqire[name[i]].nod[10]].nx );
2486 glNormal3dv ( e_enqire[name[i]].side[12] );
2487 glVertex3dv ( &node[e_enqire[name[i]].nod[11]].nx );
2488 glVertex3dv ( &node[e_enqire[name[i]].nod[ 5]].nx );
2489 glVertex3dv ( &node[e_enqire[name[i]].nod[16]].nx );
2490 glNormal3dv ( e_enqire[name[i]].side[13] );
2491 glVertex3dv ( &node[e_enqire[name[i]].nod[16]].nx );
2492 glVertex3dv ( &node[e_enqire[name[i]].nod[ 5]].nx );
2493 glVertex3dv ( &node[e_enqire[name[i]].nod[13]].nx );
2494 glNormal3dv ( e_enqire[name[i]].side[14] );
2495 glVertex3dv ( &node[e_enqire[name[i]].nod[16]].nx );
2496 glVertex3dv ( &node[e_enqire[name[i]].nod[13]].nx );
2497 glVertex3dv ( &node[e_enqire[name[i]].nod[10]].nx );
2498 glNormal3dv ( e_enqire[name[i]].side[15] );
2499 glVertex3dv ( &node[e_enqire[name[i]].nod[10]].nx );
2500 glVertex3dv ( &node[e_enqire[name[i]].nod[13]].nx );
2501 glVertex3dv ( &node[e_enqire[name[i]].nod[ 4]].nx );
2502 glNormal3dv ( e_enqire[name[i]].side[16] );
2503 glVertex3dv ( &node[e_enqire[name[i]].nod[ 0]].nx );
2504 glVertex3dv ( &node[e_enqire[name[i]].nod[ 9]].nx );
2505 glVertex3dv ( &node[e_enqire[name[i]].nod[ 8]].nx );
2506 glNormal3dv ( e_enqire[name[i]].side[17] );
2507 glVertex3dv ( &node[e_enqire[name[i]].nod[ 8]].nx );
2508 glVertex3dv ( &node[e_enqire[name[i]].nod[ 9]].nx );
2509 glVertex3dv ( &node[e_enqire[name[i]].nod[17]].nx );
2510 glNormal3dv ( e_enqire[name[i]].side[18] );
2511 glVertex3dv ( &node[e_enqire[name[i]].nod[ 8]].nx );
2512 glVertex3dv ( &node[e_enqire[name[i]].nod[17]].nx );
2513 glVertex3dv ( &node[e_enqire[name[i]].nod[ 2]].nx );
2514 glNormal3dv ( e_enqire[name[i]].side[19] );
2515 glVertex3dv ( &node[e_enqire[name[i]].nod[ 2]].nx );
2516 glVertex3dv ( &node[e_enqire[name[i]].nod[17]].nx );
2517 glVertex3dv ( &node[e_enqire[name[i]].nod[11]].nx );
2518 glNormal3dv ( e_enqire[name[i]].side[20] );
2519 glVertex3dv ( &node[e_enqire[name[i]].nod[ 9]].nx );
2520 glVertex3dv ( &node[e_enqire[name[i]].nod[ 3]].nx );
2521 glVertex3dv ( &node[e_enqire[name[i]].nod[17]].nx );
2522 glNormal3dv ( e_enqire[name[i]].side[21] );
2523 glVertex3dv ( &node[e_enqire[name[i]].nod[17]].nx );
2524 glVertex3dv ( &node[e_enqire[name[i]].nod[ 3]].nx );
2525 glVertex3dv ( &node[e_enqire[name[i]].nod[14]].nx );
2526 glNormal3dv ( e_enqire[name[i]].side[22] );
2527 glVertex3dv ( &node[e_enqire[name[i]].nod[17]].nx );
2528 glVertex3dv ( &node[e_enqire[name[i]].nod[14]].nx );
2529 glVertex3dv ( &node[e_enqire[name[i]].nod[11]].nx );
2530 glNormal3dv ( e_enqire[name[i]].side[23] );
2531 glVertex3dv ( &node[e_enqire[name[i]].nod[11]].nx );
2532 glVertex3dv ( &node[e_enqire[name[i]].nod[14]].nx );
2533 glVertex3dv ( &node[e_enqire[name[i]].nod[ 5]].nx );
2534 glNormal3dv ( e_enqire[name[i]].side[24] );
2535 glVertex3dv ( &node[e_enqire[name[i]].nod[ 2]].nx );
2536 glVertex3dv ( &node[e_enqire[name[i]].nod[ 7]].nx );
2537 glVertex3dv ( &node[e_enqire[name[i]].nod[ 8]].nx );
2538 glNormal3dv ( e_enqire[name[i]].side[25] );
2539 glVertex3dv ( &node[e_enqire[name[i]].nod[ 8]].nx );
2540 glVertex3dv ( &node[e_enqire[name[i]].nod[ 7]].nx );
2541 glVertex3dv ( &node[e_enqire[name[i]].nod[18]].nx );
2542 glNormal3dv ( e_enqire[name[i]].side[26] );
2543 glVertex3dv ( &node[e_enqire[name[i]].nod[ 8]].nx );
2544 glVertex3dv ( &node[e_enqire[name[i]].nod[18]].nx );
2545 glVertex3dv ( &node[e_enqire[name[i]].nod[ 0]].nx );
2546 glNormal3dv ( e_enqire[name[i]].side[27] );
2547 glVertex3dv ( &node[e_enqire[name[i]].nod[ 0]].nx );
2548 glVertex3dv ( &node[e_enqire[name[i]].nod[18]].nx );
2549 glVertex3dv ( &node[e_enqire[name[i]].nod[ 0]].nx );
2550 glNormal3dv ( e_enqire[name[i]].side[28] );
2551 glVertex3dv ( &node[e_enqire[name[i]].nod[ 7]].nx );
2552 glVertex3dv ( &node[e_enqire[name[i]].nod[ 1]].nx );
2553 glVertex3dv ( &node[e_enqire[name[i]].nod[18]].nx );
2554 glNormal3dv ( e_enqire[name[i]].side[29] );
2555 glVertex3dv ( &node[e_enqire[name[i]].nod[18]].nx );
2556 glVertex3dv ( &node[e_enqire[name[i]].nod[ 1]].nx );
2557 glVertex3dv ( &node[e_enqire[name[i]].nod[ 6]].nx );
2558 glNormal3dv ( e_enqire[name[i]].side[30] );
2559 glVertex3dv ( &node[e_enqire[name[i]].nod[18]].nx );
2560 glVertex3dv ( &node[e_enqire[name[i]].nod[ 6]].nx );
2561 glVertex3dv ( &node[e_enqire[name[i]].nod[ 0]].nx );
2562 glNormal3dv ( e_enqire[name[i]].side[31] );
2563 glVertex3dv ( &node[e_enqire[name[i]].nod[ 0]].nx );
2564 glVertex3dv ( &node[e_enqire[name[i]].nod[ 6]].nx );
2565 glVertex3dv ( &node[e_enqire[name[i]].nod[ 0]].nx );
2566 glNormal3dv ( e_enqire[name[i]].side[32] );
2567 glVertex3dv ( &node[e_enqire[name[i]].nod[ 4]].nx );
2568 glVertex3dv ( &node[e_enqire[name[i]].nod[13]].nx );
2569 glVertex3dv ( &node[e_enqire[name[i]].nod[12]].nx );
2570 glNormal3dv ( e_enqire[name[i]].side[33] );
2571 glVertex3dv ( &node[e_enqire[name[i]].nod[12]].nx );
2572 glVertex3dv ( &node[e_enqire[name[i]].nod[13]].nx );
2573 glVertex3dv ( &node[e_enqire[name[i]].nod[19]].nx );
2574 glNormal3dv ( e_enqire[name[i]].side[34] );
2575 glVertex3dv ( &node[e_enqire[name[i]].nod[12]].nx );
2576 glVertex3dv ( &node[e_enqire[name[i]].nod[19]].nx );
2577 glVertex3dv ( &node[e_enqire[name[i]].nod[ 3]].nx );
2578 glNormal3dv ( e_enqire[name[i]].side[35] );
2579 glVertex3dv ( &node[e_enqire[name[i]].nod[ 3]].nx );
2580 glVertex3dv ( &node[e_enqire[name[i]].nod[19]].nx );
2581 glVertex3dv ( &node[e_enqire[name[i]].nod[ 3]].nx );
2582 glNormal3dv ( e_enqire[name[i]].side[36] );
2583 glVertex3dv ( &node[e_enqire[name[i]].nod[13]].nx );
2584 glVertex3dv ( &node[e_enqire[name[i]].nod[ 5]].nx );
2585 glVertex3dv ( &node[e_enqire[name[i]].nod[19]].nx );
2586 glNormal3dv ( e_enqire[name[i]].side[37] );
2587 glVertex3dv ( &node[e_enqire[name[i]].nod[19]].nx );
2588 glVertex3dv ( &node[e_enqire[name[i]].nod[ 5]].nx );
2589 glVertex3dv ( &node[e_enqire[name[i]].nod[14]].nx );
2590 glNormal3dv ( e_enqire[name[i]].side[38] );
2591 glVertex3dv ( &node[e_enqire[name[i]].nod[19]].nx );
2592 glVertex3dv ( &node[e_enqire[name[i]].nod[14]].nx );
2593 glVertex3dv ( &node[e_enqire[name[i]].nod[ 3]].nx );
2594 glNormal3dv ( e_enqire[name[i]].side[39] );
2595 glVertex3dv ( &node[e_enqire[name[i]].nod[ 3]].nx );
2596 glVertex3dv ( &node[e_enqire[name[i]].nod[14]].nx );
2597 glVertex3dv ( &node[e_enqire[name[i]].nod[ 3]].nx );
2598 glEnd();
2599 break;
2600
2601 case 6:
2602 glBegin ( GL_TRIANGLES );
2603 glNormal3dv ( e_enqire[name[i]].side[0] );
2604 glVertex3dv ( &node[e_enqire[name[i]].nod[ 0]].nx );
2605 glVertex3dv ( &node[e_enqire[name[i]].nod[ 4]].nx );
2606 glVertex3dv ( &node[e_enqire[name[i]].nod[ 7]].nx );
2607 glNormal3dv ( e_enqire[name[i]].side[1] );
2608 glVertex3dv ( &node[e_enqire[name[i]].nod[ 7]].nx );
2609 glVertex3dv ( &node[e_enqire[name[i]].nod[ 4]].nx );
2610 glVertex3dv ( &node[e_enqire[name[i]].nod[ 8]].nx );
2611 glNormal3dv ( e_enqire[name[i]].side[2] );
2612 glVertex3dv ( &node[e_enqire[name[i]].nod[ 8]].nx );
2613 glVertex3dv ( &node[e_enqire[name[i]].nod[ 4]].nx );
2614 glVertex3dv ( &node[e_enqire[name[i]].nod[ 1]].nx );
2615 glNormal3dv ( e_enqire[name[i]].side[3] );
2616 glVertex3dv ( &node[e_enqire[name[i]].nod[ 7]].nx );
2617 glVertex3dv ( &node[e_enqire[name[i]].nod[ 8]].nx );
2618 glVertex3dv ( &node[e_enqire[name[i]].nod[ 3]].nx );
2619 glNormal3dv ( e_enqire[name[i]].side[4] );
2620 glVertex3dv ( &node[e_enqire[name[i]].nod[ 1]].nx );
2621 glVertex3dv ( &node[e_enqire[name[i]].nod[ 5]].nx );
2622 glVertex3dv ( &node[e_enqire[name[i]].nod[ 8]].nx );
2623 glNormal3dv ( e_enqire[name[i]].side[5] );
2624 glVertex3dv ( &node[e_enqire[name[i]].nod[ 8]].nx );
2625 glVertex3dv ( &node[e_enqire[name[i]].nod[ 5]].nx );
2626 glVertex3dv ( &node[e_enqire[name[i]].nod[ 9]].nx );
2627 glNormal3dv ( e_enqire[name[i]].side[6] );
2628 glVertex3dv ( &node[e_enqire[name[i]].nod[ 9]].nx );
2629 glVertex3dv ( &node[e_enqire[name[i]].nod[ 5]].nx );
2630 glVertex3dv ( &node[e_enqire[name[i]].nod[ 2]].nx );
2631 glNormal3dv ( e_enqire[name[i]].side[7] );
2632 glVertex3dv ( &node[e_enqire[name[i]].nod[ 8]].nx );
2633 glVertex3dv ( &node[e_enqire[name[i]].nod[ 9]].nx );
2634 glVertex3dv ( &node[e_enqire[name[i]].nod[ 3]].nx );
2635 glNormal3dv ( e_enqire[name[i]].side[8] );
2636 glVertex3dv ( &node[e_enqire[name[i]].nod[ 2]].nx );
2637 glVertex3dv ( &node[e_enqire[name[i]].nod[ 6]].nx );
2638 glVertex3dv ( &node[e_enqire[name[i]].nod[ 9]].nx );
2639 glNormal3dv ( e_enqire[name[i]].side[9] );
2640 glVertex3dv ( &node[e_enqire[name[i]].nod[ 9]].nx );
2641 glVertex3dv ( &node[e_enqire[name[i]].nod[ 6]].nx );
2642 glVertex3dv ( &node[e_enqire[name[i]].nod[ 7]].nx );
2643 glNormal3dv ( e_enqire[name[i]].side[10] );
2644 glVertex3dv ( &node[e_enqire[name[i]].nod[ 7]].nx );
2645 glVertex3dv ( &node[e_enqire[name[i]].nod[ 6]].nx );
2646 glVertex3dv ( &node[e_enqire[name[i]].nod[ 0]].nx );
2647 glNormal3dv ( e_enqire[name[i]].side[11] );
2648 glVertex3dv ( &node[e_enqire[name[i]].nod[ 9]].nx );
2649 glVertex3dv ( &node[e_enqire[name[i]].nod[ 7]].nx );
2650 glVertex3dv ( &node[e_enqire[name[i]].nod[ 3]].nx );
2651 glNormal3dv ( e_enqire[name[i]].side[12] );
2652 glVertex3dv ( &node[e_enqire[name[i]].nod[ 0]].nx );
2653 glVertex3dv ( &node[e_enqire[name[i]].nod[ 6]].nx );
2654 glVertex3dv ( &node[e_enqire[name[i]].nod[ 4]].nx );
2655 glNormal3dv ( e_enqire[name[i]].side[13] );
2656 glVertex3dv ( &node[e_enqire[name[i]].nod[ 4]].nx );
2657 glVertex3dv ( &node[e_enqire[name[i]].nod[ 6]].nx );
2658 glVertex3dv ( &node[e_enqire[name[i]].nod[ 5]].nx );
2659 glNormal3dv ( e_enqire[name[i]].side[14] );
2660 glVertex3dv ( &node[e_enqire[name[i]].nod[ 5]].nx );
2661 glVertex3dv ( &node[e_enqire[name[i]].nod[ 6]].nx );
2662 glVertex3dv ( &node[e_enqire[name[i]].nod[ 2]].nx );
2663 glNormal3dv ( e_enqire[name[i]].side[15] );
2664 glVertex3dv ( &node[e_enqire[name[i]].nod[ 4]].nx );
2665 glVertex3dv ( &node[e_enqire[name[i]].nod[ 5]].nx );
2666 glVertex3dv ( &node[e_enqire[name[i]].nod[ 1]].nx );
2667 glEnd();
2668 break;
2669
2670 case 7:
2671 glBegin ( GL_TRIANGLES );
2672 glNormal3dv ( e_enqire[name[i]].side[0] );
2673 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
2674 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
2675 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
2676 glEnd();
2677 break;
2678
2679 case 8:
2680 glBegin ( GL_TRIANGLES );
2681 glNormal3dv ( e_enqire[name[i]].side[0] );
2682 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
2683 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
2684 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
2685 glNormal3dv ( e_enqire[name[i]].side[1] );
2686 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
2687 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
2688 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
2689 glNormal3dv ( e_enqire[name[i]].side[2] );
2690 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
2691 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
2692 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
2693 glNormal3dv ( e_enqire[name[i]].side[3] );
2694 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
2695 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
2696 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
2697 glEnd();
2698 break;
2699
2700 case 9:
2701 glBegin ( GL_TRIANGLE_STRIP );
2702 glNormal3dv ( e_enqire[name[i]].side[0] );
2703 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
2704 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
2705 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
2706 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
2707 glEnd();
2708 break;
2709
2710 case 10:
2711 glBegin ( GL_TRIANGLE_FAN );
2712 glNormal3dv ( e_enqire[name[i]].side[0] );
2713 glVertex3dv ( &node[e_enqire[name[i]].nod[ 8]].nx );
2714 glVertex3dv ( &node[e_enqire[name[i]].nod[ 0]].nx );
2715 glVertex3dv ( &node[e_enqire[name[i]].nod[ 4]].nx );
2716 glNormal3dv ( e_enqire[name[i]].side[1] );
2717 glVertex3dv ( &node[e_enqire[name[i]].nod[ 1]].nx );
2718 glNormal3dv ( e_enqire[name[i]].side[2] );
2719 glVertex3dv ( &node[e_enqire[name[i]].nod[ 5]].nx );
2720 glNormal3dv ( e_enqire[name[i]].side[3] );
2721 glVertex3dv ( &node[e_enqire[name[i]].nod[ 2]].nx );
2722 glNormal3dv ( e_enqire[name[i]].side[4] );
2723 glVertex3dv ( &node[e_enqire[name[i]].nod[ 6]].nx );
2724 glNormal3dv ( e_enqire[name[i]].side[5] );
2725 glVertex3dv ( &node[e_enqire[name[i]].nod[ 3]].nx );
2726 glNormal3dv ( e_enqire[name[i]].side[6] );
2727 glVertex3dv ( &node[e_enqire[name[i]].nod[ 7]].nx );
2728 glNormal3dv ( e_enqire[name[i]].side[7] );
2729 glVertex3dv ( &node[e_enqire[name[i]].nod[ 0]].nx );
2730 glEnd();
2731 break;
2732
2733 case 11:
2734 glDisable( GL_LIGHTING );
2735 glColor3f ( entitycol[col].r, entitycol[col].g, entitycol[col].b );
2736 glBegin ( GL_LINES );
2737 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
2738 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
2739 glEnd();
2740 glEnable( GL_LIGHTING );
2741 break;
2742
2743 case 12:
2744 glDisable( GL_LIGHTING );
2745 glColor3f ( entitycol[col].r, entitycol[col].g, entitycol[col].b );
2746 glBegin ( GL_LINE_STRIP );
2747 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
2748 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
2749 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
2750 glEnd();
2751 glEnable( GL_LIGHTING );
2752 break;
2753 }
2754
2755 if(type=='a')
2756 {
2757 switch(e_enqire[name[i]].type)
2758 {
2759 case 1:
2760 case 4:
2761 j=8;
2762 break;
2763 case 2:
2764 case 5:
2765 j=6;
2766 break;
2767 case 3:
2768 case 6:
2769 case 9:
2770 case 10:
2771 j=4;
2772 break;
2773 case 7:
2774 case 8:
2775 case 12:
2776 j=3;
2777 break;
2778 case 11:
2779 j=2;
2780 break;
2781 default:
2782 // assure that j!=0 (see division below)
2783 printf("ERROR: type:%d of elem:%d not known\n",e_enqire[name[i]].type,name[i]);
2784 j=1;
2785 break;
2786 }
2787 x=y=z=0.;
2788 for (n=0; n<j; n++)
2789 {
2790 x+= node[e_enqire[name[i]].nod[n]].nx;
2791 y+= node[e_enqire[name[i]].nod[n]].ny;
2792 z+= node[e_enqire[name[i]].nod[n]].nz;
2793 }
2794 x/= j; y/= j; z/= j;
2795 sprintf( buffer, "%d ", name[i]);
2796 glColor3f ( entitycol[0].r, entitycol[0].g, entitycol[0].b );
2797 glDisable( GL_LIGHTING );
2798 text( x, y, z, buffer, glut_font[draw_font] );
2799 glEnable( GL_LIGHTING );
2800 }
2801 }
2802 glDisable( GL_LIGHTING );
2803 }
2804 }
2805
2806
2807
drawFaces_plot(int num,int * name,Nodes * node,double * colNr,Faces * face,int col,char type,int width,int pickflag)2808 void drawFaces_plot( int num, int *name, Nodes *node, double *colNr, Faces *face, int col, char type, int width, int pickflag )
2809 {
2810 int i, j, n;
2811 double x, y, z, alpha=1.;
2812 GLint ipuf[2];
2813 extern Elements *e_enqire;
2814
2815 if((type=='x')||(type=='b'))
2816 {
2817 if(width>0) { alpha=(float)width/100.; }
2818 else alpha=BLEND_ALPHA;
2819 width=1;
2820 if(type=='x') type='v';
2821 }
2822 else
2823 {
2824 if(width<1) width=1;
2825 glGetIntegerv( GL_CULL_FACE_MODE, ipuf );
2826 if ( ipuf[0] == GL_FRONT ) glEnable ( GL_CULL_FACE );
2827 else glDisable ( GL_CULL_FACE );
2828 }
2829 glLineWidth(width);
2830
2831 if((type=='v')&&(!pickflag)&&(illumResultFlag))
2832 {
2833 /* enable all colors */
2834 defineColTextur_load(alpha);
2835 //glColor3d( 1,1,1);
2836 glEnable(GL_TEXTURE_1D);
2837
2838 setMaterial_rgb(1, 1.);
2839 glEnable( GL_LIGHTING );
2840
2841 for (i=0; i<num; i++ )
2842 {
2843 switch(face[name[i]].type)
2844 {
2845 case 7:
2846 glNormal3dv ( face[name[i]].side[0] );
2847 glBegin ( GL_TRIANGLES );
2848 GLCOLOR ( colNr[face[name[i]].nod[0]] );
2849 glVertex3dv ( &node[face[name[i]].nod[0]].nx );
2850 GLCOLOR ( colNr[face[name[i]].nod[1]] );
2851 glVertex3dv ( &node[face[name[i]].nod[1]].nx );
2852 glNormal3dv ( face[name[i]].side[0] );
2853 GLCOLOR ( colNr[face[name[i]].nod[2]] );
2854 glVertex3dv ( &node[face[name[i]].nod[2]].nx );
2855 glEnd();
2856 break;
2857
2858 case 8:
2859 glNormal3dv ( face[name[i]].side[0] );
2860 glBegin ( GL_TRIANGLES );
2861 GLCOLOR ( colNr[face[name[i]].nod[0]] );
2862 glVertex3dv ( &node[face[name[i]].nod[0]].nx );
2863 GLCOLOR ( colNr[face[name[i]].nod[3]] );
2864 glVertex3dv ( &node[face[name[i]].nod[3]].nx );
2865 glNormal3dv ( face[name[i]].side[0] );
2866 GLCOLOR ( colNr[face[name[i]].nod[5]] );
2867 glVertex3dv ( &node[face[name[i]].nod[5]].nx );
2868 GLCOLOR ( colNr[face[name[i]].nod[2]] );
2869 glVertex3dv ( &node[face[name[i]].nod[2]].nx );
2870 GLCOLOR ( colNr[face[name[i]].nod[5]] );
2871 glVertex3dv ( &node[face[name[i]].nod[5]].nx );
2872 glNormal3dv ( face[name[i]].side[1] );
2873 GLCOLOR ( colNr[face[name[i]].nod[4]] );
2874 glVertex3dv ( &node[face[name[i]].nod[4]].nx );
2875 GLCOLOR ( colNr[face[name[i]].nod[4]] );
2876 glVertex3dv ( &node[face[name[i]].nod[4]].nx );
2877 GLCOLOR ( colNr[face[name[i]].nod[5]] );
2878 glVertex3dv ( &node[face[name[i]].nod[5]].nx );
2879 glNormal3dv ( face[name[i]].side[2] );
2880 GLCOLOR ( colNr[face[name[i]].nod[3]] );
2881 glVertex3dv ( &node[face[name[i]].nod[3]].nx );
2882 GLCOLOR ( colNr[face[name[i]].nod[3]] );
2883 glVertex3dv ( &node[face[name[i]].nod[3]].nx );
2884 GLCOLOR ( colNr[face[name[i]].nod[1]] );
2885 glVertex3dv ( &node[face[name[i]].nod[1]].nx );
2886 glNormal3dv ( face[name[i]].side[3] );
2887 GLCOLOR ( colNr[face[name[i]].nod[4]] );
2888 glVertex3dv ( &node[face[name[i]].nod[4]].nx );
2889 glEnd();
2890 break;
2891
2892 case 9:
2893 glNormal3dv ( face[name[i]].side[0] );
2894 glBegin ( GL_TRIANGLE_STRIP );
2895 GLCOLOR ( colNr[face[name[i]].nod[0]] );
2896 glVertex3dv ( &node[face[name[i]].nod[0]].nx );
2897 GLCOLOR ( colNr[face[name[i]].nod[1]] );
2898 glVertex3dv ( &node[face[name[i]].nod[1]].nx );
2899 glNormal3dv ( face[name[i]].side[0] );
2900 GLCOLOR ( colNr[face[name[i]].nod[3]] );
2901 glVertex3dv ( &node[face[name[i]].nod[3]].nx );
2902 GLCOLOR ( colNr[face[name[i]].nod[2]] );
2903 glVertex3dv ( &node[face[name[i]].nod[2]].nx );
2904 glEnd();
2905 break;
2906
2907 case 10:
2908 glNormal3dv ( face[name[i]].side[0] );
2909 glBegin ( GL_TRIANGLE_FAN );
2910 GLCOLOR ( colNr[face[name[i]].nod[8]] );
2911 glVertex3dv ( &node[face[name[i]].nod[8]].nx );
2912 GLCOLOR ( colNr[face[name[i]].nod[0]] );
2913 glVertex3dv ( &node[face[name[i]].nod[0]].nx );
2914 glNormal3dv ( face[name[i]].side[0] );
2915 GLCOLOR ( colNr[face[name[i]].nod[4]] );
2916 glVertex3dv ( &node[face[name[i]].nod[4]].nx );
2917 glNormal3dv ( face[name[i]].side[1] );
2918 GLCOLOR ( colNr[face[name[i]].nod[1]] );
2919 glVertex3dv ( &node[face[name[i]].nod[1]].nx );
2920 glNormal3dv ( face[name[i]].side[2] );
2921 GLCOLOR ( colNr[face[name[i]].nod[5]] );
2922 glVertex3dv ( &node[face[name[i]].nod[5]].nx );
2923 glNormal3dv ( face[name[i]].side[3] );
2924 GLCOLOR ( colNr[face[name[i]].nod[2]] );
2925 glVertex3dv ( &node[face[name[i]].nod[2]].nx );
2926 glNormal3dv ( face[name[i]].side[4] );
2927 GLCOLOR ( colNr[face[name[i]].nod[6]] );
2928 glVertex3dv ( &node[face[name[i]].nod[6]].nx );
2929 glNormal3dv ( face[name[i]].side[5] );
2930 GLCOLOR ( colNr[face[name[i]].nod[3]] );
2931 glVertex3dv ( &node[face[name[i]].nod[3]].nx );
2932 glNormal3dv ( face[name[i]].side[6] );
2933 GLCOLOR ( colNr[face[name[i]].nod[7]] );
2934 glVertex3dv ( &node[face[name[i]].nod[7]].nx );
2935 glNormal3dv ( face[name[i]].side[7] );
2936 GLCOLOR ( colNr[face[name[i]].nod[0]] );
2937 glVertex3dv ( &node[face[name[i]].nod[0]].nx );
2938 glEnd();
2939 break;
2940
2941 case 11:
2942 glBegin ( GL_LINES );
2943 GLCOLOR ( colNr[face[name[i]].nod[0]] );
2944 glVertex3dv ( &node[face[name[i]].nod[0]].nx );
2945 GLCOLOR ( colNr[face[name[i]].nod[1]] );
2946 glVertex3dv ( &node[face[name[i]].nod[1]].nx );
2947 glEnd();
2948 break;
2949
2950 case 12:
2951 glBegin ( GL_LINE_STRIP );
2952 GLCOLOR ( colNr[face[name[i]].nod[0]] );
2953 glVertex3dv ( &node[face[name[i]].nod[0]].nx );
2954 GLCOLOR ( colNr[face[name[i]].nod[2]] );
2955 glVertex3dv ( &node[face[name[i]].nod[2]].nx );
2956 GLCOLOR ( colNr[face[name[i]].nod[1]] );
2957 glVertex3dv ( &node[face[name[i]].nod[1]].nx );
2958 glEnd();
2959 break;
2960 }
2961 }
2962 glDisable(GL_TEXTURE_1D);
2963 glDisable( GL_LIGHTING );
2964 }
2965 else if((type=='v')&&(!pickflag))
2966 {
2967 /* enable all colors */
2968 defineColTextur_load(alpha);
2969 glColor3d( 1,1,1);
2970 glEnable(GL_TEXTURE_1D);
2971
2972 for (i=0; i<num; i++ )
2973 {
2974 switch(face[name[i]].type)
2975 {
2976 case 7:
2977 glBegin ( GL_TRIANGLES );
2978 GLCOLOR ( colNr[face[name[i]].nod[0]] );
2979 glVertex3dv ( &node[face[name[i]].nod[0]].nx );
2980 GLCOLOR ( colNr[face[name[i]].nod[1]] );
2981 glVertex3dv ( &node[face[name[i]].nod[1]].nx );
2982 GLCOLOR ( colNr[face[name[i]].nod[2]] );
2983 glVertex3dv ( &node[face[name[i]].nod[2]].nx );
2984 glEnd();
2985 break;
2986
2987 case 8:
2988 glBegin ( GL_TRIANGLES );
2989 GLCOLOR ( colNr[face[name[i]].nod[0]] );
2990 glVertex3dv ( &node[face[name[i]].nod[0]].nx );
2991 GLCOLOR ( colNr[face[name[i]].nod[3]] );
2992 glVertex3dv ( &node[face[name[i]].nod[3]].nx );
2993 GLCOLOR ( colNr[face[name[i]].nod[5]] );
2994 glVertex3dv ( &node[face[name[i]].nod[5]].nx );
2995
2996 GLCOLOR ( colNr[face[name[i]].nod[2]] );
2997 glVertex3dv ( &node[face[name[i]].nod[2]].nx );
2998 GLCOLOR ( colNr[face[name[i]].nod[5]] );
2999 glVertex3dv ( &node[face[name[i]].nod[5]].nx );
3000 GLCOLOR ( colNr[face[name[i]].nod[4]] );
3001 glVertex3dv ( &node[face[name[i]].nod[4]].nx );
3002
3003 GLCOLOR ( colNr[face[name[i]].nod[4]] );
3004 glVertex3dv ( &node[face[name[i]].nod[4]].nx );
3005 GLCOLOR ( colNr[face[name[i]].nod[5]] );
3006 glVertex3dv ( &node[face[name[i]].nod[5]].nx );
3007 GLCOLOR ( colNr[face[name[i]].nod[3]] );
3008 glVertex3dv ( &node[face[name[i]].nod[3]].nx );
3009
3010 GLCOLOR ( colNr[face[name[i]].nod[3]] );
3011 glVertex3dv ( &node[face[name[i]].nod[3]].nx );
3012 GLCOLOR ( colNr[face[name[i]].nod[1]] );
3013 glVertex3dv ( &node[face[name[i]].nod[1]].nx );
3014 GLCOLOR ( colNr[face[name[i]].nod[4]] );
3015 glVertex3dv ( &node[face[name[i]].nod[4]].nx );
3016 glEnd();
3017 break;
3018
3019 case 9:
3020 glBegin ( GL_TRIANGLE_STRIP );
3021 GLCOLOR ( colNr[face[name[i]].nod[0]] );
3022 glVertex3dv ( &node[face[name[i]].nod[0]].nx );
3023 GLCOLOR ( colNr[face[name[i]].nod[1]] );
3024 glVertex3dv ( &node[face[name[i]].nod[1]].nx );
3025 GLCOLOR ( colNr[face[name[i]].nod[3]] );
3026 glVertex3dv ( &node[face[name[i]].nod[3]].nx );
3027 GLCOLOR ( colNr[face[name[i]].nod[2]] );
3028 glVertex3dv ( &node[face[name[i]].nod[2]].nx );
3029 glEnd();
3030 break;
3031
3032 case 10:
3033 glBegin ( GL_TRIANGLE_FAN );
3034 GLCOLOR ( colNr[face[name[i]].nod[8]] );
3035 glVertex3dv ( &node[face[name[i]].nod[8]].nx );
3036 GLCOLOR ( colNr[face[name[i]].nod[0]] );
3037 glVertex3dv ( &node[face[name[i]].nod[0]].nx );
3038 GLCOLOR ( colNr[face[name[i]].nod[4]] );
3039 glVertex3dv ( &node[face[name[i]].nod[4]].nx );
3040 GLCOLOR ( colNr[face[name[i]].nod[1]] );
3041 glVertex3dv ( &node[face[name[i]].nod[1]].nx );
3042 GLCOLOR ( colNr[face[name[i]].nod[5]] );
3043 glVertex3dv ( &node[face[name[i]].nod[5]].nx );
3044 GLCOLOR ( colNr[face[name[i]].nod[2]] );
3045 glVertex3dv ( &node[face[name[i]].nod[2]].nx );
3046 GLCOLOR ( colNr[face[name[i]].nod[6]] );
3047 glVertex3dv ( &node[face[name[i]].nod[6]].nx );
3048 GLCOLOR ( colNr[face[name[i]].nod[3]] );
3049 glVertex3dv ( &node[face[name[i]].nod[3]].nx );
3050 GLCOLOR ( colNr[face[name[i]].nod[7]] );
3051 glVertex3dv ( &node[face[name[i]].nod[7]].nx );
3052 GLCOLOR ( colNr[face[name[i]].nod[0]] );
3053 glVertex3dv ( &node[face[name[i]].nod[0]].nx );
3054 glEnd();
3055 break;
3056
3057 case 11:
3058 glBegin ( GL_LINES );
3059 GLCOLOR ( colNr[face[name[i]].nod[0]] );
3060 glVertex3dv ( &node[face[name[i]].nod[0]].nx );
3061 GLCOLOR ( colNr[face[name[i]].nod[1]] );
3062 glVertex3dv ( &node[face[name[i]].nod[1]].nx );
3063 glEnd();
3064 break;
3065
3066 case 12:
3067 glBegin ( GL_LINE_STRIP );
3068 GLCOLOR ( colNr[face[name[i]].nod[0]] );
3069 glVertex3dv ( &node[face[name[i]].nod[0]].nx );
3070 GLCOLOR ( colNr[face[name[i]].nod[2]] );
3071 glVertex3dv ( &node[face[name[i]].nod[2]].nx );
3072 GLCOLOR ( colNr[face[name[i]].nod[1]] );
3073 glVertex3dv ( &node[face[name[i]].nod[1]].nx );
3074 glEnd();
3075 break;
3076 }
3077 }
3078 glDisable(GL_TEXTURE_1D);
3079 }
3080 else if(pickflag)
3081 {
3082 /* any other color */
3083 glColor3f ( entitycol[col].r, entitycol[col].g, entitycol[col].b );
3084
3085 if(type=='e') glLoadName('e'); else glLoadName('f');
3086
3087 for (i=0; i<num; i++ )
3088 {
3089 if(type=='e') glPushName(face[name[i]].elem_nr); else glPushName(name[i]);
3090 switch(face[name[i]].type)
3091 {
3092 case 7:
3093 glBegin ( GL_TRIANGLES );
3094 glVertex3dv ( &node[face[name[i]].nod[0]].nx );
3095 glVertex3dv ( &node[face[name[i]].nod[1]].nx );
3096 glVertex3dv ( &node[face[name[i]].nod[2]].nx );
3097 glEnd();
3098 break;
3099
3100 case 8:
3101 glBegin ( GL_TRIANGLES );
3102 glVertex3dv ( &node[face[name[i]].nod[0]].nx );
3103 glVertex3dv ( &node[face[name[i]].nod[3]].nx );
3104 glVertex3dv ( &node[face[name[i]].nod[5]].nx );
3105 glVertex3dv ( &node[face[name[i]].nod[2]].nx );
3106 glVertex3dv ( &node[face[name[i]].nod[5]].nx );
3107 glVertex3dv ( &node[face[name[i]].nod[4]].nx );
3108 glVertex3dv ( &node[face[name[i]].nod[4]].nx );
3109 glVertex3dv ( &node[face[name[i]].nod[5]].nx );
3110 glVertex3dv ( &node[face[name[i]].nod[3]].nx );
3111 glVertex3dv ( &node[face[name[i]].nod[3]].nx );
3112 glVertex3dv ( &node[face[name[i]].nod[1]].nx );
3113 glVertex3dv ( &node[face[name[i]].nod[4]].nx );
3114 glEnd();
3115 break;
3116
3117 case 9:
3118 glBegin ( GL_TRIANGLES );
3119 glVertex3dv ( &node[face[name[i]].nod[0]].nx );
3120 glVertex3dv ( &node[face[name[i]].nod[1]].nx );
3121 glVertex3dv ( &node[face[name[i]].nod[3]].nx );
3122 glVertex3dv ( &node[face[name[i]].nod[2]].nx );
3123 glVertex3dv ( &node[face[name[i]].nod[3]].nx );
3124 glVertex3dv ( &node[face[name[i]].nod[1]].nx );
3125 glEnd();
3126 break;
3127
3128 case 10:
3129 glBegin ( GL_TRIANGLE_FAN);
3130 glVertex3dv ( &node[face[name[i]].nod[8]].nx );
3131 glVertex3dv ( &node[face[name[i]].nod[0]].nx );
3132 glVertex3dv ( &node[face[name[i]].nod[4]].nx );
3133 glVertex3dv ( &node[face[name[i]].nod[1]].nx );
3134 glVertex3dv ( &node[face[name[i]].nod[5]].nx );
3135 glVertex3dv ( &node[face[name[i]].nod[2]].nx );
3136 glVertex3dv ( &node[face[name[i]].nod[6]].nx );
3137 glVertex3dv ( &node[face[name[i]].nod[3]].nx );
3138 glVertex3dv ( &node[face[name[i]].nod[7]].nx );
3139 glVertex3dv ( &node[face[name[i]].nod[0]].nx );
3140 glEnd();
3141 break;
3142
3143 case 11:
3144 glBegin ( GL_LINES );
3145 glVertex3dv ( &node[face[name[i]].nod[0]].nx );
3146 glVertex3dv ( &node[face[name[i]].nod[1]].nx );
3147 glEnd();
3148 break;
3149
3150 case 12:
3151 glBegin ( GL_LINE_STRIP );
3152 glVertex3dv ( &node[face[name[i]].nod[0]].nx );
3153 glVertex3dv ( &node[face[name[i]].nod[2]].nx );
3154 glVertex3dv ( &node[face[name[i]].nod[1]].nx );
3155 glEnd();
3156 break;
3157 }
3158
3159 if(type=='a')
3160 {
3161 j=0;
3162 switch(face[name[i]].type)
3163 {
3164 case 7:
3165 j=3; break;
3166 case 8:
3167 j=3; break;
3168 case 9:
3169 j=4; break;
3170 case 10:
3171 j=4; break;
3172 case 11:
3173 j=2; break;
3174 case 12:
3175 j=2; break;
3176 }
3177 x=y=z=0.;
3178 for (n=0; n<j; n++)
3179 {
3180 x+= node[face[name[i]].nod[n]].nx;
3181 y+= node[face[name[i]].nod[n]].ny;
3182 z+= node[face[name[i]].nod[n]].nz;
3183 }
3184 x/= j; y/= j; z/= j;
3185 sprintf( buffer, "%d-S%d", face[name[i]].elem_nr, face[name[i]].nr+1);
3186 text( x, y, z, buffer, glut_font[draw_font] );
3187 }
3188 glPopName();
3189 }
3190 glLoadName(-1);
3191 }
3192 else
3193 {
3194 setMaterial_rgb(col, alpha);
3195 glEnable( GL_LIGHTING );
3196
3197 /* Achtung! glNormal3dv nur VOR den ersten nodes fuert (nur hier im face-code!) auf mtu-linux zum haengen */
3198 /* Die normale des ersten Dreiecks muss vor- und im block spez. werden damit alle modi laufen */
3199 /*
3200 glBegin ( GL_TRIANGLE_FAN );
3201 <glNormal3dv ( face[name[i]].side[0] );>
3202 glVertex3dv ( &node[face[name[i]].nod[8]].nx );
3203 etc.
3204 */
3205
3206 for (i=0; i<num; i++ )
3207 {
3208 switch(face[name[i]].type)
3209 {
3210 case 7:
3211 glNormal3dv ( face[name[i]].side[0] );
3212 glBegin ( GL_TRIANGLES );
3213 glVertex3dv ( &node[face[name[i]].nod[0]].nx );
3214 glVertex3dv ( &node[face[name[i]].nod[1]].nx );
3215 glNormal3dv ( face[name[i]].side[0] );
3216 glVertex3dv ( &node[face[name[i]].nod[2]].nx );
3217 glEnd();
3218 break;
3219
3220 case 8:
3221 glNormal3dv ( face[name[i]].side[0] );
3222 glBegin ( GL_TRIANGLES );
3223 glVertex3dv ( &node[face[name[i]].nod[0]].nx );
3224 glVertex3dv ( &node[face[name[i]].nod[3]].nx );
3225 glNormal3dv ( face[name[i]].side[0] );
3226 glVertex3dv ( &node[face[name[i]].nod[5]].nx );
3227 glVertex3dv ( &node[face[name[i]].nod[2]].nx );
3228 glVertex3dv ( &node[face[name[i]].nod[5]].nx );
3229 glNormal3dv ( face[name[i]].side[1] );
3230 glVertex3dv ( &node[face[name[i]].nod[4]].nx );
3231 glVertex3dv ( &node[face[name[i]].nod[4]].nx );
3232 glVertex3dv ( &node[face[name[i]].nod[5]].nx );
3233 glNormal3dv ( face[name[i]].side[2] );
3234 glVertex3dv ( &node[face[name[i]].nod[3]].nx );
3235 glVertex3dv ( &node[face[name[i]].nod[3]].nx );
3236 glVertex3dv ( &node[face[name[i]].nod[1]].nx );
3237 glNormal3dv ( face[name[i]].side[3] );
3238 glVertex3dv ( &node[face[name[i]].nod[4]].nx );
3239 glEnd();
3240 break;
3241
3242 case 9:
3243 glNormal3dv ( face[name[i]].side[0] );
3244 glBegin ( GL_TRIANGLE_STRIP );
3245 glVertex3dv ( &node[face[name[i]].nod[0]].nx );
3246 glVertex3dv ( &node[face[name[i]].nod[1]].nx );
3247 glNormal3dv ( face[name[i]].side[0] );
3248 glVertex3dv ( &node[face[name[i]].nod[3]].nx );
3249 glVertex3dv ( &node[face[name[i]].nod[2]].nx );
3250 glEnd();
3251 break;
3252
3253 case 10:
3254 glNormal3dv ( face[name[i]].side[0] );
3255 glBegin ( GL_TRIANGLE_FAN );
3256 glVertex3dv ( &node[face[name[i]].nod[8]].nx );
3257 glVertex3dv ( &node[face[name[i]].nod[0]].nx );
3258 glNormal3dv ( face[name[i]].side[0] );
3259 glVertex3dv ( &node[face[name[i]].nod[4]].nx );
3260 glNormal3dv ( face[name[i]].side[1] );
3261 glVertex3dv ( &node[face[name[i]].nod[1]].nx );
3262 glNormal3dv ( face[name[i]].side[2] );
3263 glVertex3dv ( &node[face[name[i]].nod[5]].nx );
3264 glNormal3dv ( face[name[i]].side[3] );
3265 glVertex3dv ( &node[face[name[i]].nod[2]].nx );
3266 glNormal3dv ( face[name[i]].side[4] );
3267 glVertex3dv ( &node[face[name[i]].nod[6]].nx );
3268 glNormal3dv ( face[name[i]].side[5] );
3269 glVertex3dv ( &node[face[name[i]].nod[3]].nx );
3270 glNormal3dv ( face[name[i]].side[6] );
3271 glVertex3dv ( &node[face[name[i]].nod[7]].nx );
3272 glNormal3dv ( face[name[i]].side[7] );
3273 glVertex3dv ( &node[face[name[i]].nod[0]].nx );
3274 glEnd();
3275 break;
3276
3277 case 11:
3278 //glNormal3dv ( e_enqire[face[name[i]].elem_nr].side[0] );
3279 glDisable( GL_LIGHTING );
3280 glColor3f ( entitycol[col].r, entitycol[col].g, entitycol[col].b );
3281 glBegin ( GL_LINES );
3282 glVertex3dv ( &node[face[name[i]].nod[0]].nx );
3283 glVertex3dv ( &node[face[name[i]].nod[1]].nx );
3284 glEnd();
3285 glEnable( GL_LIGHTING );
3286 break;
3287
3288 case 12:
3289 //glNormal3dv ( e_enqire[face[name[i]].elem_nr].side[0] );
3290 glDisable( GL_LIGHTING );
3291 glColor3f ( entitycol[col].r, entitycol[col].g, entitycol[col].b );
3292 glBegin ( GL_LINE_STRIP );
3293 glVertex3dv ( &node[face[name[i]].nod[0]].nx );
3294 glVertex3dv ( &node[face[name[i]].nod[2]].nx );
3295 glVertex3dv ( &node[face[name[i]].nod[1]].nx );
3296 glEnd();
3297 glEnable( GL_LIGHTING );
3298 break;
3299 }
3300
3301 if(type=='a')
3302 {
3303 j=0;
3304 switch(face[name[i]].type)
3305 {
3306 case 7:
3307 j=3; break;
3308 case 8:
3309 j=3; break;
3310 case 9:
3311 j=4; break;
3312 case 10:
3313 j=4; break;
3314 case 11:
3315 j=2; break;
3316 case 12:
3317 j=2; break;
3318 }
3319 x=y=z=0.;
3320 for (n=0; n<j; n++)
3321 {
3322 x+= node[face[name[i]].nod[n]].nx;
3323 y+= node[face[name[i]].nod[n]].ny;
3324 z+= node[face[name[i]].nod[n]].nz;
3325 }
3326 x/= j; y/= j; z/= j;
3327 if(e_enqire[face[name[i]].elem_nr].type>6) // shell
3328 {
3329 if(e_enqire[face[name[i]].elem_nr].type>10) // beam
3330 sprintf( buffer, "%d-S?", face[name[i]].elem_nr);
3331 else if(e_enqire[face[name[i]].elem_nr].attr>3) // plain strain,stress or axisym
3332 {
3333 //if(face[name[i]].nr==0) sprintf( buffer, "%d-SN", face[name[i]].elem_nr);
3334 //else if(face[name[i]].nr==1) sprintf( buffer, "%d-SP", face[name[i]].elem_nr);
3335 if(face[name[i]].nr==1) sprintf( buffer, "%d-SNP", face[name[i]].elem_nr);
3336 else sprintf( buffer, "%d-S%d", face[name[i]].elem_nr, face[name[i]].nr-1);
3337 }
3338 else
3339 {
3340 //if(face[name[i]].nr==0) sprintf( buffer, "%d-SNEG", face[name[i]].elem_nr);
3341 //else if(face[name[i]].nr==1) sprintf( buffer, "%d-SPOS", face[name[i]].elem_nr);
3342 if(face[name[i]].nr==1) sprintf( buffer, "%d-SNP", face[name[i]].elem_nr);
3343 else sprintf( buffer, "%d-S%d", face[name[i]].elem_nr, face[name[i]].nr+1);
3344 }
3345 }
3346 else sprintf( buffer, "%d-S%d", face[name[i]].elem_nr, face[name[i]].nr+1);
3347 glColor3f ( entitycol[0].r, entitycol[0].g, entitycol[0].b );
3348 glDisable( GL_LIGHTING );
3349 text( x, y, z, buffer, glut_font[draw_font] );
3350 glEnable( GL_LIGHTING );
3351 }
3352 }
3353 glDisable( GL_LIGHTING );
3354 }
3355 glEnable ( GL_CULL_FACE );
3356 }
3357
3358
3359
3360
drawFaces_edge(int num,int * name,Nodes * node,Faces * face,int color,char type)3361 void drawFaces_edge( int num, int *name, Nodes *node, Faces *face, int color, char type )
3362 {
3363 int i;
3364 static GLint ipuf[2];
3365 double dsloc;
3366
3367 /* change the offset of the edges to the backside of the elements if */
3368 /* the interiour is visible */
3369 glGetIntegerv( GL_CULL_FACE_MODE, ipuf );
3370 if(ds<MIN_ELEM_EDGE_DISTANCE) dsloc=MIN_ELEM_EDGE_DISTANCE; else
3371 dsloc=ds;
3372 if ( ipuf[0] == GL_FRONT ) dsloc*=-1;
3373 //printf("dsloc:%e\n",dsloc);
3374 glColor3d(color,color,color);
3375 glLineWidth(1.);
3376
3377 for (i=0; i<num; i++ )
3378 {
3379 switch(face[name[i]].type)
3380 {
3381 case 7:
3382 glBegin ( GL_LINE_LOOP );
3383 glVertex3d ( node[face[name[i]].nod[0]].nx+face[name[i]].side[0][0]*1.e-3*dsloc,
3384 node[face[name[i]].nod[0]].ny+face[name[i]].side[0][1]*1.e-3*dsloc,
3385 node[face[name[i]].nod[0]].nz+face[name[i]].side[0][2]*1.e-3*dsloc );
3386 glVertex3d ( node[face[name[i]].nod[1]].nx+face[name[i]].side[0][0]*1.e-3*dsloc,
3387 node[face[name[i]].nod[1]].ny+face[name[i]].side[0][1]*1.e-3*dsloc,
3388 node[face[name[i]].nod[1]].nz+face[name[i]].side[0][2]*1.e-3*dsloc );
3389 glVertex3d ( node[face[name[i]].nod[2]].nx+face[name[i]].side[0][0]*1.e-3*dsloc,
3390 node[face[name[i]].nod[2]].ny+face[name[i]].side[0][1]*1.e-3*dsloc,
3391 node[face[name[i]].nod[2]].nz+face[name[i]].side[0][2]*1.e-3*dsloc );
3392 glEnd();
3393 break;
3394
3395 case 8:
3396 glBegin ( GL_LINE_LOOP );
3397 glVertex3d ( node[face[name[i]].nod[0]].nx+face[name[i]].side[0][0]*1.e-3*dsloc,
3398 node[face[name[i]].nod[0]].ny+face[name[i]].side[0][1]*1.e-3*dsloc,
3399 node[face[name[i]].nod[0]].nz+face[name[i]].side[0][2]*1.e-3*dsloc );
3400 glVertex3d ( node[face[name[i]].nod[3]].nx+face[name[i]].side[2][0]*1.e-3*dsloc,
3401 node[face[name[i]].nod[3]].ny+face[name[i]].side[2][1]*1.e-3*dsloc,
3402 node[face[name[i]].nod[3]].nz+face[name[i]].side[2][2]*1.e-3*dsloc );
3403 glVertex3d ( node[face[name[i]].nod[1]].nx+face[name[i]].side[3][0]*1.e-3*dsloc,
3404 node[face[name[i]].nod[1]].ny+face[name[i]].side[3][1]*1.e-3*dsloc,
3405 node[face[name[i]].nod[1]].nz+face[name[i]].side[3][2]*1.e-3*dsloc );
3406 glVertex3d ( node[face[name[i]].nod[4]].nx+face[name[i]].side[2][0]*1.e-3*dsloc,
3407 node[face[name[i]].nod[4]].ny+face[name[i]].side[2][1]*1.e-3*dsloc,
3408 node[face[name[i]].nod[4]].nz+face[name[i]].side[2][2]*1.e-3*dsloc );
3409 glVertex3d ( node[face[name[i]].nod[2]].nx+face[name[i]].side[1][0]*1.e-3*dsloc,
3410 node[face[name[i]].nod[2]].ny+face[name[i]].side[1][1]*1.e-3*dsloc,
3411 node[face[name[i]].nod[2]].nz+face[name[i]].side[1][2]*1.e-3*dsloc );
3412 glVertex3d ( node[face[name[i]].nod[5]].nx+face[name[i]].side[2][0]*1.e-3*dsloc,
3413 node[face[name[i]].nod[5]].ny+face[name[i]].side[2][1]*1.e-3*dsloc,
3414 node[face[name[i]].nod[5]].nz+face[name[i]].side[2][2]*1.e-3*dsloc );
3415 glEnd();
3416 break;
3417
3418 case 9:
3419 glBegin ( GL_LINE_LOOP );
3420 glVertex3d ( node[face[name[i]].nod[0]].nx+face[name[i]].side[0][0]*1.e-3*dsloc,
3421 node[face[name[i]].nod[0]].ny+face[name[i]].side[0][1]*1.e-3*dsloc,
3422 node[face[name[i]].nod[0]].nz+face[name[i]].side[0][2]*1.e-3*dsloc );
3423 glVertex3d ( node[face[name[i]].nod[1]].nx+face[name[i]].side[0][0]*1.e-3*dsloc,
3424 node[face[name[i]].nod[1]].ny+face[name[i]].side[0][1]*1.e-3*dsloc,
3425 node[face[name[i]].nod[1]].nz+face[name[i]].side[0][2]*1.e-3*dsloc );
3426 glVertex3d ( node[face[name[i]].nod[2]].nx+face[name[i]].side[0][0]*1.e-3*dsloc,
3427 node[face[name[i]].nod[2]].ny+face[name[i]].side[0][1]*1.e-3*dsloc,
3428 node[face[name[i]].nod[2]].nz+face[name[i]].side[0][2]*1.e-3*dsloc );
3429 glVertex3d ( node[face[name[i]].nod[3]].nx+face[name[i]].side[0][0]*1.e-3*dsloc,
3430 node[face[name[i]].nod[3]].ny+face[name[i]].side[0][1]*1.e-3*dsloc,
3431 node[face[name[i]].nod[3]].nz+face[name[i]].side[0][2]*1.e-3*dsloc );
3432 glEnd();
3433 break;
3434
3435 case 10:
3436 glBegin ( GL_LINE_LOOP );
3437 glVertex3d ( node[face[name[i]].nod[0]].nx+face[name[i]].side[0][0]*1.e-3*dsloc,
3438 node[face[name[i]].nod[0]].ny+face[name[i]].side[0][1]*1.e-3*dsloc,
3439 node[face[name[i]].nod[0]].nz+face[name[i]].side[0][2]*1.e-3*dsloc );
3440 glVertex3d ( node[face[name[i]].nod[4]].nx+face[name[i]].side[1][0]*1.e-3*dsloc,
3441 node[face[name[i]].nod[4]].ny+face[name[i]].side[1][1]*1.e-3*dsloc,
3442 node[face[name[i]].nod[4]].nz+face[name[i]].side[1][2]*1.e-3*dsloc );
3443 glVertex3d ( node[face[name[i]].nod[1]].nx+face[name[i]].side[5][0]*1.e-3*dsloc,
3444 node[face[name[i]].nod[1]].ny+face[name[i]].side[5][1]*1.e-3*dsloc,
3445 node[face[name[i]].nod[1]].nz+face[name[i]].side[5][2]*1.e-3*dsloc );
3446 glVertex3d ( node[face[name[i]].nod[5]].nx+face[name[i]].side[4][0]*1.e-3*dsloc,
3447 node[face[name[i]].nod[5]].ny+face[name[i]].side[4][1]*1.e-3*dsloc,
3448 node[face[name[i]].nod[5]].nz+face[name[i]].side[4][2]*1.e-3*dsloc );
3449 glVertex3d ( node[face[name[i]].nod[2]].nx+face[name[i]].side[3][0]*1.e-3*dsloc,
3450 node[face[name[i]].nod[2]].ny+face[name[i]].side[3][1]*1.e-3*dsloc,
3451 node[face[name[i]].nod[2]].nz+face[name[i]].side[3][2]*1.e-3*dsloc );
3452 glVertex3d ( node[face[name[i]].nod[6]].nx+face[name[i]].side[4][0]*1.e-3*dsloc,
3453 node[face[name[i]].nod[6]].ny+face[name[i]].side[4][1]*1.e-3*dsloc,
3454 node[face[name[i]].nod[6]].nz+face[name[i]].side[4][2]*1.e-3*dsloc );
3455 glVertex3d ( node[face[name[i]].nod[3]].nx+face[name[i]].side[2][0]*1.e-3*dsloc,
3456 node[face[name[i]].nod[3]].ny+face[name[i]].side[2][1]*1.e-3*dsloc,
3457 node[face[name[i]].nod[3]].nz+face[name[i]].side[2][2]*1.e-3*dsloc );
3458 glVertex3d ( node[face[name[i]].nod[7]].nx+face[name[i]].side[1][0]*1.e-3*dsloc,
3459 node[face[name[i]].nod[7]].ny+face[name[i]].side[1][1]*1.e-3*dsloc,
3460 node[face[name[i]].nod[7]].nz+face[name[i]].side[1][2]*1.e-3*dsloc );
3461 glEnd();
3462 break;
3463 }
3464 }
3465
3466 glGetIntegerv( GL_CULL_FACE_MODE, ipuf );
3467 if ( ipuf[0] == GL_FRONT ) dsloc*=-1;
3468 }
3469
3470
3471
3472
drawElem_edge(int num,int * name,Nodes * node,Elements * e_enqire,int color,char type)3473 void drawElem_edge( int num, int *name, Nodes *node, Elements *e_enqire, int color, char type )
3474 {
3475 register int i;
3476
3477 glColor3d(color,color,color);
3478 glLineWidth(1.);
3479
3480 #if TEST
3481 printf ("in drawElemEdges\n");
3482 #endif
3483
3484 for (i=0; i<num; i++ )
3485 {
3486 switch(e_enqire[name[i]].type)
3487 {
3488 case 1:
3489 glBegin ( GL_LINE_LOOP );
3490 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
3491 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
3492 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
3493 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
3494 glEnd();
3495 glBegin ( GL_LINE_LOOP );
3496 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
3497 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
3498 glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
3499 glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
3500 glEnd();
3501 glBegin ( GL_LINES );
3502 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
3503 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
3504 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
3505 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
3506 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
3507 glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
3508 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
3509 glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
3510 glEnd();
3511 break;
3512
3513 case 2:
3514 glBegin ( GL_LINE_LOOP );
3515 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
3516 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
3517 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
3518 glEnd();
3519 glBegin ( GL_LINE_LOOP );
3520 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
3521 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
3522 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
3523 glEnd();
3524 glBegin ( GL_LINES );
3525 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
3526 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
3527 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
3528 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
3529 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
3530 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
3531 glEnd();
3532 break;
3533
3534 case 3:
3535 glBegin ( GL_LINE_STRIP);
3536 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
3537 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
3538 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
3539 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
3540 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
3541 glEnd();
3542 glBegin ( GL_LINE_STRIP );
3543 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
3544 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
3545 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
3546 glEnd();
3547 break;
3548
3549 case 4:
3550 glBegin ( GL_LINE_LOOP );
3551 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
3552 glVertex3dv ( &node[e_enqire[name[i]].nod[11]].nx );
3553 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
3554 glVertex3dv ( &node[e_enqire[name[i]].nod[10]].nx );
3555 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
3556 glVertex3dv ( &node[e_enqire[name[i]].nod[9]].nx );
3557 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
3558 glVertex3dv ( &node[e_enqire[name[i]].nod[8]].nx );
3559 glEnd();
3560 glBegin ( GL_LINE_LOOP );
3561 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
3562 glVertex3dv ( &node[e_enqire[name[i]].nod[16]].nx );
3563 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
3564 glVertex3dv ( &node[e_enqire[name[i]].nod[17]].nx );
3565 glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
3566 glVertex3dv ( &node[e_enqire[name[i]].nod[18]].nx );
3567 glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
3568 glVertex3dv ( &node[e_enqire[name[i]].nod[19]].nx );
3569 glEnd();
3570 glBegin ( GL_LINES );
3571 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
3572 glVertex3dv ( &node[e_enqire[name[i]].nod[12]].nx );
3573 glVertex3dv ( &node[e_enqire[name[i]].nod[12]].nx );
3574 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
3575 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
3576 glVertex3dv ( &node[e_enqire[name[i]].nod[13]].nx );
3577 glVertex3dv ( &node[e_enqire[name[i]].nod[13]].nx );
3578 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
3579 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
3580 glVertex3dv ( &node[e_enqire[name[i]].nod[14]].nx );
3581 glVertex3dv ( &node[e_enqire[name[i]].nod[14]].nx );
3582 glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
3583 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
3584 glVertex3dv ( &node[e_enqire[name[i]].nod[15]].nx );
3585 glVertex3dv ( &node[e_enqire[name[i]].nod[15]].nx );
3586 glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
3587 glEnd();
3588 break;
3589
3590 case 5:
3591 glBegin ( GL_LINE_LOOP );
3592 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
3593 glVertex3dv ( &node[e_enqire[name[i]].nod[ 8]].nx );
3594 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
3595 glVertex3dv ( &node[e_enqire[name[i]].nod[ 7]].nx );
3596 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
3597 glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
3598 glEnd();
3599 glBegin ( GL_LINE_LOOP );
3600 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
3601 glVertex3dv ( &node[e_enqire[name[i]].nod[14]].nx );
3602 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
3603 glVertex3dv ( &node[e_enqire[name[i]].nod[13]].nx );
3604 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
3605 glVertex3dv ( &node[e_enqire[name[i]].nod[12]].nx );
3606 glEnd();
3607 glBegin ( GL_LINES );
3608 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
3609 glVertex3dv ( &node[e_enqire[name[i]].nod[ 9]].nx );
3610 glVertex3dv ( &node[e_enqire[name[i]].nod[ 9]].nx );
3611 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
3612 glVertex3dv ( &node[e_enqire[name[i]].nod[ 1]].nx );
3613 glVertex3dv ( &node[e_enqire[name[i]].nod[10]].nx );
3614 glVertex3dv ( &node[e_enqire[name[i]].nod[10]].nx );
3615 glVertex3dv ( &node[e_enqire[name[i]].nod[ 4]].nx );
3616 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
3617 glVertex3dv ( &node[e_enqire[name[i]].nod[11]].nx );
3618 glVertex3dv ( &node[e_enqire[name[i]].nod[11]].nx );
3619 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
3620 glEnd();
3621 break;
3622
3623 case 6:
3624 glBegin ( GL_LINE_STRIP);
3625 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
3626 glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
3627 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
3628 glVertex3dv ( &node[e_enqire[name[i]].nod[8]].nx );
3629 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
3630 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
3631 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
3632 glVertex3dv ( &node[e_enqire[name[i]].nod[9]].nx );
3633 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
3634 glEnd();
3635 glBegin ( GL_LINE_STRIP );
3636 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
3637 glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
3638 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
3639 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
3640 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
3641 glEnd();
3642 break;
3643
3644 case 7:
3645 glBegin ( GL_LINE_LOOP );
3646 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
3647 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
3648 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
3649 glEnd();
3650 break;
3651
3652 case 8:
3653 glBegin ( GL_LINE_LOOP );
3654 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
3655 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
3656 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
3657 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
3658 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
3659 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
3660 glEnd();
3661 break;
3662
3663 case 9:
3664 glBegin ( GL_LINE_LOOP );
3665 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
3666 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
3667 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
3668 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
3669 glEnd();
3670 break;
3671
3672 case 10:
3673 glBegin ( GL_LINE_LOOP );
3674 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
3675 glVertex3dv ( &node[e_enqire[name[i]].nod[4]].nx );
3676 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
3677 glVertex3dv ( &node[e_enqire[name[i]].nod[5]].nx );
3678 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
3679 glVertex3dv ( &node[e_enqire[name[i]].nod[6]].nx );
3680 glVertex3dv ( &node[e_enqire[name[i]].nod[3]].nx );
3681 glVertex3dv ( &node[e_enqire[name[i]].nod[7]].nx );
3682 glEnd();
3683 break;
3684
3685 case 11:
3686 glBegin ( GL_LINES );
3687 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
3688 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
3689 glEnd();
3690 break;
3691
3692 case 12:
3693 glBegin ( GL_LINE_STRIP );
3694 glVertex3dv ( &node[e_enqire[name[i]].nod[0]].nx );
3695 glVertex3dv ( &node[e_enqire[name[i]].nod[2]].nx );
3696 glVertex3dv ( &node[e_enqire[name[i]].nod[1]].nx );
3697 glEnd();
3698 break;
3699 }
3700 }
3701 }
3702
3703
3704
drawElemNodes_plot(int num,int * name,Nodes * node,Elements * e_enqire,int col,char type)3705 void drawElemNodes_plot( int num, int *name, Nodes *node, Elements *e_enqire, int col, char type )
3706 {
3707 register int i, n;
3708 int sum=0;
3709 int *nodnr;
3710
3711 if ( (nodnr = (int *)malloc( (int)(anz->nmax+1) * sizeof(int))) == NULL )
3712 { printf(" ERROR: malloc in drawElemNodes_plot(), nodnr\n\n") ; return;}
3713 for (i=0; i<=anz->nmax; i++ ) nodnr[i]=0;
3714
3715 for (i=0; i<num; i++ )
3716 {
3717 switch(e_enqire[name[i]].type)
3718 {
3719 case 1:
3720 sum=8;
3721 break;
3722 case 2:
3723 sum=6;
3724 break;
3725 case 3:
3726 sum=4;
3727 break;
3728 case 4:
3729 sum=20;
3730 break;
3731 case 5:
3732 sum=20;
3733 break;
3734 case 6:
3735 sum=10;
3736 break;
3737 case 7:
3738 sum=3;
3739 break;
3740 case 8:
3741 sum=6;
3742 break;
3743 case 9:
3744 sum=4;
3745 break;
3746 case 10:
3747 sum=8;
3748 break;
3749 case 11:
3750 sum=2;
3751 break;
3752 case 12:
3753 sum=3;
3754 break;
3755 default:
3756 sum=0;
3757 break;
3758 }
3759 for (n=0; n<sum; n++) nodnr[e_enqire[name[i]].nod[n]]=e_enqire[name[i]].nod[n];
3760 }
3761
3762 /* draw all selected nodes */
3763 glColor3d ( 0.5,0.5,0. );
3764 glLoadName('n');
3765 glPointSize(1);
3766 for (i=0; i<=anz->nmax; i++ )
3767 {
3768 if(nodnr[i])
3769 {
3770 glPushName(nodnr[i]);
3771 glBegin ( GL_POINTS );
3772 glVertex3dv ( &node[nodnr[i]].nx );
3773 glEnd();
3774 glPopName();
3775 }
3776 }
3777 glLoadName(-1);
3778 free(nodnr);
3779 }
3780
3781
3782
drawFaceNodes_plot(int num,int * name,Nodes * node,Faces * face,int col,char type)3783 void drawFaceNodes_plot( int num, int *name, Nodes *node, Faces *face, int col, char type )
3784 {
3785 register int i, n;
3786 int sum=0;
3787 int *nodnr;
3788
3789 if ( (nodnr = (int *)malloc( (int)(anz->nmax+1) * sizeof(int))) == NULL )
3790 { printf(" ERROR: malloc in drawSurfNodes_plot(), nodnr\n\n") ; return;}
3791 for (i=0; i<=anz->nmax; i++ ) nodnr[i]=0;
3792
3793 for (i=0; i<num; i++ )
3794 {
3795 switch(face[name[i]].type)
3796 {
3797 case 7:
3798 sum=3;
3799 break;
3800 case 8:
3801 sum=6;
3802 break;
3803 case 9:
3804 sum=4;
3805 break;
3806 case 10:
3807 sum=8;
3808 break;
3809 case 11:
3810 sum=1;
3811 break;
3812 case 12:
3813 sum=3;
3814 break;
3815 default:
3816 sum=0;
3817 break;
3818 }
3819 for (n=0; n<sum; n++) nodnr[face[name[i]].nod[n]]=face[name[i]].nod[n];
3820 }
3821
3822 /* draw all selected nodes */
3823 glColor3d ( 0.5,0.5,0. );
3824 glLoadName('n');
3825 glPointSize(1);
3826 for (i=0; i<=anz->nmax; i++ )
3827 {
3828 if(nodnr[i])
3829 {
3830 glPushName(nodnr[i]);
3831 glBegin ( GL_POINTS );
3832 glVertex3dv ( &node[nodnr[i]].nx );
3833 glEnd();
3834 glPopName();
3835 }
3836 }
3837 glLoadName(-1);
3838 free(nodnr);
3839 }
3840
3841
drawPoints_plot(int num,int * name,Points * point,int col,char type,int width)3842 void drawPoints_plot( int num, int *name, Points *point , int col, char type, int width)
3843 {
3844 int i;
3845
3846 if(width>0) glPointSize(width);
3847 else glPointSize(4);
3848
3849 glColor3f ( entitycol[col].r, entitycol[col].g, entitycol[col].b );
3850 glLoadName('p');
3851 for (i=0; i<num; i++ )
3852 {
3853 glPushName(name[i]);
3854 glBegin ( GL_POINTS );
3855 glVertex3d ( point[name[i]].px, point[name[i]].py, point[name[i]].pz );
3856 glEnd();
3857 glPopName();
3858 }
3859 glLoadName(-1);
3860
3861 if(type=='a')
3862 {
3863 for (i=0; i<num; i++ )
3864 text( point[name[i]].px, point[name[i]].py, point[name[i]].pz, point[name[i]].name, glut_font[draw_font] );
3865 }
3866 }
3867
3868
drawLines_plot(int num,int * name,Lines * line,Points * point,int col,char type,int width)3869 void drawLines_plot( int num, int *name, Lines *line , Points *point, int col, char type, int width)
3870 {
3871 int i,n;
3872 int bias_fbd;
3873 double x,y,z;
3874
3875 int anz_p=0;
3876 int *pnt_indx=NULL;
3877
3878 if(width<1) width=1;
3879 glLineWidth(width);
3880 glPointSize(width+2);
3881 glColor3f ( entitycol[col].r, entitycol[col].g, entitycol[col].b );
3882 glLoadName('l');
3883 for (i=0; i<num; i++ )
3884 {
3885 glPushName(name[i]);
3886 glBegin ( GL_LINE_STRIP );
3887 for (n=0; n<line[name[i]].nip; n+=3)
3888 {
3889 glVertex3dv( &line[name[i]].ip[n]);
3890 }
3891 glEnd();
3892 if ((type=='n')||(type=='c'))
3893 {
3894 glBegin ( GL_POINTS );
3895 for (n=0; n<line[name[i]].nip; n+=3)
3896 {
3897 glVertex3dv( &line[name[i]].ip[n]);
3898 }
3899 glEnd();
3900 }
3901 if ((type=='p')||(type=='c'))
3902 {
3903 if ( (pnt_indx = (int *)realloc( pnt_indx, (anz_p+2) * sizeof(int)))== NULL )
3904 printf("\n\n ERROR: realloc failure in drawLines_plot\n\n" );
3905 pnt_indx[anz_p++]=line[name[i]].p1;
3906 pnt_indx[anz_p++]=line[name[i]].p2;
3907 }
3908 if ((type=='a')||(type=='d')||(type=='c'))
3909 {
3910 x =point[line[name[i]].p1].px;
3911 y =point[line[name[i]].p1].py;
3912 z =point[line[name[i]].p1].pz;
3913 x+=point[line[name[i]].p2].px;
3914 y+=point[line[name[i]].p2].py;
3915 z+=point[line[name[i]].p2].pz;
3916 x*=.5;
3917 y*=.5;
3918 z*=.5;
3919 if (type=='a') sprintf( buffer, "%s", line[name[i]].name);
3920 if ((type=='d')||(type=='c'))
3921 {
3922 /* load bias and division in buffer */
3923 if(line[name[i]].div ==1) sprintf(buffer, "%d", line[name[i]].div);
3924 else if(line[name[i]].bias!=1.)
3925 {
3926 bias_fbd=getBias_fbd(name[i],line);
3927 if(line[name[i]].div<10) sprintf(buffer, "%d0%d", bias_fbd, line[name[i]].div);
3928 //else if(line[name[i]].div<100) sprintf(buffer, "%d%d", bias_fbd, line[name[i]].div);
3929 //else
3930 sprintf(buffer, "%d#%d", bias_fbd, line[name[i]].div);
3931 }
3932 else sprintf(buffer, "%d", line[name[i]].div);
3933 }
3934 text( x, y, z, buffer, glut_font[draw_font] );
3935 }
3936 glPopName();
3937 }
3938 glLoadName(-1);
3939
3940 if(anz_p) drawPoints_plot( anz_p, pnt_indx, point, col, 0, width+4 );
3941 }
3942
3943
drawShapes_plot(int num,int * name,Shapes * shape,Points * point,int col,char type)3944 void drawShapes_plot( int num, int *name, Shapes *shape, Points *point, int col, char type)
3945 {
3946 register int i,j,k,n;
3947 static GLint ipuf[2];
3948 double cx,cy,cz;
3949
3950 glLineWidth(1.);
3951
3952 glLoadName('h');
3953
3954 if(type=='i')
3955 {
3956 /* so far not usable, *pgn not filled */
3957 glGetIntegerv( GL_CULL_FACE, ipuf );
3958 if( ipuf[0] == GL_TRUE ) glDisable ( GL_CULL_FACE );
3959 glEnable( GL_LIGHTING );
3960 setMaterial_rgb(col, 1);
3961
3962 for (i=0; i<num; i++)
3963 {
3964 glPushName(name[i]);
3965 n=0;
3966 while((shape[name[i]].npgn-n))
3967 {
3968 n++; /* jump over the polygon token (ie.GL_POLYGON_TOKEN) */
3969 j=shape[name[i]].pgn[n++];
3970 glBegin ( GL_POLYGON );
3971 glNormal3dv (&shape[name[i]].pgn[n]); n+=3;
3972 for(k=0; k<j; k++)
3973 {
3974 glVertex3dv (&shape[name[i]].pgn[n]); n+=3;
3975 }
3976 glEnd();
3977 }
3978 sprintf( buffer, "%s", shape[name[i]].name );
3979 cx=cy=cz=0.;
3980 for(j=0; j<3; j++)
3981 {
3982 cx+=point[shape[name[i]].p[j]].px;
3983 cy+=point[shape[name[i]].p[j]].py;
3984 cz+=point[shape[name[i]].p[j]].pz;
3985 }
3986 cx/=3.;
3987 cy/=3.;
3988 cz/=3.;
3989 text( cx,cy,cz, buffer, glut_font[draw_font] );
3990 glPopName();
3991 }
3992 glDisable( GL_LIGHTING );
3993 if( ipuf[0] == GL_TRUE ) glEnable ( GL_CULL_FACE );
3994 }
3995 else
3996 {
3997 glColor3f ( entitycol[col].r, entitycol[col].g, entitycol[col].b );
3998 for (i=0; i<num; i++)
3999 {
4000 if(shape[name[i]].type==0)
4001 {
4002 glPushName(name[i]);
4003 glBegin ( GL_LINE_LOOP );
4004 glVertex3dv ( &point[shape[name[i]].p[0]].px);
4005 glVertex3dv ( &point[shape[name[i]].p[1]].px);
4006 glVertex3dv ( &point[shape[name[i]].p[2]].px);
4007 glEnd();
4008 sprintf( buffer, "%s", shape[name[i]].name );
4009 cx=cy=cz=0.;
4010 for(j=0; j<3; j++)
4011 {
4012 cx+=point[shape[name[i]].p[j]].px;
4013 cy+=point[shape[name[i]].p[j]].py;
4014 cz+=point[shape[name[i]].p[j]].pz;
4015 }
4016 cx/=3.;
4017 cy/=3.;
4018 cz/=3.;
4019 text( cx,cy,cz, buffer, glut_font[draw_font] );
4020 glPopName();
4021 }
4022 else if(shape[name[i]].type==1)
4023 {
4024 glPushName(name[i]);
4025 glBegin ( GL_LINES );
4026 glVertex3dv ( &point[shape[name[i]].p[0]].px);
4027 glVertex3dv ( &point[shape[name[i]].p[1]].px);
4028 glEnd();
4029 sprintf( buffer, "%s", shape[name[i]].name );
4030 cx=cy=cz=0.;
4031 for(j=0; j<2; j++)
4032 {
4033 cx+=point[shape[name[i]].p[j]].px;
4034 cy+=point[shape[name[i]].p[j]].py;
4035 cz+=point[shape[name[i]].p[j]].pz;
4036 }
4037 cx/=2.;
4038 cy/=2.;
4039 cz/=2.;
4040 text( cx,cy,cz, buffer, glut_font[draw_font] );
4041 glPopName();
4042 }
4043 else if(shape[name[i]].type==2)
4044 {
4045 glPushName(name[i]);
4046 glBegin ( GL_LINE_LOOP );
4047 glVertex3dv ( &point[shape[name[i]].p[2]].px);
4048 glVertex3dv ( &point[shape[name[i]].p[0]].px);
4049 glVertex3dv ( &point[shape[name[i]].p[1]].px);
4050 glVertex3dv ( &point[shape[name[i]].p[3]].px);
4051 glEnd();
4052 sprintf( buffer, "%s", shape[name[i]].name );
4053 cx=cy=cz=0.;
4054 for(j=0; j<2; j++)
4055 {
4056 cx+=point[shape[name[i]].p[j]].px;
4057 cy+=point[shape[name[i]].p[j]].py;
4058 cz+=point[shape[name[i]].p[j]].pz;
4059 }
4060 cx/=2.;
4061 cy/=2.;
4062 cz/=2.;
4063 text( cx,cy,cz, buffer, glut_font[draw_font] );
4064 glPopName();
4065 }
4066 else if(shape[name[i]].type==3)
4067 {
4068 glPushName(name[i]);
4069 glBegin ( GL_LINE_STRIP );
4070 glVertex3dv ( &point[shape[name[i]].p[1]].px);
4071 glVertex3dv ( &point[shape[name[i]].p[2]].px);
4072 glVertex3dv ( &point[shape[name[i]].p[4]].px);
4073 glVertex3dv ( &point[shape[name[i]].p[5]].px);
4074
4075 glVertex3dv ( &point[shape[name[i]].p[1]].px);
4076 glVertex3dv ( &point[shape[name[i]].p[6]].px);
4077 glVertex3dv ( &point[shape[name[i]].p[4]].px);
4078 glVertex3dv ( &point[shape[name[i]].p[3]].px);
4079 glVertex3dv ( &point[shape[name[i]].p[1]].px);
4080
4081 glVertex3dv ( &point[shape[name[i]].p[2]].px);
4082 glVertex3dv ( &point[shape[name[i]].p[3]].px);
4083 glVertex3dv ( &point[shape[name[i]].p[5]].px);
4084 glVertex3dv ( &point[shape[name[i]].p[6]].px);
4085 glVertex3dv ( &point[shape[name[i]].p[2]].px);
4086 glEnd();
4087 sprintf( buffer, "%s", shape[name[i]].name );
4088 cx=cy=cz=0.;
4089 for(j=1; j<7; j++)
4090 {
4091 cx+=point[shape[name[i]].p[j]].px;
4092 cy+=point[shape[name[i]].p[j]].py;
4093 cz+=point[shape[name[i]].p[j]].pz;
4094 }
4095 cx/=6.;
4096 cy/=6.;
4097 cz/=6.;
4098 text( cx,cy,cz, buffer, glut_font[draw_font] );
4099 glPopName();
4100 }
4101 else if(shape[name[i]].type==5)
4102 {
4103 glPushName(name[i]);
4104 glBegin ( GL_LINE_STRIP );
4105 glVertex3dv ( &point[shape[name[i]].p[3]].px);
4106 glVertex3dv ( &point[shape[name[i]].p[2]].px);
4107 glVertex3dv ( &point[shape[name[i]].p[0]].px);
4108 glVertex3dv ( &point[shape[name[i]].p[1]].px);
4109 glEnd();
4110 sprintf( buffer, "%s", shape[name[i]].name );
4111 cx=cy=cz=0.;
4112 for(j=0; j<2; j++)
4113 {
4114 cx+=point[shape[name[i]].p[j]].px;
4115 cy+=point[shape[name[i]].p[j]].py;
4116 cz+=point[shape[name[i]].p[j]].pz;
4117 }
4118 cx/=2.;
4119 cy/=2.;
4120 cz/=2.;
4121 text( cx,cy,cz, buffer, glut_font[draw_font] );
4122 glPopName();
4123 }
4124 }
4125 }
4126 glLoadName(-1);
4127 }
4128
4129
drawSurfs_plot(int num,int * name,Gsur * surf,Lcmb * lcmb,Lines * line,Points * point,int col,char type)4130 void drawSurfs_plot( int num, int *name, Gsur *surf, Lcmb *lcmb, Lines *line , Points *point, int col, char type)
4131 {
4132 register int i,j,k,n;
4133 register int nl,nc;
4134 static GLint ipuf[2];
4135
4136 glLineWidth(1.);
4137
4138 glLoadName('s');
4139
4140 if(type=='i')
4141 {
4142 glGetIntegerv( GL_CULL_FACE_MODE, ipuf );
4143 if ( ipuf[0] == GL_FRONT ) glEnable ( GL_CULL_FACE );
4144 else glDisable ( GL_CULL_FACE );
4145 glEnable( GL_LIGHTING );
4146 setMaterial_rgb(col, 1);
4147
4148 for (i=0; i<num; i++)
4149 {
4150 /* printf("surf:%s w:%lf xyz: %lf %lf %lf\n",surf[name[i]].name,scale->w,scale->x,scale->y,scale->z); */
4151 glPushName(name[i]);
4152 n=0;
4153 if(surf[name[i]].npgn>0) while((surf[name[i]].npgn-n))
4154 {
4155 n++; /* jump over the polygon token (ie.GL_POLYGON_TOKEN) */
4156 j=surf[name[i]].pgn[n++];
4157 glBegin ( GL_POLYGON );
4158 glNormal3dv (&surf[name[i]].pgn[n]); n+=3;
4159 for(k=0; k<j; k++)
4160 {
4161 /* printf("%d %lf %lf %lf\n", k,surf[name[i]].pgn[n],surf[name[i]].pgn[n+1],surf[name[i]].pgn[n+2]); */
4162 glVertex3dv (&surf[name[i]].pgn[n]); n+=3;
4163 }
4164 glEnd();
4165 }
4166 glPopName();
4167 }
4168 glDisable( GL_LIGHTING );
4169 if( ipuf[0] == GL_TRUE ) glEnable ( GL_CULL_FACE );
4170 }
4171 else
4172 {
4173 glColor3f ( entitycol[col].r, entitycol[col].g, entitycol[col].b );
4174 for (i=0; i<num; i++)
4175 {
4176 glPushName(name[i]);
4177 for (j=0; j<surf[name[i]].nl; j++ )
4178 {
4179 nl=surf[name[i]].l[j];
4180 if (surf[name[i]].typ[j]=='l')
4181 {
4182 glBegin ( GL_LINE_STRIP );
4183 for (n=0; n<line[nl].nip; n+=3)
4184 {
4185 glVertex3dv ( &line[nl].ip[n]);
4186 }
4187 glEnd();
4188 }
4189 else
4190 {
4191 for (k=0; k<lcmb[nl].nl; k++ )
4192 {
4193 nc=lcmb[nl].l[k];
4194 glBegin ( GL_LINE_STRIP );
4195 for (n=0; n<line[nc].nip; n+=3)
4196 {
4197 glVertex3dv ( &line[nc].ip[n]);
4198 }
4199 glEnd();
4200 }
4201 }
4202 }
4203
4204 if(type=='a')
4205 {
4206 sprintf( buffer, "%s", surf[name[i]].name );
4207 text( (surf[name[i]].cx-scale->x)/scale->w,
4208 (surf[name[i]].cy-scale->y)/scale->w,
4209 (surf[name[i]].cz-scale->z)/scale->w, buffer, glut_font[draw_font] );
4210 }
4211 glPopName();
4212 }
4213 }
4214 glLoadName(-1);
4215 }
4216
4217
drawBodys_plot(int num,int * name,Gbod * body,Gsur * surf,Lcmb * lcmb,Lines * line,Points * point,int col,char type)4218 void drawBodys_plot( int num, int *name, Gbod *body, Gsur *surf, Lcmb *lcmb, Lines *line , Points *point, int col, char type)
4219 {
4220 int i,j,k,n, b, s;
4221 int nl,nc;
4222
4223 glLineWidth(1.);
4224 glColor3f ( entitycol[col].r, entitycol[col].g, entitycol[col].b );
4225 glLoadName('b');
4226 for (i=0; i<num; i++)
4227 {
4228 glPushName(name[i]);
4229 for (b=0; b<body[name[i]].ns; b++ )
4230 {
4231 s=body[name[i]].s[b];
4232 for (j=0; j<surf[s].nl; j++ )
4233 {
4234 nl=surf[s].l[j];
4235 if (surf[s].typ[j]=='l')
4236 {
4237 glBegin ( GL_LINE_STRIP );
4238 for (n=0; n<line[nl].nip; n+=3)
4239 {
4240 glVertex3dv
4241 ( &line[nl].ip[n]);
4242 }
4243 glEnd();
4244 }
4245 else
4246 {
4247 for (k=0; k<lcmb[nl].nl; k++ )
4248 {
4249 nc=lcmb[nl].l[k];
4250 glBegin ( GL_LINE_STRIP );
4251 for (n=0; n<line[nc].nip; n+=3)
4252 {
4253 glVertex3dv
4254 ( &line[nc].ip[n]);
4255 }
4256 glEnd();
4257 }
4258 }
4259 }
4260 if(type=='a')
4261 {
4262 sprintf( buffer, "%s", body[name[i]].name );
4263 text( (body[name[i]].cx-scale->x)/scale->w,
4264 (body[name[i]].cy-scale->y)/scale->w,
4265 (body[name[i]].cz-scale->z)/scale->w, buffer, glut_font[draw_font] );
4266 }
4267 }
4268 glPopName();
4269 }
4270 glLoadName(-1);
4271
4272 }
4273
drawNurl_plot(int num,int * name,int col,char type,int width,int pickflag)4274 void drawNurl_plot( int num, int *name, int col, char type, int width, int pickflag)
4275 {
4276 int i, nr;
4277 int mode[2];
4278 GLfloat NurlFillFlag;
4279 double tx, ty, tz;
4280
4281 if(width>0) glLineWidth(width);
4282 else glLineWidth(1.);
4283
4284 glGetIntegerv( GL_POLYGON_MODE, mode );
4285 if ( mode[1] == GL_FILL )
4286 NurlFillFlag=GLU_FILL;
4287 else
4288 NurlFillFlag=GLU_OUTLINE_POLYGON;
4289
4290 glColor3f ( entitycol[col].r, entitycol[col].g, entitycol[col].b );
4291 glLoadName('L');
4292
4293 for (nr=0; nr<num; nr++ )
4294 {
4295 if((nurbl[name[nr]].u_exp<gl_max_eval_order)&&(nurbl[name[nr]].endFlag==1))
4296 {
4297 /*
4298 printf("u_nknt:%d u_stride:%d exp:%d typ:%d %d\n", nurbl[name[nr]].u_nknt, nurbl[name[nr]].u_stride, nurbl[name[nr]].u_exp, nurbl[name[nr]].type, GL_MAP1_VERTEX_4);
4299 for(i=0; i<nurbl[name[nr]].u_nknt; i++) printf("uknt[%d]:%f\n", i, nurbl[name[nr]].uknt[i]);
4300 for(i=0; i<(nurbl[name[nr]].u_npnt*nurbl[name[nr]].u_stride); i++) { if(i%4==0) printf("\n"); printf(" ctlarray[%d]:%f", i, nurbl[name[nr]].ctlarray[i]); }
4301 */
4302
4303 /* for NurbsErrorCallback */
4304 if(printFlag)
4305 {
4306 current_nurbs=-name[nr]-1;
4307 gluNurbsCallback(nurbl[name[nr]].Nurb, GLU_ERROR, (void*)NurbsErrorCallback);
4308 }
4309
4310 gluNurbsProperty(nurbl[name[nr]].Nurb, GLU_CULLING, GL_TRUE);
4311 gluNurbsProperty(nurbl[name[nr]].Nurb, GLU_DISPLAY_MODE, NurlFillFlag);
4312 if(pickflag==PICK) gluNurbsProperty(nurbl[name[nr]].Nurb, GLU_SAMPLING_TOLERANCE, NURS_TOLERANCE_PICK );
4313 else gluNurbsProperty(nurbl[name[nr]].Nurb, GLU_SAMPLING_TOLERANCE, NURS_TOLERANCE );
4314
4315 glPushName(name[nr]);
4316 gluBeginCurve(nurbl[name[nr]].Nurb);
4317 gluNurbsCurve(nurbl[name[nr]].Nurb,
4318 nurbl[name[nr]].u_nknt,
4319 nurbl[name[nr]].uknt,
4320 nurbl[name[nr]].u_stride,
4321 nurbl[name[nr]].ctlarray,
4322 nurbl[name[nr]].u_exp+1,
4323 nurbl[name[nr]].type);
4324 gluEndCurve(nurbl[name[nr]].Nurb);
4325
4326 if(type=='a')
4327 {
4328 tx=ty=tz=0.; for (i=0; i<nurbl[name[nr]].u_npnt; i++)
4329 {
4330 tx+= point[nurbl[name[nr]].ctlpnt[i]].px ;
4331 ty+= point[nurbl[name[nr]].ctlpnt[i]].py ;
4332 tz+= point[nurbl[name[nr]].ctlpnt[i]].pz ;
4333 }
4334 tx/=nurbl[name[nr]].u_npnt;
4335 ty/=nurbl[name[nr]].u_npnt;
4336 tz/=nurbl[name[nr]].u_npnt;
4337 text( tx,ty,tz, nurbl[name[nr]].name, glut_font[draw_font] );
4338 }
4339 glPopName();
4340 }
4341 else
4342 {
4343 if(printFlag) printf("ERROR: Nurbl[%d]:%s of order:%d is not supported. Only %d is supported by the gl-lib.\n", nr, nurbl[name[nr]].name, nurbl[name[nr]].u_exp+1, gl_max_eval_order);
4344
4345 }
4346 }
4347 glLoadName(-1);
4348 }
4349
4350
4351
4352 /* the nurbs was evaluated and drawn into a back-buffer, the contents of the back-buffer will be displayed */
4353
drawNurs_plot(int num,int * name,int col,char type,int pickflag)4354 void drawNurs_plot( int num, int *name, int col, char type, int pickflag)
4355 {
4356 int nr;
4357 int mode[2];
4358 GLfloat ustep,vstep;
4359 GLfloat NursFillFlag;
4360 static GLint ipuf[2];
4361
4362 glLineWidth(1.);
4363
4364 /* evaluate and draw into the back-buffer */
4365 glGetIntegerv( GL_POLYGON_MODE, mode );
4366 if ( mode[1] == GL_FILL )
4367 NursFillFlag=GLU_FILL;
4368 else
4369 NursFillFlag=GLU_OUTLINE_POLYGON;
4370
4371 glEnable( GL_LIGHTING );
4372 glEnable(GL_AUTO_NORMAL);
4373 /* glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, lmodel_twoside); */
4374
4375 glLoadName('S');
4376
4377 glGetIntegerv( GL_CULL_FACE_MODE, ipuf );
4378 glDisable ( GL_CULL_FACE );
4379 setMaterial_rgb(col, 1);
4380
4381 for (nr=0; nr<num; nr++ )
4382 {
4383 if(printFlag)
4384 printf("nurs:%s\n",nurbs[name[nr]].name);
4385 if ((nurbs[name[nr]].u_exp<gl_max_eval_order)&&(nurbs[name[nr]].v_exp<gl_max_eval_order)&&(nurbs[name[nr]].endFlag==1)&&(nurbs[name[nr]].name != (char *)NULL))
4386 {
4387 /* for NurbsErrorCallback */
4388 if(printFlag)
4389 {
4390 current_nurbs=name[nr];
4391 gluNurbsCallback(nurbs[name[nr]].Nurb, GLU_ERROR, (void*)NurbsErrorCallback);
4392 }
4393 gluNurbsProperty(nurbs[name[nr]].Nurb, GLU_DISPLAY_MODE, NursFillFlag);
4394 gluNurbsProperty(nurbs[name[nr]].Nurb, GLU_CULLING, GL_TRUE);
4395 gluNurbsProperty(nurbs[name[nr]].Nurb, GLU_SAMPLING_METHOD, GLU_DOMAIN_DISTANCE );
4396
4397 /* minimum resolution */
4398 ustep=nurbs[name[nr]].u_exp*4./(nurbs[name[nr]].uknt[nurbs[name[nr]].u_nknt-1]-nurbs[name[nr]].uknt[0]);
4399 vstep=nurbs[name[nr]].v_exp*4./(nurbs[name[nr]].vknt[nurbs[name[nr]].v_nknt-1]-nurbs[name[nr]].vknt[0]);
4400
4401 gluNurbsProperty(nurbs[name[nr]].Nurb, GLU_U_STEP, ustep );
4402 gluNurbsProperty(nurbs[name[nr]].Nurb, GLU_V_STEP, vstep );
4403
4404 glPushName(name[nr]);
4405 gluBeginSurface(nurbs[name[nr]].Nurb);
4406 gluNurbsSurface(nurbs[name[nr]].Nurb,
4407 nurbs[name[nr]].u_nknt, nurbs[name[nr]].uknt,
4408 nurbs[name[nr]].v_nknt, nurbs[name[nr]].vknt,
4409 nurbs[name[nr]].u_stride, nurbs[name[nr]].v_stride,
4410 nurbs[name[nr]].ctlarray,
4411 nurbs[name[nr]].u_exp+1, nurbs[name[nr]].v_exp+1,
4412 nurbs[name[nr]].type);
4413 gluEndSurface(nurbs[name[nr]].Nurb);
4414 glPopName();
4415 }
4416 else
4417 {
4418 if(printFlag) printf("ERROR: Nurbs[%d]:%s of order:%d %d is not supported. Only %d is supported by the gl-lib.\n", nr, nurbs[name[nr]].name, nurbs[name[nr]].u_exp+1, nurbs[name[nr]].v_exp+1, gl_max_eval_order);
4419
4420 }
4421 }
4422 glLoadName(-1);
4423
4424 glDisable(GL_AUTO_NORMAL);
4425 glDisable( GL_LIGHTING );
4426
4427 if(type=='a')
4428 {
4429 for (nr=0; nr<num; nr++ )
4430 {
4431 text( nurbs[name[nr]].tx,nurbs[name[nr]].ty,nurbs[name[nr]].tz, nurbs[name[nr]].name, glut_font[draw_font] );
4432 }
4433 }
4434
4435 /* resore the original cull mode */
4436 if ( ipuf[0] == GL_BACK ) glCullFace ( GL_BACK );
4437 if ( ipuf[0] == GL_FRONT ) glCullFace ( GL_FRONT );
4438
4439 }
4440