diff --git a/Geo/MHexahedron.cpp b/Geo/MHexahedron.cpp index a6be2acab421f3e2e6161784a1e9a2df835c58e3..7e28aa8d1d11b3101313b5452c6f781ae18fd6cb 100644 --- a/Geo/MHexahedron.cpp +++ b/Geo/MHexahedron.cpp @@ -2,6 +2,7 @@ // // See the LICENSE.txt file for license information. Please report all // bugs and problems to the public mailing list <gmsh@onelab.info>. + #include <limits> #include "MHexahedron.h" #include "Numeric.h" diff --git a/Geo/MPrism.cpp b/Geo/MPrism.cpp index 864f043e1d5197cb69f216f6726b10f65b327827..049fbbb4b98575aba4901e2a01aa765ecc119496 100644 --- a/Geo/MPrism.cpp +++ b/Geo/MPrism.cpp @@ -15,9 +15,16 @@ void MPrism::getEdgeRep(bool curved, int num, double *x, double *y, double *z, SVector3 *n) { - static const int f[9] = {0, 1, 2, 0, 2, 3, 1, 1, 1}; - MEdge e(getEdge(num)); - _getEdgeRep(e.getVertex(0), e.getVertex(1), x, y, z, n, f[num]); + MVertex *v0 = _v[edges_prism(num, 0)]; + MVertex *v1 = _v[edges_prism(num, 1)]; + x[0] = v0->x(); y[0] = v0->y(); z[0] = v0->z(); + x[1] = v1->x(); y[1] = v1->y(); z[1] = v1->z(); + // just one of the potential normals - did not bother computing the normal of + // one of the faces - don't use MElement::_getEdgeRep as it uses MFace, which + // is slow + double nn[3]; + normal2points(x[0], y[0], z[0], x[1], y[1], z[1], nn); + n[0] = n[1] = SVector3(nn[0], nn[1], nn[2]); } int MPrism::getVolumeSign()