Skip to content
Snippets Groups Projects
Commit 96b8b55f authored by Christophe Geuzaine's avatar Christophe Geuzaine
Browse files

*** empty log message ***

parent 10ef2370
No related branches found
No related tags found
No related merge requests found
// $Id: Mesh.cpp,v 1.167 2006-08-15 21:22:12 geuzaine Exp $ // $Id: Mesh.cpp,v 1.168 2006-08-16 02:01:45 geuzaine Exp $
// //
// Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
// //
...@@ -58,12 +58,12 @@ static unsigned int getColor(GEntity *e, int forceColor, unsigned int color) ...@@ -58,12 +58,12 @@ static unsigned int getColor(GEntity *e, int forceColor, unsigned int color)
return color; return color;
} }
static double intersectCutPlane(MElement *e, int *edges=0, int *faces=0) static double intersectCutPlane(MElement *ele, int *edges=0, int *faces=0)
{ {
MVertex *v = e->getVertex(0); MVertex *v = ele->getVertex(0);
double val = CTX.mesh.evalCutPlane(v->x(), v->y(), v->z()); double val = CTX.mesh.evalCutPlane(v->x(), v->y(), v->z());
for(int i = 1; i < e->getNumVertices(); i++){ for(int i = 1; i < ele->getNumVertices(); i++){
v = e->getVertex(i); v = ele->getVertex(i);
if(val * CTX.mesh.evalCutPlane(v->x(), v->y(), v->z()) <= 0){ if(val * CTX.mesh.evalCutPlane(v->x(), v->y(), v->z()) <= 0){
// the element intersects the cut plane // the element intersects the cut plane
if(CTX.mesh.cut_plane_as_surface){ if(CTX.mesh.cut_plane_as_surface){
...@@ -233,7 +233,7 @@ static void drawBarycentricDual(std::vector<T*> &elements) ...@@ -233,7 +233,7 @@ static void drawBarycentricDual(std::vector<T*> &elements)
// Routines for filling and drawing the vertex arrays // Routines for filling and drawing the vertex arrays
template<class T> template<class T>
static void addInArrays(GEntity *e, VertexArray *va, std::vector<T*> &elements) static void addElementsInArrays(GEntity *e, VertexArray *va, std::vector<T*> &elements)
{ {
for(unsigned int i = 0; i < elements.size(); i++){ for(unsigned int i = 0; i < elements.size(); i++){
MElement *ele = elements[i]; MElement *ele = elements[i];
...@@ -374,7 +374,7 @@ class initMeshGEdge { ...@@ -374,7 +374,7 @@ class initMeshGEdge {
if(CTX.mesh.lines){ if(CTX.mesh.lines){
if(e->meshRep->va_lines) delete e->meshRep->va_lines; if(e->meshRep->va_lines) delete e->meshRep->va_lines;
e->meshRep->va_lines = new VertexArray(2, e->lines.size()); e->meshRep->va_lines = new VertexArray(2, e->lines.size());
addInArrays(e, e->meshRep->va_lines, e->lines); addElementsInArrays(e, e->meshRep->va_lines, e->lines);
} }
} }
}; };
...@@ -489,9 +489,9 @@ class initMeshGFace { ...@@ -489,9 +489,9 @@ class initMeshGFace {
for(; it != f->meshRep->edges.end(); ++it){ for(; it != f->meshRep->edges.end(); ++it){
for(int i = 0; i < 2; i++){ for(int i = 0; i < 2; i++){
MVertex *v = it->getVertex(i); MVertex *v = it->getVertex(i);
MElement *e = it->getElement(); MElement *ele = it->getElement();
SVector3 n = e->getFace(0).normal(); SVector3 n = ele->getFace(0).normal();
int part = e->getPartition(); int part = ele->getPartition();
if(CTX.mesh.smooth_normals) if(CTX.mesh.smooth_normals)
f->model()->normals->get(v->x(), v->y(), v->z(), n[0], n[1], n[2]); f->model()->normals->get(v->x(), v->y(), v->z(), n[0], n[1], n[2]);
f->meshRep->va_lines->add(v->x(), v->y(), v->z(), n[0], n[1], n[2], f->meshRep->va_lines->add(v->x(), v->y(), v->z(), n[0], n[1], n[2],
...@@ -500,14 +500,14 @@ class initMeshGFace { ...@@ -500,14 +500,14 @@ class initMeshGFace {
} }
} }
if(CTX.mesh.surfaces_faces || (!useEdges && CTX.mesh.surfaces_edges)){ if((!useEdges && CTX.mesh.surfaces_edges) || CTX.mesh.surfaces_faces){
if(f->meshRep->va_triangles) delete f->meshRep->va_triangles; if(f->meshRep->va_triangles) delete f->meshRep->va_triangles;
f->meshRep->va_triangles = new VertexArray(3, f->triangles.size()); f->meshRep->va_triangles = new VertexArray(3, f->triangles.size());
addInArrays(f, f->meshRep->va_triangles, f->triangles); addElementsInArrays(f, f->meshRep->va_triangles, f->triangles);
if(f->meshRep->va_quads) delete f->meshRep->va_quads; if(f->meshRep->va_quads) delete f->meshRep->va_quads;
f->meshRep->va_quads = new VertexArray(4, f->quadrangles.size()); f->meshRep->va_quads = new VertexArray(4, f->quadrangles.size());
addInArrays(f, f->meshRep->va_quads, f->quadrangles); addElementsInArrays(f, f->meshRep->va_quads, f->quadrangles);
} }
} }
}; };
...@@ -679,8 +679,11 @@ void Draw_Mesh() ...@@ -679,8 +679,11 @@ void Draw_Mesh()
if(status >= 1) if(status >= 1)
std::for_each(GMODEL->firstEdge(), GMODEL->lastEdge(), initMeshGEdge()); std::for_each(GMODEL->firstEdge(), GMODEL->lastEdge(), initMeshGEdge());
if(status >= 2){ if(status >= 2){
if(GMODEL->normals) delete GMODEL->normals; if(GMODEL->normals)
delete GMODEL->normals;
GMODEL->normals = new smooth_normals(CTX.mesh.angle_smooth_normals); GMODEL->normals = new smooth_normals(CTX.mesh.angle_smooth_normals);
if(CTX.mesh.smooth_normals)
std::for_each(GMODEL->firstFace(), GMODEL->lastFace(), initSmoothNormalsGFace());
std::for_each(GMODEL->firstFace(), GMODEL->lastFace(), initMeshGFace()); std::for_each(GMODEL->firstFace(), GMODEL->lastFace(), initMeshGFace());
} }
if(status >= 3) if(status >= 3)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment