diff --git a/Common/Views.cpp b/Common/Views.cpp index ef5c50bbd229696b335a8dbad2604c7683e299c0..ed1bd35e9dc597c65983858a210b1ef41345e55b 100644 --- a/Common/Views.cpp +++ b/Common/Views.cpp @@ -1,4 +1,4 @@ -// $Id: Views.cpp,v 1.24 2001-01-19 22:32:31 remacle Exp $ +// $Id: Views.cpp,v 1.25 2001-01-25 21:36:58 remacle Exp $ #include <set> #include "Gmsh.h" @@ -768,9 +768,9 @@ void Post_View :: smooth () n1++; n2 += (*it).nboccurences; // test - //double val = sqrt (x[j] * x[j] + y[j] * y[j] + z[j] * z[j]); + // double val = sqrt ((x[j]-1) * (x[j]-1) + y[j] * y[j] + z[j] * z[j]); //for(int k=0;k<NbTimeStep;k++)v[j+k*8] = val; - for(int k=0;k<NbTimeStep;k++)v[j+k*8] = (*it).vals[k]; + for(int k=0;k<NbTimeStep;k++)v[j+k*8] = (*it).vals[k]; } } } diff --git a/Graphics/Draw.cpp b/Graphics/Draw.cpp index ab3f96159c4058764a08205d62d1d13de6f050dc..b459a971b51bde552647153007414f9c44dbe3f7 100644 --- a/Graphics/Draw.cpp +++ b/Graphics/Draw.cpp @@ -1,4 +1,4 @@ -// $Id: Draw.cpp,v 1.17 2001-01-17 21:26:24 remacle Exp $ +// $Id: Draw.cpp,v 1.18 2001-01-25 21:36:59 remacle Exp $ #include "Gmsh.h" #include "GmshUI.h" @@ -132,8 +132,14 @@ void Orthogonalize(int x, int y){ /* ------------------------------------------------------------------------ */ void InitShading(void){ - GLfloat specular[4]; int i; + float ambient[] = {0.1745, 0.01175, 0.01175}; + float diffuse[] = {0.61424, 0.04136, 0.04136}; + float specular[4]; + + glMaterialfv(GL_FRONT, GL_AMBIENT, ambient); + glMaterialfv(GL_FRONT, GL_DIFFUSE, diffuse); + glMaterialfv(GL_FRONT, GL_SPECULAR, specular); glEnable(GL_LIGHTING); glEnable(GL_NORMALIZE); diff --git a/Graphics/Iso.cpp b/Graphics/Iso.cpp index 4fef32791cca5b3bda8dff6e9bc9cbc1beffdb5b..c8dfe260a20b247fb4619e45396b4084deae5f7b 100644 --- a/Graphics/Iso.cpp +++ b/Graphics/Iso.cpp @@ -1,4 +1,4 @@ -// $Id: Iso.cpp,v 1.5 2001-01-19 22:32:31 remacle Exp $ +// $Id: Iso.cpp,v 1.6 2001-01-25 21:36:59 remacle Exp $ #include "Gmsh.h" #include "Mesh.h" @@ -35,52 +35,75 @@ void IsoSimplex(double *X, double *Y, double *Z, double *Val, double V, double Vmin, double Vmax, double *Offset, double Raise[3][5], int shade){ int nb,i; + int ed[6] = {0,0,0,0,0,0}; double Xp[6],Yp[6],Zp[6]; double Xpi[6],Ypi[6],Zpi[6]; if(V != Vmax){ nb = 0; if((Val[0] > V && Val[1] <= V) || (Val[1] > V && Val[0] <= V)){ - Interpolate(X,Y,Z,Val,V,0,1,&Xp[nb],&Yp[nb],&Zp[nb]); nb++; + Interpolate(X,Y,Z,Val,V,0,1,&Xp[nb],&Yp[nb],&Zp[nb]); nb++;ed[0]++; } if((Val[0] > V && Val[2] <= V) || (Val[2] > V && Val[0] <= V)){ - Interpolate(X,Y,Z,Val,V,0,2,&Xp[nb],&Yp[nb],&Zp[nb]); nb++; + Interpolate(X,Y,Z,Val,V,0,2,&Xp[nb],&Yp[nb],&Zp[nb]); nb++;ed[1]++; } if((Val[0] > V && Val[3] <= V) || (Val[3] > V && Val[0] <= V)){ - Interpolate(X,Y,Z,Val,V,0,3,&Xp[nb],&Yp[nb],&Zp[nb]); nb++; + Interpolate(X,Y,Z,Val,V,0,3,&Xp[nb],&Yp[nb],&Zp[nb]); nb++;ed[2]++; } if((Val[1] > V && Val[2] <= V) || (Val[2] > V && Val[1] <= V)){ - Interpolate(X,Y,Z,Val,V,1,2,&Xp[nb],&Yp[nb],&Zp[nb]); nb++; + Interpolate(X,Y,Z,Val,V,1,2,&Xp[nb],&Yp[nb],&Zp[nb]); nb++;ed[3]++; } if((Val[1] > V && Val[3] <= V) || (Val[3] > V && Val[1] <= V)){ - Interpolate(X,Y,Z,Val,V,1,3,&Xp[nb],&Yp[nb],&Zp[nb]); nb++; + Interpolate(X,Y,Z,Val,V,1,3,&Xp[nb],&Yp[nb],&Zp[nb]); nb++;ed[4]++; } if((Val[2] > V && Val[3] <= V) || (Val[3] > V && Val[2] <= V)){ - Interpolate(X,Y,Z,Val,V,2,3,&Xp[nb],&Yp[nb],&Zp[nb]); nb++; + Interpolate(X,Y,Z,Val,V,2,3,&Xp[nb],&Yp[nb],&Zp[nb]); nb++;ed[5]++; } } else{ nb=0; if((Val[0] < V && Val[1] <= V) || (Val[1] < V && Val[0] <= V)){ - Interpolate(X,Y,Z,Val,V,0,1,&Xp[nb],&Yp[nb],&Zp[nb]); nb++; + Interpolate(X,Y,Z,Val,V,0,1,&Xp[nb],&Yp[nb],&Zp[nb]); nb++;ed[0]++; } if((Val[0] < V && Val[2] <= V) || (Val[2] < V && Val[0] <= V)){ - Interpolate(X,Y,Z,Val,V,0,2,&Xp[nb],&Yp[nb],&Zp[nb]); nb++; + Interpolate(X,Y,Z,Val,V,0,2,&Xp[nb],&Yp[nb],&Zp[nb]); nb++;ed[1]++; } if((Val[0] < V && Val[3] <= V) || (Val[3] < V && Val[0] <= V)){ - Interpolate(X,Y,Z,Val,V,0,3,&Xp[nb],&Yp[nb],&Zp[nb]); nb++; + Interpolate(X,Y,Z,Val,V,0,3,&Xp[nb],&Yp[nb],&Zp[nb]); nb++;ed[2]++; } if((Val[1] < V && Val[2] <= V) || (Val[2] < V && Val[1] <= V)){ - Interpolate(X,Y,Z,Val,V,1,2,&Xp[nb],&Yp[nb],&Zp[nb]); nb++; + Interpolate(X,Y,Z,Val,V,1,2,&Xp[nb],&Yp[nb],&Zp[nb]); nb++;ed[3]++; } if((Val[1] < V && Val[3] <= V) || (Val[3] < V && Val[1] <= V)){ - Interpolate(X,Y,Z,Val,V,1,3,&Xp[nb],&Yp[nb],&Zp[nb]); nb++; + Interpolate(X,Y,Z,Val,V,1,3,&Xp[nb],&Yp[nb],&Zp[nb]); nb++;ed[4]++; } if((Val[2] < V && Val[3] <= V) || (Val[3] < V && Val[2] <= V)){ - Interpolate(X,Y,Z,Val,V,2,3,&Xp[nb],&Yp[nb],&Zp[nb]); nb++; + Interpolate(X,Y,Z,Val,V,2,3,&Xp[nb],&Yp[nb],&Zp[nb]); nb++;ed[5]++; } } + /* + 3 possibilities for quads + -) 0,2,5,3 + -) 0,1,5,4 + -) 1,2,4,3 + in all cases, simply invert the 2 last ones + for having the quads ordered + */ + + if(nb == 4) + { + double xx = Xp[3]; + double yy = Yp[3]; + double zz = Zp[3]; + Xp[3] = Xp[2]; + Yp[3] = Yp[2]; + Zp[3] = Zp[2]; + Xp[2] = xx; + Yp[2] = yy; + Zp[2] = zz; + } + /* for having a nice isosurface, we should have n . grad v > 0 n = normal to the polygon @@ -109,9 +132,9 @@ void IsoSimplex(double *X, double *Y, double *Z, double *Val, double gr[3] = {X[2]-X[0],Y[2]-Y[0],Z[2]-Z[0]}; double xx = gr[0] * n[0] + gr[1] * n[1] + gr[2] + n[2]; if(Val[2] > Val[0]) xx = -xx; - } + } - + // test if(xx > 0) { @@ -125,13 +148,11 @@ void IsoSimplex(double *X, double *Y, double *Z, double *Val, { Xp[i] = Xpi[nb-i-1]; Yp[i] = Ypi[nb-i-1]; - Zp[i] = Zpi[nb-i-1]; + Zp[i] = Zpi[nb-i-1]; } } } - - if(nb == 3) Draw_Triangle(Xp,Yp,Zp,Offset,Raise,shade); else if(nb == 4)