diff --git a/Common/SmoothNormals.cpp b/Common/SmoothNormals.cpp index c2b9a45e546c3315c17f4edadab152fb86ff4b1c..acb5a94f04828ea74252c57f8bb21284afe9f83f 100644 --- a/Common/SmoothNormals.cpp +++ b/Common/SmoothNormals.cpp @@ -1,4 +1,4 @@ -// $Id: SmoothNormals.cpp,v 1.6 2006-01-14 17:13:14 geuzaine Exp $ +// $Id: SmoothNormals.cpp,v 1.7 2006-08-16 05:25:22 geuzaine Exp $ // // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle // @@ -23,14 +23,18 @@ #include "Numeric.h" #include "SmoothNormals.h" -double xyzn::eps = 1.e-12; +float xyzn::eps = 1.e-6; -float xyzn::angle(int i, float nx, float ny, float nz) +float xyzn::angle(int i, char nx, char ny, char nz) { // returns the angle (in [-180,180]) between the ith normal stored // at point xyz and the new normal nx,ny,nz - double a[3] = {n[i].nx, n[i].ny, n[i].nz}; - double b[3] = {nx, ny, nz}; + double a[3] = {char2float(n[i].nx), + char2float(n[i].ny), + char2float(n[i].nz)}; + double b[3] = {char2float(nx), + char2float(ny), + char2float(nz)}; norme(a); norme(b); double c[3]; @@ -42,29 +46,28 @@ float xyzn::angle(int i, float nx, float ny, float nz) return (float)(angplan * 180. / Pi); } -void xyzn::update(float nx, float ny, float nz, double tol) +void xyzn::update(char nx, char ny, char nz, float tol) { - int N = n.size(); - - if(N > 100){ - // just ignore it if we have more than 100 clusters (think "more - // than 100 elements touching a single vertex") - return; - } + // just ignore it if we have more than 100 clusters + if(n.size() > 100) return; // we average by clusters of normals separated by tol; the result of // the averaging depends on the order in which we average (since we // store the average value as the cluster center as we go), but it // seems to work very nicely in practice (and it's faster than // storing everyting and averaging at the end) - for(int i = 0; i < N; i++){ + for(unsigned int i = 0; i < n.size(); i++){ if(tol >= 180. || fabs(angle(i, nx, ny, nz)) < tol){ - float c1 = (float)(n[i].nb) / (float)(n[i].nb + 1); - float c2 = 1. / (float)(n[i].nb + 1); - n[i].nx = (c1 * n[i].nx + c2 * nx); - n[i].ny = (c1 * n[i].ny + c2 * ny); - n[i].nz = (c1 * n[i].nz + c2 * nz); - n[i].nb++; + // just ignore it if we have more than 100 contributions to a + // single point... + if(n[i].nb < 100){ + float c1 = (float)(n[i].nb) / (float)(n[i].nb + 1); + float c2 = 1. / (float)(n[i].nb + 1); + n[i].nx = (char)(c1 * n[i].nx + c2 * nx); + n[i].ny = (char)(c1 * n[i].ny + c2 * ny); + n[i].nz = (char)(c1 * n[i].nz + c2 * nz); + n[i].nb++; + } return; } } @@ -78,31 +81,35 @@ void smooth_normals::add(double x, double y, double z, double nx, double ny, double nz) { xyzn xyz(x, y, z); - xyzn_iter it = c.find(xyz); + + std::set<xyzn, lessthanxyzn>::const_iterator it = c.find(xyz); if(it == c.end()) { - xyz.update((float)nx, (float)ny, (float)nz, tol); + xyz.update(float2char(nx), + float2char(ny), + float2char(nz), tol); c.insert(xyz); } else { xyzn *p = (xyzn *) & (*it); - p->update((float)nx, (float)ny, (float)nz, tol); + p->update(float2char(nx), + float2char(ny), + float2char(nz), tol); } } bool smooth_normals::get(double x, double y, double z, double &nx, double &ny, double &nz) { - xyzn xyz(x, y, z); - xyzn_iter it = c.find(xyz); + std::set<xyzn, lessthanxyzn>::const_iterator it = c.find(xyzn(x, y, z)); if(it == c.end()) return false; xyzn *p = (xyzn *) & (*it); for(unsigned int i = 0; i < p->n.size(); i++){ - if(fabs(p->angle(i, (float)nx, (float)ny, (float)nz)) < tol) { - nx = p->n[i].nx; - ny = p->n[i].ny; - nz = p->n[i].nz; + if(fabs(p->angle(i, float2char(nx), float2char(ny), float2char(nz))) < tol) { + nx = char2float(p->n[i].nx); + ny = char2float(p->n[i].ny); + nz = char2float(p->n[i].nz); break; } } diff --git a/Common/SmoothNormals.h b/Common/SmoothNormals.h index df2f8db328e190b72236dce114cbb8eafcd45783..a2b362188fb4442782195f31a0b6479261c12a80 100644 --- a/Common/SmoothNormals.h +++ b/Common/SmoothNormals.h @@ -24,23 +24,21 @@ #include <vector> #include "Numeric.h" -using namespace std; - struct nnb { - float nx, ny, nz; - int nb; + char nx, ny, nz; + unsigned char nb; }; struct xyzn { - double x, y, z; - vector<nnb> n; - static double eps; - xyzn(double xx, double yy, double zz) : x(xx), y(yy), z(zz){} + float x, y, z; + std::vector<nnb> n; + static float eps; + xyzn(float xx, float yy, float zz) : x(xx), y(yy), z(zz){} ~xyzn(){} - float angle(int i, float n0, float n1, float n2); - void update(float n0, float n1, float n2, double tol); + float angle(int i, char n0, char n1, char n2); + void update(char n0, char n1, char n2, float tol); }; struct lessthanxyzn @@ -61,13 +59,10 @@ struct lessthanxyzn } }; -typedef set < xyzn, lessthanxyzn > xyzn_cont; -typedef xyzn_cont::const_iterator xyzn_iter; - class smooth_normals{ private: - double tol; - xyzn_cont c; + float tol; + std::set<xyzn, lessthanxyzn> c; public: smooth_normals(double angle) : tol(angle) {} void add(double x, double y, double z, double nx, double ny, double nz); diff --git a/Common/VertexArray.cpp b/Common/VertexArray.cpp index d08dfb87739c8cd10ad73d935307a0a01ba789a5..5bf9c69eadbad2f5bc964be13f9f69756fbacf82 100644 --- a/Common/VertexArray.cpp +++ b/Common/VertexArray.cpp @@ -1,4 +1,4 @@ -// $Id: VertexArray.cpp,v 1.11 2006-08-15 02:17:25 geuzaine Exp $ +// $Id: VertexArray.cpp,v 1.12 2006-08-16 05:25:22 geuzaine Exp $ // // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle // @@ -38,7 +38,7 @@ VertexArray::VertexArray(int numNodesPerElement, int numElements) numElements = 1; int nb = numElements * numNodesPerElement; vertices = List_Create(nb * 3, 3000, sizeof(float)); - normals = List_Create(nb * 3, 3000, sizeof(float)); + normals = List_Create(nb * 3, 3000, sizeof(char)); colors = List_Create(nb * 4, 4000, sizeof(unsigned char)); } @@ -57,16 +57,21 @@ int VertexArray::n() void VertexArray::add(float x, float y, float z, float n0, float n1, float n2, unsigned int col) { + List_Add(vertices, &x); + List_Add(vertices, &y); + List_Add(vertices, &z); + + char c0 = float2char(n0); + char c1 = float2char(n1); + char c2 = float2char(n2); + List_Add(normals, &c0); + List_Add(normals, &c1); + List_Add(normals, &c2); + unsigned char r = CTX.UNPACK_RED(col); unsigned char g = CTX.UNPACK_GREEN(col); unsigned char b = CTX.UNPACK_BLUE(col); unsigned char a = CTX.UNPACK_ALPHA(col); - List_Add(vertices, &x); - List_Add(vertices, &y); - List_Add(vertices, &z); - List_Add(normals, &n0); - List_Add(normals, &n1); - List_Add(normals, &n2); List_Add(colors, &r); List_Add(colors, &g); List_Add(colors, &b); @@ -75,13 +80,14 @@ void VertexArray::add(float x, float y, float z, void VertexArray::add(float x, float y, float z, unsigned int col) { + List_Add(vertices, &x); + List_Add(vertices, &y); + List_Add(vertices, &z); + unsigned char r = CTX.UNPACK_RED(col); unsigned char g = CTX.UNPACK_GREEN(col); unsigned char b = CTX.UNPACK_BLUE(col); unsigned char a = CTX.UNPACK_ALPHA(col); - List_Add(vertices, &x); - List_Add(vertices, &y); - List_Add(vertices, &z); List_Add(colors, &r); List_Add(colors, &g); List_Add(colors, &b); @@ -115,13 +121,15 @@ int compareTriEye(const void *a, const void *b) void VertexArray::sort(double eye[3]) { + // sort assumes that the all the arrays are filled + if(!List_Nbr(vertices) || !List_Nbr(normals) || !List_Nbr(colors)) + return; + if(type != 3){ Msg(GERROR, "VertexArray sort only implemented for triangles"); return; } - - // FIXME this assumes that the color and normals are always filled! - + theeye[0] = eye[0]; theeye[1] = eye[1]; theeye[2] = eye[2]; diff --git a/Common/Views.cpp b/Common/Views.cpp index 6d6890f10906f2856d92fe9ab572f72f2d13f5c4..16e1ab966254449a9be3f795c019e860d4c13a0c 100644 --- a/Common/Views.cpp +++ b/Common/Views.cpp @@ -1,4 +1,4 @@ -// $Id: Views.cpp,v 1.190 2006-08-08 04:35:22 geuzaine Exp $ +// $Id: Views.cpp,v 1.191 2006-08-16 05:25:22 geuzaine Exp $ // // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle // @@ -1001,7 +1001,7 @@ struct lessthanxyzv { }; double xyzv::eps = 1.e-12; -typedef set < xyzv, lessthanxyzv > xyzv_cont; +typedef std::set < xyzv, lessthanxyzv > xyzv_cont; typedef xyzv_cont::const_iterator xyzv_iter; void generate_connectivities(List_T * list, int nbList, int nbTimeStep, int nbVert, diff --git a/Geo/MEdge.h b/Geo/MEdge.h index efc5b8d260f66297eb5c1fdf470e26db10b8a34c..8cb94186acbda2d51c976d0e0d17658899782b8f 100644 --- a/Geo/MEdge.h +++ b/Geo/MEdge.h @@ -20,8 +20,8 @@ // // Please report all bugs and problems to <gmsh@geuz.org>. -#include <algorithm> #include "MVertex.h" +#include "SVector3.h" class MElement; @@ -45,6 +45,14 @@ class MEdge { inline int getNumVertices() const { return 2; } inline MVertex *getVertex(int i) const { return _v[i]; } inline MElement *getElement() const { return _element; } + SVector3 tangent() + { + SVector3 t(_v[1]->x() - _v[0]->x(), + _v[1]->y() - _v[0]->y(), + _v[1]->z() - _v[0]->z()); + t.normalize(); + return t; + } SPoint3 barycenter() { return SPoint3(0.5 * (_v[0]->x() + _v[1]->x()), diff --git a/Graphics/Mesh.cpp b/Graphics/Mesh.cpp index ee014d9ef1b6a1204dee01c21b20bdd13515f7fd..0cb0a7cb2a2d636a3758ca834d82961d08cd8b45 100644 --- a/Graphics/Mesh.cpp +++ b/Graphics/Mesh.cpp @@ -1,4 +1,4 @@ -// $Id: Mesh.cpp,v 1.168 2006-08-16 02:01:45 geuzaine Exp $ +// $Id: Mesh.cpp,v 1.169 2006-08-16 05:25:22 geuzaine Exp $ // // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle // @@ -129,7 +129,7 @@ static void drawNormals(std::vector<T*> &elements) { glColor4ubv((GLubyte *) & CTX.color.mesh.normals); for(unsigned int i = 0; i < elements.size(); i++){ - SVector3 n = elements[i]->getFace(0).normal(); + SVector3 n = elements[i]->getFaceRep(0).normal(); for(int j = 0; j < 3; j++) n[j] *= CTX.mesh.normals * CTX.pixel_equiv_x / CTX.s[j]; SPoint3 pc = elements[i]->barycenter(); @@ -139,6 +139,21 @@ static void drawNormals(std::vector<T*> &elements) } } +template<class T> +static void drawTangents(std::vector<T*> &elements) +{ + glColor4ubv((GLubyte *) & CTX.color.mesh.tangents); + for(unsigned int i = 0; i < elements.size(); i++){ + SVector3 t = elements[i]->getEdgeRep(0).tangent(); + for(int j = 0; j < 3; j++) + t[j] *= CTX.mesh.tangents * CTX.pixel_equiv_x / CTX.s[j]; + SPoint3 pc = elements[i]->barycenter(); + Draw_Vector(CTX.vector_type, 0, CTX.arrow_rel_head_radius, + CTX.arrow_rel_stem_length, CTX.arrow_rel_stem_radius, + pc.x(), pc.y(), pc.z(), t[0], t[1], t[2], CTX.mesh.light); + } +} + static void drawVertices(GEntity *e) { glColor4ubv((GLubyte *) & CTX.color.mesh.vertex); @@ -294,29 +309,29 @@ static void addElementsInArrays(GEntity *e, VertexArray *va, std::vector<T*> &el } } -static void drawArrays(VertexArray *va, GLint type, bool useColorArray, - bool useNormalArray, bool usePolygonOffset, +static void drawArrays(VertexArray *va, GLint type, bool useNormalArray, + bool useColorArray, bool usePolygonOffset, unsigned int uniformColor, bool drawOutline=false) { if(!va) return; glVertexPointer(3, GL_FLOAT, 0, va->vertices->array); + glNormalPointer(GL_BYTE, 0, va->normals->array); glColorPointer(4, GL_UNSIGNED_BYTE, 0, va->colors->array); - glNormalPointer(GL_FLOAT, 0, va->normals->array); glEnableClientState(GL_VERTEX_ARRAY); - if(useColorArray) - glEnableClientState(GL_COLOR_ARRAY); - else{ - glDisableClientState(GL_COLOR_ARRAY); - glColor4ubv((GLubyte *) & uniformColor); - } if(useNormalArray){ glEnable(GL_LIGHTING); glEnableClientState(GL_NORMAL_ARRAY); } else glDisableClientState(GL_NORMAL_ARRAY); + if(useColorArray) + glEnableClientState(GL_COLOR_ARRAY); + else{ + glDisableClientState(GL_COLOR_ARRAY); + glColor4ubv((GLubyte *) & uniformColor); + } if(usePolygonOffset) glEnable(GL_POLYGON_OFFSET_FILL); @@ -331,8 +346,8 @@ static void drawArrays(VertexArray *va, GLint type, bool useColorArray, glDisable(GL_LIGHTING); glDisableClientState(GL_VERTEX_ARRAY); - glDisableClientState(GL_COLOR_ARRAY); glDisableClientState(GL_NORMAL_ARRAY); + glDisableClientState(GL_COLOR_ARRAY); } // GVertex drawing routines @@ -394,8 +409,8 @@ class drawMeshGEdge { MRep *m = e->meshRep; if(CTX.mesh.lines) - drawArrays(m->va_lines, GL_LINES, CTX.mesh.color_carousel == 3, - false, false, getColor(e, false, CTX.color.mesh.line)); + drawArrays(m->va_lines, GL_LINES, false, CTX.mesh.color_carousel == 3, + false, getColor(e, false, CTX.color.mesh.line)); if(CTX.mesh.lines_num) { const int labelStep = getLabelStep(e->lines.size()); @@ -406,9 +421,8 @@ class drawMeshGEdge { if(CTX.mesh.points || CTX.mesh.points_num) drawVertices(e); - if(CTX.mesh.tangents){ - // TODO - } + if(CTX.mesh.tangents) + drawTangents(e->lines); if(CTX.render_mode == GMSH_SELECT) { glPopName(); @@ -461,7 +475,8 @@ class initMeshGFace { if(!f->meshRep) f->meshRep = new MRepFace(f); - bool useEdges = true; + //bool useEdges = true; + bool useEdges = false; if(CTX.mesh.explode != 1. || CTX.mesh.quality_sup || CTX.mesh.radius_sup || CTX.mesh.use_cut_plane) @@ -528,26 +543,26 @@ class drawMeshGFace { if(CTX.mesh.surfaces_edges){ if(m->va_lines && m->va_lines->n()){ - drawArrays(m->va_lines, GL_LINES, CTX.mesh.color_carousel == 3, - CTX.mesh.light && CTX.mesh.light_lines, false, + drawArrays(m->va_lines, GL_LINES, CTX.mesh.light && CTX.mesh.light_lines, + CTX.mesh.color_carousel == 3, false, getColor(f, CTX.mesh.surfaces_faces, CTX.color.mesh.line)); } else{ - drawArrays(m->va_triangles, GL_TRIANGLES, CTX.mesh.color_carousel == 3, - CTX.mesh.light && CTX.mesh.light_lines, false, + drawArrays(m->va_triangles, GL_TRIANGLES, CTX.mesh.light && CTX.mesh.light_lines, + CTX.mesh.color_carousel == 3, false, getColor(f, CTX.mesh.surfaces_faces, CTX.color.mesh.line), true); - drawArrays(m->va_quads, GL_QUADS, CTX.mesh.color_carousel == 3, - CTX.mesh.light && CTX.mesh.light_lines, false, + drawArrays(m->va_quads, GL_QUADS, CTX.mesh.light && CTX.mesh.light_lines, + CTX.mesh.color_carousel == 3, false, getColor(f, CTX.mesh.surfaces_faces, CTX.color.mesh.line), true); } } if(CTX.mesh.surfaces_faces){ - drawArrays(m->va_triangles, GL_TRIANGLES, CTX.mesh.color_carousel == 3, - CTX.mesh.light, CTX.polygon_offset, + drawArrays(m->va_triangles, GL_TRIANGLES, CTX.mesh.light, + CTX.mesh.color_carousel == 3, CTX.polygon_offset, getColor(f, 0, CTX.color.mesh.triangle)); - drawArrays(m->va_quads, GL_QUADS, CTX.mesh.color_carousel == 3, - CTX.mesh.light, CTX.polygon_offset, + drawArrays(m->va_quads, GL_QUADS, CTX.mesh.light, + CTX.mesh.color_carousel == 3, CTX.polygon_offset, getColor(f, 0, CTX.color.mesh.quadrangle)); } diff --git a/Graphics/Post.cpp b/Graphics/Post.cpp index 0079143b9df0e2e203b2791dfe74477fa4349554..a09552a002dc0fac8730e56fd6535675dcde341d 100644 --- a/Graphics/Post.cpp +++ b/Graphics/Post.cpp @@ -1,4 +1,4 @@ -// $Id: Post.cpp,v 1.109 2006-08-15 21:22:12 geuzaine Exp $ +// $Id: Post.cpp,v 1.110 2006-08-16 05:25:22 geuzaine Exp $ // // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle // @@ -769,7 +769,7 @@ void Draw_Post(void) } glVertexPointer(3, GL_FLOAT, 0, v->TriVertexArray->vertices->array); - glNormalPointer(GL_FLOAT, 0, v->TriVertexArray->normals->array); + glNormalPointer(GL_BYTE, 0, v->TriVertexArray->normals->array); glColorPointer(4, GL_UNSIGNED_BYTE, 0, v->TriVertexArray->colors->array); glEnableClientState(GL_VERTEX_ARRAY); @@ -786,8 +786,8 @@ void Draw_Post(void) glDisable(GL_LIGHTING); glDisableClientState(GL_VERTEX_ARRAY); - glDisableClientState(GL_COLOR_ARRAY); glDisableClientState(GL_NORMAL_ARRAY); + glDisableClientState(GL_COLOR_ARRAY); } if(v->LinVertexArray && v->LinVertexArray->n()){ diff --git a/Numeric/Numeric.cpp b/Numeric/Numeric.cpp index 74d9b8f5092c03b17f51008a37e4702f9a77281e..7eecfac74336f2f1eeedcbf810f9e7bde26f4785 100644 --- a/Numeric/Numeric.cpp +++ b/Numeric/Numeric.cpp @@ -1,4 +1,4 @@ -// $Id: Numeric.cpp,v 1.26 2006-08-08 01:10:05 geuzaine Exp $ +// $Id: Numeric.cpp,v 1.27 2006-08-16 05:25:22 geuzaine Exp $ // // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle // @@ -299,6 +299,19 @@ double triangle_area(double p0[3], double p1[3], double p2[3]) return (0.5 * sqrt(c[0] * c[0] + c[1] * c[1] + c[2] * c[2])); } +char float2char(float f) +{ + // f is supposed to be normalized in [-1, 1] + f = (f > 1.) ? 1. : (f < -1.) ? -1 : f; + // char is in [-128, 127] + return (char)(-128 + (f + 1.)/2. * 255); +} + +float char2float(char c) +{ + return -1. + (float)(c + 128)/255. * 2.; +} + double InterpolateIso(double *X, double *Y, double *Z, double *Val, double V, int I1, int I2, double *XI, double *YI, double *ZI) diff --git a/Numeric/Numeric.h b/Numeric/Numeric.h index 23a56da1368ddf0c9ae37503d6d30ce4f285949c..bdaf872207ea6e52e526fbb6e8c6884005ef66b7 100644 --- a/Numeric/Numeric.h +++ b/Numeric/Numeric.h @@ -77,6 +77,8 @@ double trace2 (double mat[3][3]); double inv3x3(double mat[3][3], double inv[3][3]); double angle_02pi(double A3); double triangle_area(double p0[3], double p1[3], double p2[3]); +char float2char(float f); +float char2float(char c); void eigenvalue(double mat[3][3], double re[3]); void FindCubicRoots(const double coeff[4], double re[3], double im[3]); void eigsort(double d[3]); diff --git a/Parser/FunctionManager.cpp b/Parser/FunctionManager.cpp index 7d07cfec5bae7c900d0be0e5f3f673c570497e2a..304a92b4a14d0c2b4aa3e2e9cb9573c1ea6da173 100644 --- a/Parser/FunctionManager.cpp +++ b/Parser/FunctionManager.cpp @@ -1,4 +1,4 @@ -// $Id: FunctionManager.cpp,v 1.22 2006-01-06 00:34:27 geuzaine Exp $ +// $Id: FunctionManager.cpp,v 1.23 2006-08-16 05:25:22 geuzaine Exp $ // // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle // @@ -24,8 +24,6 @@ #include <stack> #include "FunctionManager.h" -using namespace std; - struct ltstr { bool operator() (const char *s1, const char *s2)const @@ -49,12 +47,13 @@ class File_Position class mystack { public: - stack < File_Position > s; + std::stack < File_Position > s; }; class mymap { - public: map < char *, File_Position, ltstr > m; +public: + std::map < char *, File_Position, ltstr > m; }; FunctionManager *FunctionManager::instance = 0; diff --git a/Plugin/CutParametric.cpp b/Plugin/CutParametric.cpp index 4841524801078f79c69a23454e704c1fbc1cb01b..8bf3a78efc247a257aea6f612664aba81b6a02ff 100644 --- a/Plugin/CutParametric.cpp +++ b/Plugin/CutParametric.cpp @@ -1,4 +1,4 @@ -// $Id: CutParametric.cpp,v 1.16 2006-01-06 00:34:32 geuzaine Exp $ +// $Id: CutParametric.cpp,v 1.17 2006-08-16 05:25:22 geuzaine Exp $ // // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle // @@ -77,9 +77,9 @@ static double getU(int i) } int GMSH_CutParametricPlugin::recompute = 1; -vector<double> GMSH_CutParametricPlugin::x; -vector<double> GMSH_CutParametricPlugin::y; -vector<double> GMSH_CutParametricPlugin::z; +std::vector<double> GMSH_CutParametricPlugin::x; +std::vector<double> GMSH_CutParametricPlugin::y; +std::vector<double> GMSH_CutParametricPlugin::z; int GMSH_CutParametricPlugin::fillXYZ() { diff --git a/Plugin/CutParametric.h b/Plugin/CutParametric.h index 1ec4a1eb3645d288592654fea39ecc17750da18d..21dca61817b5c1e163c61dda0848d930bf89359a 100644 --- a/Plugin/CutParametric.h +++ b/Plugin/CutParametric.h @@ -37,7 +37,7 @@ private: static char *callbackStr(int num, int action, char *value, char **opt); static int fillXYZ(); static int recompute; - static vector<double> x, y, z; + static std::vector<double> x, y, z; public: GMSH_CutParametricPlugin(); void getName (char *name) const;