void draw_PSF_isoline(struct psf_data *psf_s, struct psf_menu_val *psf_m, struct buffer_for_gl *gl_buf, int iflag_retina, int iflag_write_ps){ int ierr; glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_COLOR_ARRAY); glVertexPointer(ITHREE, GL_FLOAT, IZERO, gl_buf->xyz); glColorPointer(IFOUR, GL_FLOAT, IZERO, gl_buf->rgba); glDisable(GL_CULL_FACE); glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE); glLineWidth(HALF * ((float) iflag_retina+IONE)); if (iflag_write_ps == ON) { ierr = gl2psLineWidth(ONE); }; if(psf_m->draw_psf_grid != 0){ find_start_positive_lines(psf_m); if(psf_m->ist_positive_line > 1){ glEnable(GL_LINE_STIPPLE); glLineStipple(1,0x3333); if (iflag_write_ps == ON) {ierr = gl2psEnable(GL2PS_LINE_STIPPLE);}; draw_isolines_4_psf(IONE, psf_m->ist_positive_line, psf_s, psf_m, gl_buf); if (iflag_write_ps == ON) {ierr = gl2psDisable(GL2PS_LINE_STIPPLE);}; glDisable(GL_LINE_STIPPLE); }; if(psf_m->ist_positive_line < psf_m->n_isoline){ draw_isolines_4_psf(psf_m->ist_positive_line, psf_m->n_isoline, psf_s, psf_m, gl_buf); }; }; if(psf_m->draw_psf_zero != 0){ glLineWidth( ((float) iflag_retina+IONE) ); if (iflag_write_ps == ON) {ierr = gl2psLineWidth(TWO);}; draw_zeroline_4_psf(psf_s, psf_m, gl_buf); glLineWidth(HALF * ((float) iflag_retina+IONE)); if (iflag_write_ps == ON) {ierr = gl2psLineWidth(ONE);}; }; glEnable(GL_CULL_FACE); glDisableClientState(GL_COLOR_ARRAY); glDisableClientState(GL_VERTEX_ARRAY); return; }
bool CObjectView::saveEPS(const char *fileName){ SELECT_CONTEXT(); // to use GL2PS FILE *f = fopen(fileName, "w"); if (!f) return false; int buffsize = 0, state = GL2PS_OVERFLOW; while( state == GL2PS_OVERFLOW ){ buffsize += 1024*1024; TRACE("bufferSize set to %d\n", buffsize); gl2psBeginPage("GRB", "GRB", GL2PS_BSP_SORT /*GL2PS_SIMPLE_SORT*/, GL2PS_NONE /*GL2PS_OCCLUSION_CULL*/, GL_RGBA, 0, NULL, buffsize, f); gl2psLineWidth(1); gl2psPointSize(1); setupPerspective(); drawScene(NULL, -1); state = gl2psEndPage(); } fclose(f); UNSELECT_CONTEXT(); return true; }
void drawContext::drawMesh() { if(!CTX::instance()->mesh.draw) return; // make sure to flag any model-dependent post-processing view as // changed if the underlying mesh has, before resetting the changed // flag if(CTX::instance()->mesh.changed){ for(unsigned int i = 0; i < GModel::list.size(); i++) for(unsigned int j = 0; j < PView::list.size(); j++) if(PView::list[j]->getData()->hasModel(GModel::list[i])) PView::list[j]->setChanged(true); } glPointSize((float)CTX::instance()->mesh.pointSize); gl2psPointSize((float)(CTX::instance()->mesh.pointSize * CTX::instance()->print.epsPointSizeFactor)); glLineWidth((float)CTX::instance()->mesh.lineWidth); gl2psLineWidth((float)(CTX::instance()->mesh.lineWidth * CTX::instance()->print.epsLineWidthFactor)); if(CTX::instance()->mesh.lightTwoSide) glLightModelf(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE); else glLightModelf(GL_LIGHT_MODEL_TWO_SIDE, GL_FALSE); if(!CTX::instance()->clipWholeElements){ for(int i = 0; i < 6; i++) if(CTX::instance()->mesh.clip & (1 << i)) glEnable((GLenum)(GL_CLIP_PLANE0 + i)); else glDisable((GLenum)(GL_CLIP_PLANE0 + i)); } for(unsigned int i = 0; i < GModel::list.size(); i++){ GModel *m = GModel::list[i]; m->fillVertexArrays(); if(m->getVisibility() && isVisible(m)){ int status = m->getMeshStatus(); if(status >= 0) std::for_each(m->firstVertex(), m->lastVertex(), drawMeshGVertex(this)); if(status >= 1) std::for_each(m->firstEdge(), m->lastEdge(), drawMeshGEdge(this)); if(status >= 2){ beginFakeTransparency(); std::for_each(m->firstFace(), m->lastFace(), drawMeshGFace(this)); endFakeTransparency(); } if(status >= 3) std::for_each(m->firstRegion(), m->lastRegion(), drawMeshGRegion(this)); } } CTX::instance()->mesh.changed = 0; for(int i = 0; i < 6; i++) glDisable((GLenum)(GL_CLIP_PLANE0 + i)); }
int gfx_e002_geom(long pos) { int rv = AF_OK; long nodes = 0 ; long node_pos = 0 ; float r,g,b ; float x,y,z; float sx,sy,sz; long elem_num ; int i; sx = 0.0 ; sy = 0.0 ; sz = 0.0 ; glLineWidth(2); #ifdef USE_GL2PS gl2psLineWidth(2); #endif femElemColor(pos, &r, &g, &b); glColor4f(r,g,b,1.0); elem_num = fdbInputGetInt(ELEM, ELEM_ID, pos) ; nodes = fdbInputGetInt(ELEM, ELEM_NODES, pos) ; if ((plotProp.wireOnly != AF_YES)||(plotProp.Select == AF_YES) ) { glBegin(GL_POLYGON); for (i=0; i<nodes; i++) { node_pos = fdbEnodePos(pos, i) ; #if 0 x = (float) fdbInputGetDbl(NODE, NODE_X, node_pos) ; y = (float) fdbInputGetDbl(NODE, NODE_Y, node_pos) ; z = (float) fdbInputGetDbl(NODE, NODE_Z, node_pos) ; #else x = gfxDefShapeCoord(node_pos, NODE_X) ; y = gfxDefShapeCoord(node_pos, NODE_Y) ; z = gfxDefShapeCoord(node_pos, NODE_Z) ; #endif /* some manipulation with coordinates due to results will be required later*/ x = PoSX(x) ; sx += x ; y = PoSY(y) ; sy += y ; z = PoSZ(z) ; sz += z ; glVertex3f ( x, y, z ) ; } glEnd(); } glLineWidth(1); #ifdef USE_GL2PS gl2psLineWidth(1); #endif if (plotProp.Select != AF_YES) { /* wireframe: */ sx = 0 ; sy = 0 ; sz = 0 ; if (plotProp.wireOnly != AF_YES) { glColor4f(0.0, 0.0, 0.0, 1.0); } else { glColor4f(r,g,b,1.0); } glBegin(GL_LINE_LOOP); for (i=0; i<nodes; i++) { node_pos = fdbEnodePos(pos, i) ; #if 0 x = (float) fdbInputGetDbl(NODE, NODE_X, node_pos) ; y = (float) fdbInputGetDbl(NODE, NODE_Y, node_pos) ; z = (float) fdbInputGetDbl(NODE, NODE_Z, node_pos) ; #else x = gfxDefShapeCoord(node_pos, NODE_X) ; y = gfxDefShapeCoord(node_pos, NODE_Y) ; z = gfxDefShapeCoord(node_pos, NODE_Z) ; #endif /* some manipulation with coordinates due to results will be required later*/ x = PoSX(x) ; sx += x ; y = PoSY(y) ; sy += y ; z = PoSZ(z) ; sz += z ; glVertex3f ( x, y, z ) ; } glEnd(); sx = (sx/nodes); sy = (sy/nodes); sz = (sz/nodes); if (plotProp.elemNumber == AF_YES) { glColor4f(plotProp.fgColor[0], plotProp.fgColor[1], plotProp.fgColor[2], plotProp.fgColor[3]); femPlotInt(elem_num, sx, sy, sz, NULL); } } return(rv); }
int gfx_e002_eres(long res_pos, long etype, long res) { int rv = AF_OK; long pos ; long nodes = 0 ; long node_pos = 0 ; float r,g,b ; float x,y,z; long elem_num ; int i; double val ; float node0[4][4] ; /* coordinates of element nodes */ /* element location */ pos = fdbResEPos(res_pos) ; elem_num = fdbInputGetInt(ELEM, ELEM_ID, pos) ; nodes = fdbInputGetInt(ELEM, ELEM_NODES, pos) ; /* element nodes: */ for (i=0; i<nodes; i++) { node_pos = fdbEnodePos(pos, i) ; #if 0 x = (float) fdbInputGetDbl(NODE, NODE_X, node_pos) ; y = (float) fdbInputGetDbl(NODE, NODE_Y, node_pos) ; z = (float) fdbInputGetDbl(NODE, NODE_Z, node_pos) ; #else x = gfxDefShapeCoord(node_pos, NODE_X) ; y = gfxDefShapeCoord(node_pos, NODE_Y) ; z = gfxDefShapeCoord(node_pos, NODE_Z) ; #endif node0[i][0] = PoSX(x) ; node0[i][1] = PoSY(y) ; node0[i][2] = PoSZ(z) ; } /* all "nodes": */ /* 1 = A */ node[0][0] = node0[0][0]; node[0][1] = node0[0][1]; node[0][2] = node0[0][2]; /* 2 = A+B */ node[1][0] = (node0[0][0]+node0[1][0])/2.0; node[1][1] = (node0[0][1]+node0[1][1])/2.0; node[1][2] = (node0[0][2]+node0[1][2])/2.0; /* 3 = B */ node[2][0] = node0[1][0]; node[2][1] = node0[1][1]; node[2][2] = node0[1][2]; /* 4 = A+D */ node[3][0] = (node0[0][0]+node0[3][0])/2.0; node[3][1] = (node0[0][1]+node0[3][1])/2.0; node[3][2] = (node0[0][2]+node0[3][2])/2.0; /* 5 = A+B+C+D */ node[4][0] = (node0[0][0]+node0[1][0]+node0[2][0]+node0[3][0])/4.0; node[4][1] = (node0[0][1]+node0[1][1]+node0[2][1]+node0[3][1])/4.0; node[4][2] = (node0[0][2]+node0[1][2]+node0[2][2]+node0[3][2])/4.0; /* 6 = B+C */ node[5][0] = (node0[1][0]+node0[2][0])/2.0; node[5][1] = (node0[1][1]+node0[2][1])/2.0; node[5][2] = (node0[1][2]+node0[2][2])/2.0; /* 7 = D */ node[6][0] = node0[3][0]; node[6][1] = node0[3][1]; node[6][2] = node0[3][2]; /* 8 = D+C */ node[7][0] = (node0[3][0]+node0[2][0])/2.0; node[7][1] = (node0[3][1]+node0[2][1])/2.0; node[7][2] = (node0[3][2]+node0[2][2])/2.0; /* 9 = C */ node[8][0] = node0[2][0]; node[8][1] = node0[2][1]; node[8][2] = node0[2][2]; glLineWidth(2); #ifdef USE_GL2PS gl2psLineWidth(2); #endif val = fdbResElemGetVal(res_pos, etype, res, 1) ; femGetResColor3f(val, &r, &g, &b); glColor4f(r,g,b,1.0); gfx_e002_rect(1, 2, 5, 4); val = fdbResElemGetVal(res_pos, etype, res, 3) ; femGetResColor3f(val, &r, &g, &b); glColor4f(r,g,b,1.0); gfx_e002_rect(2, 3, 6, 5); val = fdbResElemGetVal(res_pos, etype, res, 2) ; femGetResColor3f(val, &r, &g, &b); glColor4f(r,g,b,1.0); gfx_e002_rect(4, 5, 8, 7); val = fdbResElemGetVal(res_pos, etype, res, 4) ; femGetResColor3f(val, &r, &g, &b); glColor4f(r,g,b,1.0); gfx_e002_rect(5, 6, 9, 8); glLineWidth(1); #ifdef USE_GL2PS gl2psLineWidth(1); #endif /* wireframe: */ if (plotProp.wireRes == AF_YES) { glColor4f(0.0, 0.0, 0.0, 1.0); glBegin(GL_LINE_LOOP); for (i=0; i<nodes; i++) { glVertex3f ( node0[i][0], node0[i][1], node0[i][2] ) ; } glEnd(); } return(rv); }
int gfx_e003_eres(long res_pos, long etype, long res) { int rv = AF_OK; long pos ; long nodes = 0 ; long node_pos = 0 ; float r,g,b ; float x,y,z; long elem_num ; int i; float node[4][3] ; double val = 0.0 ; glLineWidth(2); #ifdef USE_GL2PS gl2psLineWidth(2); #endif /* result color computation */ val = fdbResElemGetVal(res_pos, etype, res, 0) ; femGetResColor3f(val, &r, &g, &b); /* element location */ pos = fdbResEPos(res_pos) ; glColor4f(r,g,b,1.0); elem_num = fdbInputGetInt(ELEM, ELEM_ID, pos) ; nodes = fdbInputGetInt(ELEM, ELEM_NODES, pos) ; for (i=0; i<nodes; i++) { node_pos = fdbEnodePos(pos, i) ; #if 0 x = (float) fdbInputGetDbl(NODE, NODE_X, node_pos) ; y = (float) fdbInputGetDbl(NODE, NODE_Y, node_pos) ; z = (float) fdbInputGetDbl(NODE, NODE_Z, node_pos) ; #else x = gfxDefShapeCoord(node_pos, NODE_X) ; y = gfxDefShapeCoord(node_pos, NODE_Y) ; z = gfxDefShapeCoord(node_pos, NODE_Z) ; #endif x = PoSX(x) ; y = PoSY(y) ; z = PoSZ(z) ; node[i][0] = x ; node[i][1] = y ; node[i][2] = z ; } glBegin(GL_POLYGON); glVertex3f ( node[0][0], node[0][1], node[0][2] ) ; glVertex3f ( node[1][0], node[1][1], node[1][2] ) ; glVertex3f ( node[2][0], node[2][1], node[2][2] ) ; glEnd(); glBegin(GL_POLYGON); glVertex3f ( node[0][0], node[0][1], node[0][2] ) ; glVertex3f ( node[2][0], node[2][1], node[2][2] ) ; glVertex3f ( node[3][0], node[3][1], node[3][2] ) ; glEnd(); glBegin(GL_POLYGON); glVertex3f ( node[0][0], node[0][1], node[0][2] ) ; glVertex3f ( node[3][0], node[3][1], node[3][2] ) ; glVertex3f ( node[1][0], node[1][1], node[1][2] ) ; glEnd(); glBegin(GL_POLYGON); glVertex3f ( node[1][0], node[1][1], node[1][2] ) ; glVertex3f ( node[2][0], node[2][1], node[2][2] ) ; glVertex3f ( node[3][0], node[3][1], node[3][2] ) ; glEnd(); glLineWidth(1); #ifdef USE_GL2PS gl2psLineWidth(1); #endif /* wireframe: */ if (plotProp.wireRes == AF_YES) { glColor4f(0.0, 0.0, 0.0, 1.0); glBegin(GL_LINE_STRIP); glVertex3f ( node[0][0], node[0][1], node[0][2] ) ; glVertex3f ( node[1][0], node[1][1], node[1][2] ) ; glEnd(); glBegin(GL_LINE_STRIP); glVertex3f ( node[0][0], node[0][1], node[0][2] ) ; glVertex3f ( node[2][0], node[2][1], node[2][2] ) ; glEnd(); glBegin(GL_LINE_STRIP); glVertex3f ( node[0][0], node[0][1], node[0][2] ) ; glVertex3f ( node[3][0], node[3][1], node[3][2] ) ; glEnd(); glBegin(GL_LINE_STRIP); glVertex3f ( node[1][0], node[1][1], node[1][2] ) ; glVertex3f ( node[2][0], node[2][1], node[2][2] ) ; glEnd(); glBegin(GL_LINE_STRIP); glVertex3f ( node[3][0], node[3][1], node[3][2] ) ; glVertex3f ( node[1][0], node[1][1], node[1][2] ) ; glEnd(); glBegin(GL_LINE_STRIP); glVertex3f ( node[2][0], node[2][1], node[2][2] ) ; glVertex3f ( node[3][0], node[3][1], node[3][2] ) ; glEnd(); } return(rv); }
void afDispSymbol( double Size, long Dir, double x, double y, double z, long Num, float r, float g, float b, float tr) { double S,F; F = (plotProp.Max-plotProp.Min)/30.0; S = F/4.0; glLoadIdentity(); glTranslatef(x,y,z); switch (Dir) { /* u: */ case 1: case 15: case 29: glRotatef(180,0,1,0); break; case 2: case 16: case 30: glRotatef(270,0,0,1); break; case 3: case 17: case 31: glRotatef(90,0,1,0); break; /* rot: */ case 4: case 18: case 32: glRotatef(180,0,0,1); break; case 5: case 19: case 33: glRotatef(270,0,0,1); break; case 6: case 20: case 34: glRotatef(90,0,1,0); break; case 7: glRotatef(180,0,1,0); break; default: glLoadIdentity(); return; break; } glColor4f(r,g,b,tr); if ((Dir>=15)&&(Dir<=20)) { glColor4f(1.0, 0.6, 0.3, 1.0) ; } if ((Dir>=29)&&(Dir<=34)) { glColor4f(0.6, 0.6, 1.0, 1.0) ; } if (plotProp.PlotToFile == AF_YES) { #ifdef USE_GL2PS gl2psPointSize(4); #endif } else { glPointSize(4); } glBegin(GL_POINTS); glVertex3f(0,0,0); glEnd(); if (plotProp.PlotToFile == AF_YES) { #ifdef USE_GL2PS gl2psPointSize(1); #endif } else { glPointSize(1); } /* translations */ if ( (Dir <= 3) || ((Dir>=15)&&(Dir<=17)) || ((Dir>=29)&&(Dir<=31)) ) { if (plotProp.PlotToFile == AF_YES) { #ifdef USE_GL2PS gl2psLineWidth(2); #endif } else { glLineWidth(2); } glBegin(GL_LINE_STRIP); glVertex3f(0,0,0); glVertex3f(F+0,0,0); glEnd(); if (plotProp.PlotToFile == AF_YES) { #ifdef USE_GL2PS gl2psLineWidth(1); #endif } else { glLineWidth(1); } glBegin(GL_TRIANGLE_FAN); glVertex3f(0.7*F,0,0); glVertex3f(F,S,S); glVertex3f(F,-S,S); glVertex3f(F,-S,-S); glVertex3f(F,S,-S); glVertex3f(F,S,S); glEnd(); } else /* rotations */ { if (plotProp.PlotToFile == AF_YES) { #ifdef USE_GL2PS gl2psLineWidth(2); #endif } else { glLineWidth(2); } if (Dir == 7) /* temperature */ { glBegin(GL_POINTS); glVertex3f(0,0,0); glEnd(); } else { glBegin(GL_POLYGON); glVertex3f( 0.4*F, 0.3*F,-0.2*F); glVertex3f(-0.4*F, 0.3*F,-0.2*F); glVertex3f(-0.4*F, 0.3*F, 0.2*F); glVertex3f( 0.4*F, 0.3*F, 0.2*F); glEnd(); glBegin(GL_POLYGON); glVertex3f( 0.4*F,-0.3*F,-0.2*F); glVertex3f(-0.4*F,-0.3*F,-0.2*F); glVertex3f(-0.4*F,-0.3*F, 0.2*F); glVertex3f( 0.4*F,-0.3*F, 0.2*F); glEnd(); glBegin(GL_POLYGON); glVertex3f( 0.4*F,-0.3*F,-0.2*F); glVertex3f(-0.4*F,-0.3*F,-0.2*F); glVertex3f(-0.4*F, 0.3*F,-0.2*F); glVertex3f( 0.4*F, 0.3*F,-0.2*F); glEnd(); glBegin(GL_POLYGON); glVertex3f( 0.4*F,-0.2*F, 0.2*F); glVertex3f(-0.4*F,-0.2*F, 0.2*F); glVertex3f(-0.4*F, 0.2*F, 0.2*F); glVertex3f( 0.4*F, 0.2*F, 0.2*F); glEnd(); /* */ glBegin(GL_POLYGON); glVertex3f(0,-0.2*F,-0.2*F); glVertex3f(0,-0.2*F, 0.2*F); glVertex3f(0, 0.2*F, 0.2*F); glVertex3f(0, 0.2*F,-0.2*F); glEnd(); } if (plotProp.PlotToFile == AF_YES) { #ifdef USE_GL2PS gl2psLineWidth(2); #endif } else { glLineWidth(2); } } if (plotProp.Select != AF_YES) { /* disp number: */ if (plotProp.dispNumber == AF_YES) { femPlotInt(Num,F+0,0,0,NULL); } /* disp size: */ if (plotProp.dispSize == AF_YES) { femPlotDouble(fabs(Size),F+0,0,0,NULL); } } }
/* TODO: symbol for stiffness TODO */ void afStiffSymbol( double Size, long Dir, double x, double y, double z, long Num, float r, float g, float b, float tr) { double S,F; F = (plotProp.Max-plotProp.Min)/30.0; S = F/4.0; glLoadIdentity(); glTranslatef(x,y,z); switch (Dir) { /* u: */ case 8: case 22: case 36: glRotatef(180,0,1,0); break; case 9: case 23: case 37: glRotatef(270,0,0,1); break; case 10: case 24: case 38: glRotatef(90,0,1,0); break; /* rot: */ case 11: case 25: case 39: glRotatef(180,0,0,1); break; case 12: case 26: case 40: glRotatef(270,0,0,1); break; case 13: case 27: case 41: glRotatef(90,0,1,0); break; default: glLoadIdentity(); return; break; } if (fabs(Size) <= FEM_ZERO) {return;} glColor4f(r,g,b,tr); if ((Dir>=22)&&(Dir<=27)) { glColor4f(1.0, 0.6, 0.3, 1.0) ; } if ((Dir>=36)&&(Dir<=41)) { glColor4f(0.6, 0.6, 1.0, 1.0) ; } if (plotProp.PlotToFile == AF_YES) { #ifdef USE_GL2PS gl2psPointSize(4); #endif } else { glPointSize(4); } glBegin(GL_POINTS); glVertex3f(0,0,0); glEnd(); if (plotProp.PlotToFile == AF_YES) { #ifdef USE_GL2PS gl2psPointSize(1); #endif } else { glPointSize(1); } /* translation stiffnesses */ if ( ((Dir >= 8)&&(Dir <=10)) || ((Dir>=22)&&(Dir<=24)) || ((Dir>=36)&&(Dir<=38)) ) { if (plotProp.PlotToFile == AF_YES) { #ifdef USE_GL2PS gl2psLineWidth(2); #endif } else { glLineWidth(2); } glBegin(GL_LINE_STRIP); glVertex3f(0,0,0); glVertex3f(F+0,0,0); glEnd(); if (plotProp.PlotToFile == AF_YES) { #ifdef USE_GL2PS gl2psLineWidth(1); #endif } else { glLineWidth(1); } glBegin(GL_TRIANGLE_FAN); glVertex3f(0.7*F,0,0); glVertex3f(F,S,S); glVertex3f(F,-S,S); glVertex3f(F,-S,-S); glVertex3f(F,S,-S); glVertex3f(F,S,S); glEnd(); glBegin(GL_TRIANGLE_FAN); glVertex3f(0.7*F,0,0); glVertex3f(0.4*F,S,S); glVertex3f(0.4*F,-S,S); glVertex3f(0.4*F,-S,-S); glVertex3f(0.4*F,S,-S); glVertex3f(0.4*F,S,S); glEnd(); glBegin(GL_TRIANGLE_FAN); glVertex3f(0.1*F,0,0); glVertex3f(0.4*F,S,S); glVertex3f(0.4*F,-S,S); glVertex3f(0.4*F,-S,-S); glVertex3f(0.4*F,S,-S); glVertex3f(0.4*F,S,S); glEnd(); } else /* rotations */ { if (plotProp.PlotToFile == AF_YES) { #ifdef USE_GL2PS gl2psLineWidth(2); #endif } else { glLineWidth(2); } #if 0 glBegin(GL_POLYGON); glVertex3f( 0.4*F, 0.3*F,-0.2*F); glVertex3f(-0.4*F, 0.3*F,-0.2*F); glVertex3f(-0.4*F, 0.3*F, 0.2*F); glVertex3f( 0.4*F, 0.3*F, 0.2*F); glEnd(); glBegin(GL_POLYGON); glVertex3f( 0.4*F,-0.3*F,-0.2*F); glVertex3f(-0.4*F,-0.3*F,-0.2*F); glVertex3f(-0.4*F,-0.3*F, 0.2*F); glVertex3f( 0.4*F,-0.3*F, 0.2*F); glEnd(); glBegin(GL_POLYGON); glVertex3f( 0.4*F,-0.3*F,-0.2*F); glVertex3f(-0.4*F,-0.3*F,-0.2*F); glVertex3f(-0.4*F, 0.3*F,-0.2*F); glVertex3f( 0.4*F, 0.3*F,-0.2*F); glEnd(); glBegin(GL_POLYGON); glVertex3f( 0.4*F,-0.2*F, 0.2*F); glVertex3f(-0.4*F,-0.2*F, 0.2*F); glVertex3f(-0.4*F, 0.2*F, 0.2*F); glVertex3f( 0.4*F, 0.2*F, 0.2*F); glEnd(); /* */ glBegin(GL_POLYGON); glVertex3f(0,-0.2*F,-0.2*F); glVertex3f(0,-0.2*F, 0.2*F); glVertex3f(0, 0.2*F, 0.2*F); glVertex3f(0, 0.2*F,-0.2*F); glEnd(); #else glBegin(GL_POLYGON); glVertex3f(0,-0.3*F,-0.3*F); glVertex3f(0, 0.3*F, 0.3*F); glVertex3f(0.5*F, 0.3*F, 0.3*F); glVertex3f(0.5*F,-0.3*F,-0.3*F); glEnd(); glBegin(GL_POLYGON); glVertex3f(0,-0.3*F, 0.3*F); glVertex3f(0, 0.3*F,-0.3*F); glVertex3f(0.5*F,-0.3*F, 0.3*F); glVertex3f(0.5*F, 0.3*F,-0.3*F); glEnd(); #endif if (plotProp.PlotToFile == AF_YES) { #ifdef USE_GL2PS gl2psLineWidth(2); #endif } else { glLineWidth(2); } } if (plotProp.Select != AF_YES) { /* disp number: */ if (plotProp.dispNumber == AF_YES) { femPlotInt(Num,F+0,0,0,NULL); } /* disp size: */ if (plotProp.dispSize == AF_YES) { femPlotDouble(fabs(Size),F+0,0,0,NULL); } } }
void extras() { glColor3f(1., 0., 0.); glPointSize(1.); gl2psPointSize(1.); glBegin(GL_POINTS); glVertex3f(-1., 1.0, 0.); glEnd(); glPointSize(3.); gl2psPointSize(3.); glBegin(GL_POINTS); glVertex3f(-0.8, 1.0, 0.); glEnd(); glPointSize(5.); gl2psPointSize(5.); glBegin(GL_POINTS); glVertex3f(-0.6, 1.0, 0.); glEnd(); glPointSize(7.); gl2psPointSize(7.); glBegin(GL_POINTS); glVertex3f(-0.4, 1.0, 0.); glEnd(); glLineWidth(1.); gl2psLineWidth(1.); glBegin(GL_LINES); glVertex3f(-0.2, 1.05, 0.); glVertex3f(0.2, 1.05, 0.); glEnd(); glEnable(GL_LINE_STIPPLE); glLineStipple(1, 0x087F); gl2psEnable(GL2PS_LINE_STIPPLE); glBegin(GL_LINES); glVertex3f(-0.2, 0.95, 0.); glVertex3f(0.2, 0.95, 0.); glEnd(); glDisable(GL_LINE_STIPPLE); gl2psDisable(GL2PS_LINE_STIPPLE); glLineWidth(3.); gl2psLineWidth(3.); glBegin(GL_LINES); glVertex3f(0.4, 1.05, 0.); glVertex3f(0.8, 1.05, 0.); glEnd(); glEnable(GL_LINE_STIPPLE); glLineStipple(2, 0x0F0F); /* glLineStipple(1, 0xAAAA); */ gl2psEnable(GL2PS_LINE_STIPPLE); glBegin(GL_LINES); glVertex3f(0.4, 0.95, 0.); glVertex3f(0.8, 0.95, 0.); glEnd(); glDisable(GL_LINE_STIPPLE); gl2psDisable(GL2PS_LINE_STIPPLE); glPointSize(1); gl2psPointSize(1); glLineWidth(1); gl2psLineWidth(1); }