diff --git a/Graphics/Mesh.cpp b/Graphics/Mesh.cpp index f9a2bcc48f7a5aad9e049029573890553264e8e4..e92bc6a66a0c7c72143af0367755b73acc2a4c52 100644 --- a/Graphics/Mesh.cpp +++ b/Graphics/Mesh.cpp @@ -1,4 +1,4 @@ -// $Id: Mesh.cpp,v 1.35 2001-07-31 11:48:27 geuzaine Exp $ +// $Id: Mesh.cpp,v 1.36 2001-08-03 10:02:32 geuzaine Exp $ #include "Gmsh.h" #include "GmshUI.h" @@ -261,10 +261,12 @@ void Draw_Simplex_Volume (void *a, void *b){ fulldraw = 1; } - if(CTX.mesh.color_carousel) + if(CTX.mesh.color_carousel && !fulldraw) ColorSwitch((*s)->iEnt); + else if(fulldraw) + glColor4ubv((GLubyte*)&CTX.color.mesh.line); else - glColor4ubv((GLubyte*)&CTX.color.mesh.tetrahedron); + glColor4ubv((GLubyte*)&CTX.color.mesh.tetrahedron); for (int i=0 ; i<4 ; i++) { X[i] = Xc + CTX.mesh.explode * ((*s)->V[i]->Pos.X - Xc); @@ -272,7 +274,7 @@ void Draw_Simplex_Volume (void *a, void *b){ Z[i] = Zc + CTX.mesh.explode * ((*s)->V[i]->Pos.Z - Zc); } - if(CTX.mesh.volumes){ + if(CTX.mesh.volumes && !(fulldraw && CTX.mesh.shade)){ glBegin(GL_LINES); glVertex3d(X[1], Y[1], Z[1]); glVertex3d(X[0], Y[0], Z[0]); @@ -334,13 +336,15 @@ void Draw_Simplex_Volume (void *a, void *b){ if (CTX.mesh.hidden) { - x1x0 = X[2]-X[0]; y1y0 = Y[2]-Y[0]; - z1z0 = Z[2]-Z[0]; x2x0 = X[1]-X[0]; - y2y0 = Y[1]-Y[0]; z2z0 = Z[1]-Z[0]; - n[0] = y1y0 * z2z0 - z1z0 * y2y0 ; - n[1] = z1z0 * x2x0 - x1x0 * z2z0 ; - n[2] = x1x0 * y2y0 - y1y0 * x2x0; - glNormal3dv(n); + if(CTX.mesh.shade){ + x1x0 = X[2]-X[0]; y1y0 = Y[2]-Y[0]; + z1z0 = Z[2]-Z[0]; x2x0 = X[1]-X[0]; + y2y0 = Y[1]-Y[0]; z2z0 = Z[1]-Z[0]; + n[0] = y1y0 * z2z0 - z1z0 * y2y0 ; + n[1] = z1z0 * x2x0 - x1x0 * z2z0 ; + n[2] = x1x0 * y2y0 - y1y0 * x2x0; + glNormal3dv(n); + } glBegin(GL_TRIANGLES); glVertex3d(X[0], Y[0], Z[0]); @@ -348,13 +352,15 @@ void Draw_Simplex_Volume (void *a, void *b){ glVertex3d(X[1], Y[1], Z[1]); glEnd(); - x1x0 = X[1]-X[0]; y1y0 = Y[1]-Y[0]; - z1z0 = Z[1]-Z[0]; x2x0 = X[3]-X[0]; - y2y0 = Y[3]-Y[0]; z2z0 = Z[3]-Z[0]; - n[0] = y1y0 * z2z0 - z1z0 * y2y0 ; - n[1] = z1z0 * x2x0 - x1x0 * z2z0 ; - n[2] = x1x0 * y2y0 - y1y0 * x2x0; - glNormal3dv(n); + if(CTX.mesh.shade){ + x1x0 = X[1]-X[0]; y1y0 = Y[1]-Y[0]; + z1z0 = Z[1]-Z[0]; x2x0 = X[3]-X[0]; + y2y0 = Y[3]-Y[0]; z2z0 = Z[3]-Z[0]; + n[0] = y1y0 * z2z0 - z1z0 * y2y0 ; + n[1] = z1z0 * x2x0 - x1x0 * z2z0 ; + n[2] = x1x0 * y2y0 - y1y0 * x2x0; + glNormal3dv(n); + } glBegin(GL_TRIANGLES); glVertex3d(X[0], Y[0], Z[0]); @@ -362,14 +368,15 @@ void Draw_Simplex_Volume (void *a, void *b){ glVertex3d(X[3], Y[3], Z[3]); glEnd(); - x1x0 = X[3]-X[0]; y1y0 = Y[3]-Y[0]; - z1z0 = Z[3]-Z[0]; x2x0 = X[2]-X[0]; - y2y0 = Y[2]-Y[0]; z2z0 = Z[2]-Z[0]; - n[0] = y1y0 * z2z0 - z1z0 * y2y0 ; - n[1] = z1z0 * x2x0 - x1x0 * z2z0 ; - n[2] = x1x0 * y2y0 - y1y0 * x2x0; - glNormal3dv(n); - + if(CTX.mesh.shade){ + x1x0 = X[3]-X[0]; y1y0 = Y[3]-Y[0]; + z1z0 = Z[3]-Z[0]; x2x0 = X[2]-X[0]; + y2y0 = Y[2]-Y[0]; z2z0 = Z[2]-Z[0]; + n[0] = y1y0 * z2z0 - z1z0 * y2y0 ; + n[1] = z1z0 * x2x0 - x1x0 * z2z0 ; + n[2] = x1x0 * y2y0 - y1y0 * x2x0; + glNormal3dv(n); + } glBegin(GL_TRIANGLES); glVertex3d(X[0], Y[0], Z[0]); @@ -377,13 +384,15 @@ void Draw_Simplex_Volume (void *a, void *b){ glVertex3d(X[2], Y[2], Z[2]); glEnd(); - x1x0 = X[3]-X[1]; y1y0 = Y[3]-Y[1]; - z1z0 = Z[3]-Z[1]; x2x0 = X[2]-X[1]; - y2y0 = Y[2]-Y[1]; z2z0 = Z[2]-Z[1]; - n[0] = y1y0 * z2z0 - z1z0 * y2y0 ; - n[1] = z1z0 * x2x0 - x1x0 * z2z0 ; - n[2] = x1x0 * y2y0 - y1y0 * x2x0; - glNormal3dv(n); + if(CTX.mesh.shade){ + x1x0 = X[3]-X[1]; y1y0 = Y[3]-Y[1]; + z1z0 = Z[3]-Z[1]; x2x0 = X[2]-X[1]; + y2y0 = Y[2]-Y[1]; z2z0 = Z[2]-Z[1]; + n[0] = y1y0 * z2z0 - z1z0 * y2y0 ; + n[1] = z1z0 * x2x0 - x1x0 * z2z0 ; + n[2] = x1x0 * y2y0 - y1y0 * x2x0; + glNormal3dv(n); + } glBegin(GL_TRIANGLES); glVertex3d(X[3], Y[3], Z[3]);