1 /***********************************************************************
2 *
3 * ***** *** ***
4 * * * * * *
5 * * *** ***
6 * * * * * *
7 * ***** *** ***
8 *
9 * A FREE Finite Elements Analysis Program in ANSI C for the Windows OS.
10 *
11 * Composed and edited and copyright by
12 * Professor Dr.-Ing. Frank Rieg, University of Bayreuth, Germany
13 *
14 * eMail:
15 * frank.rieg@uni-bayreuth.de
16 * dr.frank.rieg@t-online.de
17 *
18 * V15.0 November 18, 2015
19 *
20 * This program is free software; you can redistribute it and/or modify
21 * it under the terms of the GNU General Public License as published by
22 * the Free Software Foundation; either version 2, or (at your option)
23 * any later version.
24 *
25 * This program is distributed in the hope that it will be useful,
26 * but WITHOUT ANY WARRANTY; without even the implied warranty of
27 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
28 * GNU General Public License for more details.
29 *
30 * You should have received a copy of the GNU General Public License
31 * along with this program; see the file COPYING. If not, write to
32 * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
33 ***********************************************************************/
34 /***********************************************************************
35 * Compilerunit m13.c fuer Z88O enthaelt:
36 * fsca88 - Farbskala Spannungen und Verschiebungen
37 * malk88 - Knotennummern malen
38 * tet588 - Wireframe
39 * fsrb88 - Farbskala Randbedingungen
40 * 2.12.2015 Rieg
41 ***********************************************************************/
42 /***********************************************************************
43 * Windows
44 ***********************************************************************/
45 #ifdef FR_WIN
46 #include <z88o.h>
47 #include <windows.h>
48 #include <commctrl.h>
49 #include <gl\gl.h>
50 #include <stdio.h>
51 #endif
52
53 /***********************************************************************
54 * Leseformate
55 ***********************************************************************/
56 #ifdef FR_XINT
57 #define PDB "%d "
58 #define PD "%d"
59 #endif
60
61 #ifdef FR_XLONG
62 #define PDB "%ld "
63 #define PD "%ld"
64 #endif
65
66 #ifdef FR_XLOLO
67 #define PDB "%lld "
68 #define PD "%lld"
69 #endif
70
71 #ifdef FR_XDOUB
72 #define PG "%+#10.2lE"
73 #endif
74
75 #ifdef FR_XQUAD
76 #define PG "%Lg"
77 #endif
78
79 /***********************************************************************
80 * Font- Structure GLFONT
81 ***********************************************************************/
82 typedef struct
83 {
84 GLuint base; /* DisplayList Nr.erstes Zeichen */
85 int widths[256]; /* Zeichenweite in Pixels */
86 int height; /* Zeichenhoehe */
87 } GLFONT;
88
89 /***********************************************************************
90 * Functions
91 ***********************************************************************/
92 GLFONT * FontCreate(HDC hdc,const char *typeface,
93 int height,int weight,DWORD italic);
94 void FontPuts(GLFONT *font, const char *cs);
95 void FontDelete(GLFONT *font);
96
97 /***********************************************************************
98 * fsca88 zeichnet die Farbskala fuer die Spannungen und Verschiebungen
99 ***********************************************************************/
fsca88(void)100 int fsca88(void)
101 {
102 extern GLFONT *Font;
103
104 extern FR_DOUBLE xm;
105
106 extern GLfloat rot[];
107 extern GLfloat gruen[];
108 extern GLfloat blau[];
109
110 extern FR_DOUBLE fspa[];
111
112 extern FR_INT4 LANG,igpanz,isflag;
113
114 extern int if3d;
115
116 char cstring[80];
117
118 /*----------------------------------------------------------------------
119 * fsca88 zeichnet die Farbskala fuer die Spannungen und Verschiebungen
120 *---------------------------------------------------------------------*/
121 glColor3f(rot[1],gruen[1],blau[1]);
122 glRectd(xm+4,48.0,xm+12,40.0);
123 glColor3f(1.0f,0.5f,0.0f);
124 glRasterPos3d(xm+16,44.0,0.00);
125 sprintf(cstring,PG " ~ " PG,fspa[1],fspa[2]);
126 FontPuts(Font,cstring);
127
128 glColor3f(rot[2],gruen[2],blau[2]);
129 glRectd(xm+4,40.0,xm+12,32.0);
130 glColor3f(1.0f,0.5f,0.0f);
131 glRasterPos3d(xm+16,36.0,0.00);
132 sprintf(cstring,PG " ~ " PG,fspa[2],fspa[3]);
133 FontPuts(Font,cstring);
134
135 glColor3f(rot[3],gruen[3],blau[3]);
136 glRectd(xm+4,32.0,xm+12,24.0);
137 glColor3f(1.0f,0.5f,0.0f);
138 glRasterPos3d(xm+16,28.0,0.00);
139 sprintf(cstring,PG " ~ " PG,fspa[3],fspa[4]);
140 FontPuts(Font,cstring);
141
142 glColor3f(rot[4],gruen[4],blau[4]);
143 glRectd(xm+4,24.0,xm+12,16.0);
144 glColor3f(1.0f,0.5f,0.0f);
145 glRasterPos3d(xm+16,20.0,0.00);
146 sprintf(cstring,PG " ~ " PG,fspa[4],fspa[5]);
147 FontPuts(Font,cstring);
148
149 glColor3f(rot[5],gruen[5],blau[5]);
150 glRectd(xm+4,16.0,xm+12,8.0);
151 glColor3f(1.0f,0.5f,0.0f);
152 glRasterPos3d(xm+16,12.0,0.00);
153 sprintf(cstring,PG " ~ " PG,fspa[5],fspa[6]);
154 FontPuts(Font,cstring);
155
156 glColor3f(rot[6],gruen[6],blau[6]);
157 glRectd(xm+4,8.0,xm+12,0.0);
158 glColor3f(1.0f,0.5f,0.0f);
159 glRasterPos3d(xm+16,4.0,0.00);
160 sprintf(cstring,PG " ~ " PG,fspa[6],fspa[7]);
161 FontPuts(Font,cstring);
162
163 glColor3f(rot[7],gruen[7],blau[7]);
164 glRectd(xm+4,0.0,xm+12,-8.0);
165 glColor3f(1.0f,0.5f,0.0f);
166 glRasterPos3d(xm+16,-4.0,0.00);
167 sprintf(cstring,PG " ~ " PG,fspa[7],fspa[8]);
168 FontPuts(Font,cstring);
169
170 glColor3f(rot[8],gruen[8],blau[8]);
171 glRectd(xm+4,-8.0,xm+12,-16.0);
172 glColor3f(1.0f,0.5f,0.0f);
173 glRasterPos3d(xm+16,-12.0,0.00);
174 sprintf(cstring,PG " ~ " PG,fspa[8],fspa[9]);
175 FontPuts(Font,cstring);
176
177 glColor3f(rot[9],gruen[9],blau[9]);
178 glRectd(xm+4,-16.0,xm+12,-24.0);
179 glColor3f(1.0f,0.5f,0.0f);
180 glRasterPos3d(xm+16,-20.0,0.00);
181 sprintf(cstring,PG " ~ " PG,fspa[9],fspa[10]);
182 FontPuts(Font,cstring);
183
184 glColor3f(rot[10],gruen[10],blau[10]);
185 glRectd(xm+4,-24.0,xm+12,-32.0);
186 glColor3f(1.0f,0.5f,0.0f);
187 glRasterPos3d(xm+16,-28.0,0.00);
188 sprintf(cstring,PG " ~ " PG,fspa[10],fspa[11]);
189 FontPuts(Font,cstring);
190
191 glColor3f(rot[11],gruen[11],blau[11]);
192 glRectd(xm+4,-32.0,xm+12,-40.0);
193 glColor3f(1.0f,0.5f,0.0f);
194 glRasterPos3d(xm+16,-36.0,0.00);
195 sprintf(cstring,PG " ~ " PG,fspa[11],fspa[12]);
196 FontPuts(Font,cstring);
197
198 if(if3d == IDM_SHOWSPANN || if3d == IDM_SHOWGAUSS || if3d == IDM_SHOWGAUPU)
199 {
200 glColor3f(1.0f,0.5f,0.0f);
201 glRasterPos3d(xm+4,-44.0,0.00);
202 if(LANG == 1 && isflag == 0)strcpy(cstring,"keine V-Spannungen");
203 if(LANG == 2 && isflag == 0)strcpy(cstring,"no reduced Stresses");
204 if(LANG == 1 && isflag == 1)strcpy(cstring,"V-Spannungen (GEH)");
205 if(LANG == 2 && isflag == 1)strcpy(cstring,"v.Mises Stresses");
206 if(LANG == 1 && isflag == 2)strcpy(cstring,"V-Spannungen (NH)");
207 if(LANG == 2 && isflag == 2)strcpy(cstring,"principal Stresses");
208 if(LANG == 1 && isflag == 3)strcpy(cstring,"V-Spannungen (SH)");
209 if(LANG == 2 && isflag == 3)strcpy(cstring,"Tresca Stresses");
210 FontPuts(Font,cstring);
211 }
212
213 if(if3d == IDM_SHOWSPANN && isflag > 0)
214 {
215 glRasterPos3d(xm+4,-48.0,0.00);
216 if(LANG == 1)strcpy(cstring,"in den Eckknoten");
217 if(LANG == 2)strcpy(cstring,"in corner nodes");
218 FontPuts(Font,cstring);
219 }
220
221 if(if3d == IDM_SHOWGAUSS && isflag > 0)
222 {
223 glRasterPos3d(xm+4,-48.0,0.00);
224 if(LANG == 1)strcpy(cstring,"pro Element gemittelt");
225 if(LANG == 2)strcpy(cstring,"mean value per element");
226 FontPuts(Font,cstring);
227 }
228
229 if(if3d == IDM_SHOWGAUPU && isflag > 0)
230 {
231 glRasterPos3d(xm+4,-48.0,0.00);
232 if(LANG == 1)sprintf(cstring,"in " PD " Gausspunkten",igpanz);
233 if(LANG == 2)sprintf(cstring,"in " PD " Gauss points",igpanz);
234 FontPuts(Font,cstring);
235 }
236
237 if(if3d == IDM_SHOWVX)
238 {
239 glColor3f(1.0f,0.5f,0.0f);
240 glRasterPos3d(xm+4,-44.0,0.00);
241 if(LANG == 1)strcpy(cstring,"X-Verschiebungen");
242 if(LANG == 2)strcpy(cstring,"X Displacements");
243 FontPuts(Font,cstring);
244 }
245
246 if(if3d == IDM_SHOWVY)
247 {
248 glColor3f(1.0f,0.5f,0.0f);
249 glRasterPos3d(xm+4,-44.0,0.00);
250 if(LANG == 1)strcpy(cstring,"Y-Verschiebungen");
251 if(LANG == 2)strcpy(cstring,"Y Displacements");
252 FontPuts(Font,cstring);
253 }
254
255 if(if3d == IDM_SHOWVZ)
256 {
257 glColor3f(1.0f,0.5f,0.0f);
258 glRasterPos3d(xm+4,-44.0,0.00);
259 if(LANG == 1)strcpy(cstring,"Z-Verschiebungen");
260 if(LANG == 2)strcpy(cstring,"Z Displacements");
261 FontPuts(Font,cstring);
262 }
263
264 return 0;
265 }
266
267 /***********************************************************************
268 * malk88 zeichnet die Knotennummern
269 ***********************************************************************/
malk88(void)270 int malk88(void)
271 {
272 extern GLFONT *Font;
273
274 extern FR_DOUBLEAY xv;
275 extern FR_DOUBLEAY yv;
276 extern FR_DOUBLEAY zv;
277
278 extern FR_INT4 jkvon,jkbis,nkp,LANG;
279
280 extern GLfloat node_col[];
281
282 FR_INT4 i,ipuf;
283
284 char cstring[80];
285
286 /*----------------------------------------------------------------------
287 * und los
288 *---------------------------------------------------------------------*/
289 glColor3f(node_col[0],node_col[1],node_col[2]);
290
291 if(jkvon <= 0 || jkbis <= 0) return 0;
292
293 if(jkvon > nkp) jkvon= nkp;
294 if(jkbis > nkp) jkbis= nkp;
295
296 if(jkbis < jkvon)
297 {
298 ipuf= jkbis;
299 jkbis= jkvon;
300 jkvon= ipuf;
301 }
302
303 for(i= jkvon; i <= jkbis;i++)
304 {
305 glRasterPos3d(xv[i],yv[i],zv[i]);
306 ltoa(i,cstring,10);
307 FontPuts(Font,cstring);
308 }
309
310 return 0;
311 }
312
313 /***********************************************************************
314 * hier beginnt Function tet588: reines FE Netz
315 ***********************************************************************/
tet588(void)316 int tet588(void)
317 {
318 extern GLFONT *Font;
319
320 extern FR_DOUBLEAY xv;
321 extern FR_DOUBLEAY yv;
322 extern FR_DOUBLEAY zv;
323
324 extern FR_INT4AY ityp;
325 extern FR_INT4AY koi;
326 extern FR_INT4AY koffs;
327
328 extern FR_INT4 ne,jevon,jebis;
329
330 extern GLfloat elem_col[],hide_col[];
331
332 FR_DOUBLE xla,yla,zla;
333
334 FR_INT4 i,j,k,iflag;
335
336 extern int iflabe;
337
338 FR_INT4 ipuf;
339
340 char cstring[80];
341
342 /***********************************************************************
343 * jevon und jebis checken
344 ***********************************************************************/
345 if(jevon > ne) jevon= ne;
346 if(jebis > ne) jebis= ne;
347
348 if(jebis < jevon)
349 {
350 ipuf= jebis;
351 jebis= jevon;
352 jevon= ipuf;
353 }
354
355 /***********************************************************************
356 * Schleife ueber alle Elemente
357 ***********************************************************************/
358 for (i= 1; i <= ne; i++)
359 {
360 glColor3f(hide_col[0],hide_col[1],hide_col[2]);
361 iflag= 0;
362 if(iflabe == IDM_ELEMENTE || iflabe == IDM_LALLES)
363 if(i >= jevon && i <= jebis) iflag= 1;
364
365 /*----------------------------------------------------------------------
366 * Stab 4 u. 9, Balken 2 und 13, Welle 5 & Balken 25
367 *---------------------------------------------------------------------*/
368 if(ityp[i] == 4 || ityp[i] == 9 ||
369 ityp[i] == 2 || ityp[i] == 13 ||
370 ityp[i] == 5 || ityp[i] == 25)
371 {
372 if(iflag)
373 {
374 glColor3f(elem_col[0],elem_col[1],elem_col[2]);
375 xla= (xv[koi[koffs[i]]]+xv[koi[koffs[i]+1]])*0.5;
376 yla= (yv[koi[koffs[i]]]+yv[koi[koffs[i]+1]])*0.5;
377 zla= (zv[koi[koffs[i]]]+zv[koi[koffs[i]+1]])*0.5;
378 glRasterPos3d(xla,yla,zla);
379 ltoa(i,cstring,10);
380 FontPuts(Font,cstring);
381 }
382
383 glBegin(GL_LINES);
384 glVertex3d(xv[koi[koffs[i] ]],yv[koi[koffs[i] ]],zv[koi[koffs[i] ]]);
385 glVertex3d(xv[koi[koffs[i]+1]],yv[koi[koffs[i]+1]],zv[koi[koffs[i]+1]]);
386 glEnd();
387
388 } /* Stab 4 u. 9, Balken 2 und 13, Welle 5 & Balken 25 */
389
390
391 /*----------------------------------------------------------------------
392 * Scheibe 7, Torus 8 u. Platte 20 u. Schale 23
393 *---------------------------------------------------------------------*/
394 if(ityp[i] == 7 || ityp[i] == 8 || ityp[i] == 20 || ityp[i] == 23)
395 {
396 if(iflag)
397 {
398 glColor3f(elem_col[0],elem_col[1],elem_col[2]);
399 xla= (xv[koi[koffs[i]]]+xv[koi[koffs[i]+2]])*0.5;
400 yla= (yv[koi[koffs[i]]]+yv[koi[koffs[i]+2]])*0.5;
401 zla= (zv[koi[koffs[i]]]+zv[koi[koffs[i]+2]])*0.5;
402 glRasterPos3d(xla,yla,zla);
403 ltoa(i,cstring,10);
404 FontPuts(Font,cstring);
405 }
406
407 glBegin(GL_LINE_STRIP);
408 glVertex3d(xv[koi[koffs[i] ]],yv[koi[koffs[i] ]],zv[koi[koffs[i] ]]);
409 glVertex3d(xv[koi[koffs[i]+4]],yv[koi[koffs[i]+4]],zv[koi[koffs[i]+4]]);
410 glVertex3d(xv[koi[koffs[i]+1]],yv[koi[koffs[i]+1]],zv[koi[koffs[i]+1]]);
411 glVertex3d(xv[koi[koffs[i]+5]],yv[koi[koffs[i]+5]],zv[koi[koffs[i]+5]]);
412 glVertex3d(xv[koi[koffs[i]+2]],yv[koi[koffs[i]+2]],zv[koi[koffs[i]+2]]);
413 glVertex3d(xv[koi[koffs[i]+6]],yv[koi[koffs[i]+6]],zv[koi[koffs[i]+6]]);
414 glVertex3d(xv[koi[koffs[i]+3]],yv[koi[koffs[i]+3]],zv[koi[koffs[i]+3]]);
415 glVertex3d(xv[koi[koffs[i]+7]],yv[koi[koffs[i]+7]],zv[koi[koffs[i]+7]]);
416 glVertex3d(xv[koi[koffs[i] ]],yv[koi[koffs[i] ]],zv[koi[koffs[i] ]]);
417 glEnd();
418
419 } /* Scheibe 7, Torus 8 und Platte 20 und Schale 23 */
420
421 /*----------------------------------------------------------------------
422 * Scheibe 11 und Torus 12
423 *---------------------------------------------------------------------*/
424 if(ityp[i] == 11 || ityp[i] == 12)
425 {
426 if(iflag)
427 {
428 glColor3f(elem_col[0],elem_col[1],elem_col[2]);
429 xla= (xv[koi[koffs[i]]]+xv[koi[koffs[i]+2]])*0.5;
430 yla= (yv[koi[koffs[i]]]+yv[koi[koffs[i]+2]])*0.5;
431 zla= (zv[koi[koffs[i]]]+zv[koi[koffs[i]+2]])*0.5;
432 glRasterPos3d(xla,yla,zla);
433 ltoa(i,cstring,10);
434 FontPuts(Font,cstring);
435 }
436
437 glBegin(GL_LINE_STRIP);
438 glVertex3d(xv[koi[koffs[i] ]],yv[koi[koffs[i] ]],zv[koi[koffs[i] ]]);
439 glVertex3d(xv[koi[koffs[i]+ 4]],yv[koi[koffs[i]+ 4]],zv[koi[koffs[i]+ 4]]);
440 glVertex3d(xv[koi[koffs[i]+ 5]],yv[koi[koffs[i]+ 5]],zv[koi[koffs[i]+ 5]]);
441 glVertex3d(xv[koi[koffs[i]+ 1]],yv[koi[koffs[i]+ 1]],zv[koi[koffs[i]+ 1]]);
442 glVertex3d(xv[koi[koffs[i]+ 6]],yv[koi[koffs[i]+ 6]],zv[koi[koffs[i]+ 6]]);
443 glVertex3d(xv[koi[koffs[i]+ 7]],yv[koi[koffs[i]+ 7]],zv[koi[koffs[i]+ 7]]);
444 glVertex3d(xv[koi[koffs[i]+ 2]],yv[koi[koffs[i]+ 2]],zv[koi[koffs[i]+ 2]]);
445 glVertex3d(xv[koi[koffs[i]+ 8]],yv[koi[koffs[i]+ 8]],zv[koi[koffs[i]+ 8]]);
446 glVertex3d(xv[koi[koffs[i]+ 9]],yv[koi[koffs[i]+ 9]],zv[koi[koffs[i]+ 9]]);
447 glVertex3d(xv[koi[koffs[i]+ 3]],yv[koi[koffs[i]+ 3]],zv[koi[koffs[i]+ 3]]);
448 glVertex3d(xv[koi[koffs[i]+10]],yv[koi[koffs[i]+10]],zv[koi[koffs[i]+10]]);
449 glVertex3d(xv[koi[koffs[i]+11]],yv[koi[koffs[i]+11]],zv[koi[koffs[i]+11]]);
450 glVertex3d(xv[koi[koffs[i] ]],yv[koi[koffs[i] ]],zv[koi[koffs[i] ]]);
451 glEnd();
452
453 } /* Scheibe 11 und Torus 12 */
454
455 /*----------------------------------------------------------------------
456 * Volumenschalenele.21
457 *---------------------------------------------------------------------*/
458 if(ityp[i] == 21)
459 {
460 if(iflag)
461 {
462 glColor3f(elem_col[0],elem_col[1],elem_col[2]);
463 xla= (xv[koi[koffs[i]]]+xv[koi[koffs[i]+2]])*0.5;
464 yla= (yv[koi[koffs[i]]]+yv[koi[koffs[i]+2]])*0.5;
465 zla= (zv[koi[koffs[i]]]+zv[koi[koffs[i]+2]])*0.5;
466 glRasterPos3d(xla,yla,zla);
467 ltoa(i,cstring,10);
468 FontPuts(Font,cstring);
469 }
470
471 glBegin(GL_LINE_STRIP);
472 glVertex3d(xv[koi[koffs[i] ]],yv[koi[koffs[i] ]],zv[koi[koffs[i] ]]);
473 glVertex3d(xv[koi[koffs[i]+ 4]],yv[koi[koffs[i]+ 4]],zv[koi[koffs[i]+ 4]]);
474 glVertex3d(xv[koi[koffs[i]+ 1]],yv[koi[koffs[i]+ 1]],zv[koi[koffs[i]+ 1]]);
475 glVertex3d(xv[koi[koffs[i]+ 5]],yv[koi[koffs[i]+ 5]],zv[koi[koffs[i]+ 5]]);
476 glVertex3d(xv[koi[koffs[i]+ 2]],yv[koi[koffs[i]+ 2]],zv[koi[koffs[i]+ 2]]);
477 glVertex3d(xv[koi[koffs[i]+ 6]],yv[koi[koffs[i]+ 6]],zv[koi[koffs[i]+ 6]]);
478 glVertex3d(xv[koi[koffs[i]+ 3]],yv[koi[koffs[i]+ 3]],zv[koi[koffs[i]+ 3]]);
479 glVertex3d(xv[koi[koffs[i]+ 7]],yv[koi[koffs[i]+ 7]],zv[koi[koffs[i]+ 7]]);
480 glVertex3d(xv[koi[koffs[i] ]],yv[koi[koffs[i] ]],zv[koi[koffs[i] ]]);
481 glEnd();
482
483 glBegin(GL_LINE_STRIP);
484 glVertex3d(xv[koi[koffs[i]+ 8]],yv[koi[koffs[i]+ 8]],zv[koi[koffs[i]+ 8]]);
485 glVertex3d(xv[koi[koffs[i]+12]],yv[koi[koffs[i]+12]],zv[koi[koffs[i]+12]]);
486 glVertex3d(xv[koi[koffs[i]+ 9]],yv[koi[koffs[i]+ 9]],zv[koi[koffs[i]+ 9]]);
487 glVertex3d(xv[koi[koffs[i]+13]],yv[koi[koffs[i]+13]],zv[koi[koffs[i]+13]]);
488 glVertex3d(xv[koi[koffs[i]+10]],yv[koi[koffs[i]+10]],zv[koi[koffs[i]+10]]);
489 glVertex3d(xv[koi[koffs[i]+14]],yv[koi[koffs[i]+14]],zv[koi[koffs[i]+14]]);
490 glVertex3d(xv[koi[koffs[i]+11]],yv[koi[koffs[i]+11]],zv[koi[koffs[i]+11]]);
491 glVertex3d(xv[koi[koffs[i]+15]],yv[koi[koffs[i]+15]],zv[koi[koffs[i]+15]]);
492 glVertex3d(xv[koi[koffs[i]+ 8]],yv[koi[koffs[i]+ 8]],zv[koi[koffs[i]+ 8]]);
493 glEnd();
494
495 glBegin(GL_LINES);
496 glVertex3d(xv[koi[koffs[i] ]],yv[koi[koffs[i] ]],zv[koi[koffs[i] ]]);
497 glVertex3d(xv[koi[koffs[i]+ 8]],yv[koi[koffs[i]+ 8]],zv[koi[koffs[i]+ 8]]);
498 glVertex3d(xv[koi[koffs[i]+ 1]],yv[koi[koffs[i]+ 1]],zv[koi[koffs[i]+ 1]]);
499 glVertex3d(xv[koi[koffs[i]+ 9]],yv[koi[koffs[i]+ 9]],zv[koi[koffs[i]+ 9]]);
500 glVertex3d(xv[koi[koffs[i]+ 2]],yv[koi[koffs[i]+ 2]],zv[koi[koffs[i]+ 2]]);
501 glVertex3d(xv[koi[koffs[i]+10]],yv[koi[koffs[i]+10]],zv[koi[koffs[i]+10]]);
502 glVertex3d(xv[koi[koffs[i]+ 3]],yv[koi[koffs[i]+ 3]],zv[koi[koffs[i]+ 3]]);
503 glVertex3d(xv[koi[koffs[i]+11]],yv[koi[koffs[i]+11]],zv[koi[koffs[i]+11]]);
504 glEnd();
505
506 } /* Ende deg.Volumenele 21 */
507
508 /*----------------------------------------------------------------------
509 * Platte 19
510 *---------------------------------------------------------------------*/
511 if(ityp[i] == 19)
512 {
513 if(iflag)
514 {
515 glColor3f(elem_col[0],elem_col[1],elem_col[2]);
516 xla= (xv[koi[koffs[i]]]+xv[koi[koffs[i]+15]])*0.5;
517 yla= (yv[koi[koffs[i]]]+yv[koi[koffs[i]+15]])*0.5;
518 zla= (zv[koi[koffs[i]]]+zv[koi[koffs[i]+15]])*0.5;
519 glRasterPos3d(xla,yla,zla);
520 ltoa(i,cstring,10);
521 FontPuts(Font,cstring);
522 }
523
524 glBegin(GL_LINE_STRIP);
525 glVertex3d(xv[koi[koffs[i] ]],yv[koi[koffs[i] ]],zv[koi[koffs[i] ]]);
526 glVertex3d(xv[koi[koffs[i]+ 4]],yv[koi[koffs[i]+ 4]],zv[koi[koffs[i]+ 4]]);
527 glVertex3d(xv[koi[koffs[i]+ 8]],yv[koi[koffs[i]+ 8]],zv[koi[koffs[i]+ 8]]);
528 glVertex3d(xv[koi[koffs[i]+12]],yv[koi[koffs[i]+12]],zv[koi[koffs[i]+12]]);
529 glVertex3d(xv[koi[koffs[i]+13]],yv[koi[koffs[i]+13]],zv[koi[koffs[i]+13]]);
530 glVertex3d(xv[koi[koffs[i]+14]],yv[koi[koffs[i]+14]],zv[koi[koffs[i]+14]]);
531 glVertex3d(xv[koi[koffs[i]+15]],yv[koi[koffs[i]+15]],zv[koi[koffs[i]+15]]);
532 glVertex3d(xv[koi[koffs[i]+11]],yv[koi[koffs[i]+11]],zv[koi[koffs[i]+11]]);
533 glVertex3d(xv[koi[koffs[i]+ 7]],yv[koi[koffs[i]+ 7]],zv[koi[koffs[i]+ 7]]);
534 glVertex3d(xv[koi[koffs[i]+ 3]],yv[koi[koffs[i]+ 3]],zv[koi[koffs[i]+ 3]]);
535 glVertex3d(xv[koi[koffs[i]+ 2]],yv[koi[koffs[i]+ 2]],zv[koi[koffs[i]+ 2]]);
536 glVertex3d(xv[koi[koffs[i]+ 1]],yv[koi[koffs[i]+ 1]],zv[koi[koffs[i]+ 1]]);
537 glVertex3d(xv[koi[koffs[i] ]],yv[koi[koffs[i] ]],zv[koi[koffs[i] ]]);
538 glEnd();
539
540 } /* Platte 19 */
541
542 /*----------------------------------------------------------------------
543 * Scheibe 3, Scheibe 14, Torus 15 und Platte 18 und Schale 24
544 *---------------------------------------------------------------------*/
545 if(ityp[i] == 3 || ityp[i] == 14 ||
546 ityp[i] == 15 || ityp[i] == 18 || ityp[i] == 24)
547 {
548 if(iflag)
549 {
550 glColor3f(elem_col[0],elem_col[1],elem_col[2]);
551 xla= (xv[koi[koffs[i]]]+xv[koi[koffs[i]+1]]+xv[koi[koffs[i]+2]])*0.333;
552 yla= (yv[koi[koffs[i]]]+yv[koi[koffs[i]+1]]+yv[koi[koffs[i]+2]])*0.333;
553 zla= (zv[koi[koffs[i]]]+zv[koi[koffs[i]+1]]+zv[koi[koffs[i]+2]])*0.333;
554 glRasterPos3d(xla,yla,zla);
555 ltoa(i,cstring,10);
556 FontPuts(Font,cstring);
557 }
558
559 glBegin(GL_LINE_STRIP);
560 glVertex3d(xv[koi[koffs[i] ]],yv[koi[koffs[i] ]],zv[koi[koffs[i] ]]);
561 glVertex3d(xv[koi[koffs[i]+3]],yv[koi[koffs[i]+3]],zv[koi[koffs[i]+3]]);
562 glVertex3d(xv[koi[koffs[i]+1]],yv[koi[koffs[i]+1]],zv[koi[koffs[i]+1]]);
563 glVertex3d(xv[koi[koffs[i]+4]],yv[koi[koffs[i]+4]],zv[koi[koffs[i]+4]]);
564 glVertex3d(xv[koi[koffs[i]+2]],yv[koi[koffs[i]+2]],zv[koi[koffs[i]+2]]);
565 glVertex3d(xv[koi[koffs[i]+5]],yv[koi[koffs[i]+5]],zv[koi[koffs[i]+5]]);
566 glVertex3d(xv[koi[koffs[i] ]],yv[koi[koffs[i] ]],zv[koi[koffs[i] ]]);
567 glEnd();
568
569 } /* Scheiben 3,14, Torus 15, Platte 18 und Schale 24 */
570
571 /*----------------------------------------------------------------------
572 * Volumenschalenelement 22
573 *---------------------------------------------------------------------*/
574 if(ityp[i] == 22)
575 {
576 if(iflag)
577 {
578 glColor3f(elem_col[0],elem_col[1],elem_col[2]);
579 xla= (xv[koi[koffs[i] ]]+xv[koi[koffs[i]+1]]+xv[koi[koffs[i]+2]])*0.333;
580 yla= (yv[koi[koffs[i] ]]+yv[koi[koffs[i]+1]]+yv[koi[koffs[i]+2]])*0.333;
581 zla= (zv[koi[koffs[i] ]]+zv[koi[koffs[i]+1]]+zv[koi[koffs[i]+2]])*0.333;
582 xla+= (xv[koi[koffs[i]+6]]+xv[koi[koffs[i]+7]]+xv[koi[koffs[i]+8]])*0.333;
583 yla+= (yv[koi[koffs[i]+6]]+yv[koi[koffs[i]+7]]+yv[koi[koffs[i]+8]])*0.333;
584 zla+= (zv[koi[koffs[i]+6]]+zv[koi[koffs[i]+7]]+zv[koi[koffs[i]+8]])*0.333;
585 xla/= 2.;
586 yla/= 2.;
587 zla/= 2.;
588 glRasterPos3d(xla,yla,zla);
589 ltoa(i,cstring,10);
590 FontPuts(Font,cstring);
591 }
592
593 glBegin(GL_LINE_STRIP);
594 glVertex3d(xv[koi[koffs[i] ]],yv[koi[koffs[i] ]],zv[koi[koffs[i] ]]);
595 glVertex3d(xv[koi[koffs[i]+3]],yv[koi[koffs[i]+3]],zv[koi[koffs[i]+3]]);
596 glVertex3d(xv[koi[koffs[i]+1]],yv[koi[koffs[i]+1]],zv[koi[koffs[i]+1]]);
597 glVertex3d(xv[koi[koffs[i]+4]],yv[koi[koffs[i]+4]],zv[koi[koffs[i]+4]]);
598 glVertex3d(xv[koi[koffs[i]+2]],yv[koi[koffs[i]+2]],zv[koi[koffs[i]+2]]);
599 glVertex3d(xv[koi[koffs[i]+5]],yv[koi[koffs[i]+5]],zv[koi[koffs[i]+5]]);
600 glVertex3d(xv[koi[koffs[i] ]],yv[koi[koffs[i] ]],zv[koi[koffs[i] ]]);
601 glEnd();
602
603 glBegin(GL_LINE_STRIP);
604 glVertex3d(xv[koi[koffs[i]+ 6]],yv[koi[koffs[i]+ 6]],zv[koi[koffs[i]+ 6]]);
605 glVertex3d(xv[koi[koffs[i]+ 9]],yv[koi[koffs[i]+ 9]],zv[koi[koffs[i]+ 9]]);
606 glVertex3d(xv[koi[koffs[i]+ 7]],yv[koi[koffs[i]+ 7]],zv[koi[koffs[i]+ 7]]);
607 glVertex3d(xv[koi[koffs[i]+10]],yv[koi[koffs[i]+10]],zv[koi[koffs[i]+10]]);
608 glVertex3d(xv[koi[koffs[i]+ 8]],yv[koi[koffs[i]+ 8]],zv[koi[koffs[i]+ 8]]);
609 glVertex3d(xv[koi[koffs[i]+11]],yv[koi[koffs[i]+11]],zv[koi[koffs[i]+11]]);
610 glVertex3d(xv[koi[koffs[i]+ 6]],yv[koi[koffs[i]+ 6]],zv[koi[koffs[i]+ 6]]);
611 glEnd();
612
613 glBegin(GL_LINES);
614 glVertex3d(xv[koi[koffs[i] ]],yv[koi[koffs[i] ]],zv[koi[koffs[i] ]]);
615 glVertex3d(xv[koi[koffs[i]+6]],yv[koi[koffs[i]+6]],zv[koi[koffs[i]+6]]);
616 glVertex3d(xv[koi[koffs[i]+1]],yv[koi[koffs[i]+1]],zv[koi[koffs[i]+1]]);
617 glVertex3d(xv[koi[koffs[i]+7]],yv[koi[koffs[i]+7]],zv[koi[koffs[i]+7]]);
618 glVertex3d(xv[koi[koffs[i]+2]],yv[koi[koffs[i]+2]],zv[koi[koffs[i]+2]]);
619 glVertex3d(xv[koi[koffs[i]+8]],yv[koi[koffs[i]+8]],zv[koi[koffs[i]+8]]);
620 glEnd();
621
622 } /* Volumenscheibe 22 */
623
624 /*----------------------------------------------------------------------
625 * Torus 6
626 *---------------------------------------------------------------------*/
627 if(ityp[i] == 6)
628 {
629 if(iflag)
630 {
631 glColor3f(elem_col[0],elem_col[1],elem_col[2]);
632 xla= (xv[koi[koffs[i]]]+xv[koi[koffs[i]+1]]+xv[koi[koffs[i]+2]])*0.333;
633 yla= (yv[koi[koffs[i]]]+yv[koi[koffs[i]+1]]+yv[koi[koffs[i]+2]])*0.333;
634 zla= (zv[koi[koffs[i]]]+zv[koi[koffs[i]+1]]+zv[koi[koffs[i]+2]])*0.333;
635 glRasterPos3d(xla,yla,zla);
636 ltoa(i,cstring,10);
637 FontPuts(Font,cstring);
638 }
639
640 glBegin(GL_LINE_STRIP);
641 glVertex3d(xv[koi[koffs[i] ]],yv[koi[koffs[i] ]],zv[koi[koffs[i] ]]);
642 glVertex3d(xv[koi[koffs[i]+1]],yv[koi[koffs[i]+1]],zv[koi[koffs[i]+1]]);
643 glVertex3d(xv[koi[koffs[i]+2]],yv[koi[koffs[i]+2]],zv[koi[koffs[i]+2]]);
644 glVertex3d(xv[koi[koffs[i] ]],yv[koi[koffs[i] ]],zv[koi[koffs[i] ]]);
645 glEnd();
646
647 } /* Torus 6 */
648
649 /*----------------------------------------------------------------------
650 * Tetraeder 16
651 *---------------------------------------------------------------------*/
652 if(ityp[i] == 16)
653 {
654 if(iflag)
655 {
656 glColor3f(elem_col[0],elem_col[1],elem_col[2]);
657 xla= (xv[koi[koffs[i]]]+xv[koi[koffs[i]+1]]+
658 xv[koi[koffs[i]+2]]+xv[koi[koffs[i]+3]])*0.25;
659 yla= (yv[koi[koffs[i]]]+yv[koi[koffs[i]+1]]+
660 yv[koi[koffs[i]+2]]+yv[koi[koffs[i]+3]])*0.25;
661 zla= (zv[koi[koffs[i]]]+zv[koi[koffs[i]+1]]+
662 zv[koi[koffs[i]+2]]+zv[koi[koffs[i]+3]])*0.25;
663 glRasterPos3d(xla,yla,zla);
664 ltoa(i,cstring,10);
665 FontPuts(Font,cstring);
666 }
667
668 glBegin(GL_LINE_STRIP);
669 glVertex3d(xv[koi[koffs[i] ]],yv[koi[koffs[i] ]],zv[koi[koffs[i] ]]);
670 glVertex3d(xv[koi[koffs[i]+6]],yv[koi[koffs[i]+6]],zv[koi[koffs[i]+6]]);
671 glVertex3d(xv[koi[koffs[i]+2]],yv[koi[koffs[i]+2]],zv[koi[koffs[i]+2]]);
672 glVertex3d(xv[koi[koffs[i]+8]],yv[koi[koffs[i]+8]],zv[koi[koffs[i]+8]]);
673 glVertex3d(xv[koi[koffs[i]+3]],yv[koi[koffs[i]+3]],zv[koi[koffs[i]+3]]);
674 glVertex3d(xv[koi[koffs[i]+9]],yv[koi[koffs[i]+9]],zv[koi[koffs[i]+9]]);
675 glVertex3d(xv[koi[koffs[i] ]],yv[koi[koffs[i] ]],zv[koi[koffs[i] ]]);
676 glEnd();
677
678 glBegin(GL_LINE_STRIP);
679 glVertex3d(xv[koi[koffs[i] ]],yv[koi[koffs[i] ]],zv[koi[koffs[i] ]]);
680 glVertex3d(xv[koi[koffs[i]+4]],yv[koi[koffs[i]+4]],zv[koi[koffs[i]+4]]);
681 glVertex3d(xv[koi[koffs[i]+1]],yv[koi[koffs[i]+1]],zv[koi[koffs[i]+1]]);
682 glVertex3d(xv[koi[koffs[i]+7]],yv[koi[koffs[i]+7]],zv[koi[koffs[i]+7]]);
683 glVertex3d(xv[koi[koffs[i]+3]],yv[koi[koffs[i]+3]],zv[koi[koffs[i]+3]]);
684 glVertex3d(xv[koi[koffs[i]+9]],yv[koi[koffs[i]+9]],zv[koi[koffs[i]+9]]);
685 glVertex3d(xv[koi[koffs[i] ]],yv[koi[koffs[i] ]],zv[koi[koffs[i] ]]);
686 glEnd();
687
688 glBegin(GL_LINE_STRIP);
689 glVertex3d(xv[koi[koffs[i] ]],yv[koi[koffs[i] ]],zv[koi[koffs[i] ]]);
690 glVertex3d(xv[koi[koffs[i]+4]],yv[koi[koffs[i]+4]],zv[koi[koffs[i]+4]]);
691 glVertex3d(xv[koi[koffs[i]+1]],yv[koi[koffs[i]+1]],zv[koi[koffs[i]+1]]);
692 glVertex3d(xv[koi[koffs[i]+5]],yv[koi[koffs[i]+5]],zv[koi[koffs[i]+5]]);
693 glVertex3d(xv[koi[koffs[i]+2]],yv[koi[koffs[i]+2]],zv[koi[koffs[i]+2]]);
694 glVertex3d(xv[koi[koffs[i]+6]],yv[koi[koffs[i]+6]],zv[koi[koffs[i]+6]]);
695 glVertex3d(xv[koi[koffs[i] ]],yv[koi[koffs[i] ]],zv[koi[koffs[i] ]]);
696 glEnd();
697
698 glBegin(GL_LINE_STRIP);
699 glVertex3d(xv[koi[koffs[i]+3]],yv[koi[koffs[i]+3]],zv[koi[koffs[i]+3]]);
700 glVertex3d(xv[koi[koffs[i]+7]],yv[koi[koffs[i]+7]],zv[koi[koffs[i]+7]]);
701 glVertex3d(xv[koi[koffs[i]+1]],yv[koi[koffs[i]+1]],zv[koi[koffs[i]+1]]);
702 glVertex3d(xv[koi[koffs[i]+5]],yv[koi[koffs[i]+5]],zv[koi[koffs[i]+5]]);
703 glVertex3d(xv[koi[koffs[i]+2]],yv[koi[koffs[i]+2]],zv[koi[koffs[i]+2]]);
704 glVertex3d(xv[koi[koffs[i]+8]],yv[koi[koffs[i]+8]],zv[koi[koffs[i]+8]]);
705 glVertex3d(xv[koi[koffs[i]+3]],yv[koi[koffs[i]+3]],zv[koi[koffs[i]+3]]);
706 glEnd();
707 } /* Ende Tetraeder 16 */
708
709 /*----------------------------------------------------------------------
710 * Tetraeder 17
711 *---------------------------------------------------------------------*/
712 if(ityp[i] == 17)
713 {
714 if(iflag)
715 {
716 glColor3f(elem_col[0],elem_col[1],elem_col[2]);
717 xla= (xv[koi[koffs[i]]]+xv[koi[koffs[i]+1]]+
718 xv[koi[koffs[i]+2]]+xv[koi[koffs[i]+3]])*0.25;
719 yla= (yv[koi[koffs[i]]]+yv[koi[koffs[i]+1]]+
720 yv[koi[koffs[i]+2]]+yv[koi[koffs[i]+3]])*0.25;
721 zla= (zv[koi[koffs[i]]]+zv[koi[koffs[i]+1]]+
722 zv[koi[koffs[i]+2]]+zv[koi[koffs[i]+3]])*0.25;
723 glRasterPos3d(xla,yla,zla);
724 ltoa(i,cstring,10);
725 FontPuts(Font,cstring);
726 }
727
728 glBegin(GL_LINE_STRIP);
729 glVertex3d(xv[koi[koffs[i] ]],yv[koi[koffs[i] ]],zv[koi[koffs[i] ]]);
730 glVertex3d(xv[koi[koffs[i]+2]],yv[koi[koffs[i]+2]],zv[koi[koffs[i]+2]]);
731 glVertex3d(xv[koi[koffs[i]+3]],yv[koi[koffs[i]+3]],zv[koi[koffs[i]+3]]);
732 glVertex3d(xv[koi[koffs[i] ]],yv[koi[koffs[i] ]],zv[koi[koffs[i] ]]);
733 glEnd();
734
735 glBegin(GL_LINE_STRIP);
736 glVertex3d(xv[koi[koffs[i] ]],yv[koi[koffs[i] ]],zv[koi[koffs[i] ]]);
737 glVertex3d(xv[koi[koffs[i]+1]],yv[koi[koffs[i]+1]],zv[koi[koffs[i]+1]]);
738 glVertex3d(xv[koi[koffs[i]+3]],yv[koi[koffs[i]+3]],zv[koi[koffs[i]+3]]);
739 glVertex3d(xv[koi[koffs[i] ]],yv[koi[koffs[i] ]],zv[koi[koffs[i] ]]);
740 glEnd();
741
742 glBegin(GL_LINE_STRIP);
743 glVertex3d(xv[koi[koffs[i] ]],yv[koi[koffs[i] ]],zv[koi[koffs[i] ]]);
744 glVertex3d(xv[koi[koffs[i]+1]],yv[koi[koffs[i]+1]],zv[koi[koffs[i]+1]]);
745 glVertex3d(xv[koi[koffs[i]+2]],yv[koi[koffs[i]+2]],zv[koi[koffs[i]+2]]);
746 glVertex3d(xv[koi[koffs[i] ]],yv[koi[koffs[i] ]],zv[koi[koffs[i] ]]);
747 glEnd();
748
749 glBegin(GL_LINE_STRIP);
750 glVertex3d(xv[koi[koffs[i]+3]],yv[koi[koffs[i]+3]],zv[koi[koffs[i]+3]]);
751 glVertex3d(xv[koi[koffs[i]+1]],yv[koi[koffs[i]+1]],zv[koi[koffs[i]+1]]);
752 glVertex3d(xv[koi[koffs[i]+2]],yv[koi[koffs[i]+2]],zv[koi[koffs[i]+2]]);
753 glVertex3d(xv[koi[koffs[i]+3]],yv[koi[koffs[i]+3]],zv[koi[koffs[i]+3]]);
754 glEnd();
755 } /* Ende Tetraeder 17 */
756
757 /*----------------------------------------------------------------------
758 * Hexaeder 10
759 *---------------------------------------------------------------------*/
760 if(ityp[i] == 10)
761 {
762 if(iflag)
763 {
764 glColor3f(elem_col[0],elem_col[1],elem_col[2]);
765 xla= (xv[koi[koffs[i]]]+xv[koi[koffs[i]+7]])*0.5;
766 yla= (yv[koi[koffs[i]]]+yv[koi[koffs[i]+7]])*0.5;
767 zla= (zv[koi[koffs[i]]]+zv[koi[koffs[i]+7]])*0.5;
768 glRasterPos3d(xla,yla,zla);
769 ltoa(i,cstring,10);
770 FontPuts(Font,cstring);
771 }
772
773 glBegin(GL_LINE_STRIP);
774 glVertex3d(xv[koi[koffs[i] ]],yv[koi[koffs[i] ]],zv[koi[koffs[i] ]]);
775 glVertex3d(xv[koi[koffs[i]+ 8]],yv[koi[koffs[i]+ 8]],zv[koi[koffs[i]+ 8]]);
776 glVertex3d(xv[koi[koffs[i]+ 1]],yv[koi[koffs[i]+ 1]],zv[koi[koffs[i]+ 1]]);
777 glVertex3d(xv[koi[koffs[i]+ 9]],yv[koi[koffs[i]+ 9]],zv[koi[koffs[i]+ 9]]);
778 glVertex3d(xv[koi[koffs[i]+ 2]],yv[koi[koffs[i]+ 2]],zv[koi[koffs[i]+ 2]]);
779 glVertex3d(xv[koi[koffs[i]+10]],yv[koi[koffs[i]+10]],zv[koi[koffs[i]+10]]);
780 glVertex3d(xv[koi[koffs[i]+ 3]],yv[koi[koffs[i]+ 3]],zv[koi[koffs[i]+ 3]]);
781 glVertex3d(xv[koi[koffs[i]+11]],yv[koi[koffs[i]+11]],zv[koi[koffs[i]+11]]);
782 glVertex3d(xv[koi[koffs[i] ]],yv[koi[koffs[i] ]],zv[koi[koffs[i] ]]);
783 glEnd();
784
785 glBegin(GL_LINE_STRIP);
786 glVertex3d(xv[koi[koffs[i]+ 4]],yv[koi[koffs[i]+ 4]],zv[koi[koffs[i]+ 4]]);
787 glVertex3d(xv[koi[koffs[i]+12]],yv[koi[koffs[i]+12]],zv[koi[koffs[i]+12]]);
788 glVertex3d(xv[koi[koffs[i]+ 5]],yv[koi[koffs[i]+ 5]],zv[koi[koffs[i]+ 5]]);
789 glVertex3d(xv[koi[koffs[i]+13]],yv[koi[koffs[i]+13]],zv[koi[koffs[i]+13]]);
790 glVertex3d(xv[koi[koffs[i]+ 6]],yv[koi[koffs[i]+ 6]],zv[koi[koffs[i]+ 6]]);
791 glVertex3d(xv[koi[koffs[i]+14]],yv[koi[koffs[i]+14]],zv[koi[koffs[i]+14]]);
792 glVertex3d(xv[koi[koffs[i]+ 7]],yv[koi[koffs[i]+ 7]],zv[koi[koffs[i]+ 7]]);
793 glVertex3d(xv[koi[koffs[i]+15]],yv[koi[koffs[i]+15]],zv[koi[koffs[i]+15]]);
794 glVertex3d(xv[koi[koffs[i]+ 4]],yv[koi[koffs[i]+ 4]],zv[koi[koffs[i]+ 4]]);
795 glEnd();
796
797 glBegin(GL_LINE_STRIP);
798 glVertex3d(xv[koi[koffs[i]+ 4]],yv[koi[koffs[i]+ 4]],zv[koi[koffs[i]+ 4]]);
799 glVertex3d(xv[koi[koffs[i]+16]],yv[koi[koffs[i]+16]],zv[koi[koffs[i]+16]]);
800 glVertex3d(xv[koi[koffs[i] ]],yv[koi[koffs[i] ]],zv[koi[koffs[i] ]]);
801 glEnd();
802
803 glBegin(GL_LINE_STRIP);
804 glVertex3d(xv[koi[koffs[i]+ 5]],yv[koi[koffs[i]+ 5]],zv[koi[koffs[i]+ 5]]);
805 glVertex3d(xv[koi[koffs[i]+17]],yv[koi[koffs[i]+17]],zv[koi[koffs[i]+17]]);
806 glVertex3d(xv[koi[koffs[i]+ 1]],yv[koi[koffs[i]+ 1]],zv[koi[koffs[i]+ 1]]);
807 glEnd();
808
809 glBegin(GL_LINE_STRIP);
810 glVertex3d(xv[koi[koffs[i]+ 6]],yv[koi[koffs[i]+ 6]],zv[koi[koffs[i]+ 6]]);
811 glVertex3d(xv[koi[koffs[i]+18]],yv[koi[koffs[i]+18]],zv[koi[koffs[i]+18]]);
812 glVertex3d(xv[koi[koffs[i]+ 2]],yv[koi[koffs[i]+ 2]],zv[koi[koffs[i]+ 2]]);
813 glEnd();
814
815 glBegin(GL_LINE_STRIP);
816 glVertex3d(xv[koi[koffs[i]+ 7]],yv[koi[koffs[i]+ 7]],zv[koi[koffs[i]+ 7]]);
817 glVertex3d(xv[koi[koffs[i]+19]],yv[koi[koffs[i]+19]],zv[koi[koffs[i]+19]]);
818 glVertex3d(xv[koi[koffs[i]+ 3]],yv[koi[koffs[i]+ 3]],zv[koi[koffs[i]+ 3]]);
819 glEnd();
820 } /* Ende Hexaeder 10 */
821
822 /*----------------------------------------------------------------------
823 * Hexaeder 1
824 *---------------------------------------------------------------------*/
825 if(ityp[i] == 1)
826 {
827 if(iflag)
828 {
829 glColor3f(elem_col[0],elem_col[1],elem_col[2]);
830 xla= (xv[koi[koffs[i]]]+xv[koi[koffs[i]+6]])*0.5;
831 yla= (yv[koi[koffs[i]]]+yv[koi[koffs[i]+6]])*0.5;
832 zla= (zv[koi[koffs[i]]]+zv[koi[koffs[i]+6]])*0.5;
833 glRasterPos3d(xla,yla,zla);
834 ltoa(i,cstring,10);
835 FontPuts(Font,cstring);
836 }
837
838 glBegin(GL_LINE_STRIP);
839 glVertex3d(xv[koi[koffs[i] ]],yv[koi[koffs[i] ]],zv[koi[koffs[i] ]]);
840 glVertex3d(xv[koi[koffs[i]+ 1]],yv[koi[koffs[i]+ 1]],zv[koi[koffs[i]+ 1]]);
841 glVertex3d(xv[koi[koffs[i]+ 2]],yv[koi[koffs[i]+ 2]],zv[koi[koffs[i]+ 2]]);
842 glVertex3d(xv[koi[koffs[i]+ 3]],yv[koi[koffs[i]+ 3]],zv[koi[koffs[i]+ 3]]);
843 glVertex3d(xv[koi[koffs[i] ]],yv[koi[koffs[i] ]],zv[koi[koffs[i] ]]);
844 glEnd();
845
846 glBegin(GL_LINE_STRIP);
847 glVertex3d(xv[koi[koffs[i]+ 4]],yv[koi[koffs[i]+ 4]],zv[koi[koffs[i]+ 4]]);
848 glVertex3d(xv[koi[koffs[i]+ 5]],yv[koi[koffs[i]+ 5]],zv[koi[koffs[i]+ 5]]);
849 glVertex3d(xv[koi[koffs[i]+ 6]],yv[koi[koffs[i]+ 6]],zv[koi[koffs[i]+ 6]]);
850 glVertex3d(xv[koi[koffs[i]+ 7]],yv[koi[koffs[i]+ 7]],zv[koi[koffs[i]+ 7]]);
851 glVertex3d(xv[koi[koffs[i]+ 4]],yv[koi[koffs[i]+ 4]],zv[koi[koffs[i]+ 4]]);
852 glEnd();
853
854 glBegin(GL_LINES);
855 glVertex3d(xv[koi[koffs[i]+ 4]],yv[koi[koffs[i]+ 4]],zv[koi[koffs[i]+ 4]]);
856 glVertex3d(xv[koi[koffs[i] ]],yv[koi[koffs[i] ]],zv[koi[koffs[i] ]]);
857 glEnd();
858
859 glBegin(GL_LINES);
860 glVertex3d(xv[koi[koffs[i]+ 5]],yv[koi[koffs[i]+ 5]],zv[koi[koffs[i]+ 5]]);
861 glVertex3d(xv[koi[koffs[i]+ 1]],yv[koi[koffs[i]+ 1]],zv[koi[koffs[i]+ 1]]);
862 glEnd();
863
864 glBegin(GL_LINES);
865 glVertex3d(xv[koi[koffs[i]+ 6]],yv[koi[koffs[i]+ 6]],zv[koi[koffs[i]+ 6]]);
866 glVertex3d(xv[koi[koffs[i]+ 2]],yv[koi[koffs[i]+ 2]],zv[koi[koffs[i]+ 2]]);
867 glEnd();
868
869 glBegin(GL_LINES);
870 glVertex3d(xv[koi[koffs[i]+ 7]],yv[koi[koffs[i]+ 7]],zv[koi[koffs[i]+ 7]]);
871 glVertex3d(xv[koi[koffs[i]+ 3]],yv[koi[koffs[i]+ 3]],zv[koi[koffs[i]+ 3]]);
872 glEnd();
873 } /* Ende Hexaeder 10 */
874 } /* Ende Schleife ueber alle Elemente */
875 return 0;
876 }
877
878 /***********************************************************************
879 * fsrb88 zeichnet die Farbskala fuer die Randbedingungen
880 ***********************************************************************/
fsrb88(void)881 int fsrb88(void)
882 {
883 extern GLFONT *Font;
884
885 extern FR_DOUBLE xm;
886
887 extern GLfloat rot[];
888 extern GLfloat gruen[];
889 extern GLfloat blau[];
890
891 extern FR_INT4 LANG;
892
893 extern int if3d;
894
895 char cstring[80];
896
897 /*----------------------------------------------------------------------
898 * fsrb88 zeichnet die Farbskala fuer die Randbedingungen
899 *---------------------------------------------------------------------*/
900 glColor3f(rot[1],gruen[1],blau[1]);
901 glRectd(xm+4,48.0,xm+12,40.0);
902 glColor3f(1.0f,0.5f,0.0f);
903 glRasterPos3d(xm+16,44.0,0.00);
904 if(LANG == 1) sprintf(cstring,"U1=UX=0 (Platten:UZ=0)");
905 if(LANG == 2) sprintf(cstring,"U1=UX=0 (Plates: UZ=0)");
906 FontPuts(Font,cstring);
907
908 glColor3f(rot[2],gruen[2],blau[2]);
909 glRectd(xm+4,40.0,xm+12,32.0);
910 glColor3f(1.0f,0.5f,0.0f);
911 glRasterPos3d(xm+16,36.0,0.00);
912 if(LANG == 1) sprintf(cstring,"U2=UY=0 (Platten:RotX=0)");
913 if(LANG == 2) sprintf(cstring,"U2=UY=0 (Plates: RotX=0)");
914 FontPuts(Font,cstring);
915
916 glColor3f(rot[3],gruen[3],blau[3]);
917 glRectd(xm+4,32.0,xm+12,24.0);
918 glColor3f(1.0f,0.5f,0.0f);
919 glRasterPos3d(xm+16,28.0,0.00);
920 if(LANG == 1) sprintf(cstring,"U3=UZ=0 (Platten:RotY=0)");
921 if(LANG == 2) sprintf(cstring,"U3=UZ=0 (Plates: RotY=0)");
922 FontPuts(Font,cstring);
923
924 glColor3f(rot[4],gruen[4],blau[4]);
925 glRectd(xm+4,24.0,xm+12,16.0);
926 glColor3f(1.0f,0.5f,0.0f);
927 glRasterPos3d(xm+16,20.0,0.00);
928 if(LANG == 1) sprintf(cstring,"U4=RotX=0");
929 if(LANG == 2) sprintf(cstring,"U4=RotX=0");
930 FontPuts(Font,cstring);
931
932 glColor3f(rot[5],gruen[5],blau[5]);
933 glRectd(xm+4,16.0,xm+12,8.0);
934 glColor3f(1.0f,0.5f,0.0f);
935 glRasterPos3d(xm+16,12.0,0.00);
936 if(LANG == 1) sprintf(cstring,"U5=RotY=0");
937 if(LANG == 2) sprintf(cstring,"U5=RotY=0");
938 FontPuts(Font,cstring);
939
940 glColor3f(rot[6],gruen[6],blau[6]);
941 glRectd(xm+4,8.0,xm+12,0.0);
942 glColor3f(1.0f,0.5f,0.0f);
943 glRasterPos3d(xm+16,4.0,0.00);
944 if(LANG == 1) sprintf(cstring,"U6=RotZ=0");
945 if(LANG == 2) sprintf(cstring,"U6=RotZ=0");
946 FontPuts(Font,cstring);
947
948 glColor3f(rot[7],gruen[7],blau[7]);
949 glRectd(xm+4,0.0,xm+12,-8.0);
950 glColor3f(1.0f,0.5f,0.0f);
951 glRasterPos3d(xm+16,-4.0,0.00);
952 if(LANG == 1) sprintf(cstring,"Verschiebungen gegeben");
953 if(LANG == 2) sprintf(cstring,"Displacements given");
954 FontPuts(Font,cstring);
955
956 glColor3f(rot[8],gruen[8],blau[8]);
957 glRectd(xm+4,-8.0,xm+12,-16.0);
958 glColor3f(1.0f,0.5f,0.0f);
959 glRasterPos3d(xm+16,-12.0,0.00);
960 if(LANG == 1) sprintf(cstring,"Druck/Oberflaechenlasten");
961 if(LANG == 2) sprintf(cstring,"Surface/Pressure Loads");
962 FontPuts(Font,cstring);
963
964 glColor3f(rot[9],gruen[9],blau[9]);
965 glRectd(xm+4,-16.0,xm+12,-24.0);
966 glColor3f(1.0f,0.5f,0.0f);
967 glRasterPos3d(xm+16,-20.0,0.00);
968 if(LANG == 1) sprintf(cstring,"Kraefte X");
969 if(LANG == 2) sprintf(cstring,"Forces X");
970 FontPuts(Font,cstring);
971
972 glColor3f(rot[10],gruen[10],blau[10]);
973 glRectd(xm+4,-24.0,xm+12,-32.0);
974 glColor3f(1.0f,0.5f,0.0f);
975 glRasterPos3d(xm+16,-28.0,0.00);
976 if(LANG == 1) sprintf(cstring,"Kraefte Y");
977 if(LANG == 2) sprintf(cstring,"Forces Y");
978 FontPuts(Font,cstring);
979
980 glColor3f(rot[11],gruen[11],blau[11]);
981 glRectd(xm+4,-32.0,xm+12,-40.0);
982 glColor3f(1.0f,0.5f,0.0f);
983 glRasterPos3d(xm+16,-36.0,0.00);
984 if(LANG == 1) sprintf(cstring,"Kraefte Z");
985 if(LANG == 2) sprintf(cstring,"Forces Z");
986 FontPuts(Font,cstring);
987
988 return 0;
989 }
990