From: eap Date: Thu, 17 Nov 2011 07:32:02 +0000 (+0000) Subject: 0021336: EDF 1717 SMESH: New algorithm "body fitting" cartesian unstructured X-Git-Tag: V6_4_0rc1~15 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=c59b4d47bba8ace240f769c35f1bb75d029a3465;p=modules%2Fsmesh.git 0021336: EDF 1717 SMESH: New algorithm "body fitting" cartesian unstructured in initPoly(), do not orient faces of polyhedron as it is just wasting time if the user cares him-self of orientation of faces, on the other hand the commented code works only for planar faces and convex polyherdons. --- diff --git a/src/SMDS/SMDS_VtkVolume.cxx b/src/SMDS/SMDS_VtkVolume.cxx index bc561a20b..d4f4a9abc 100644 --- a/src/SMDS/SMDS_VtkVolume.cxx +++ b/src/SMDS/SMDS_VtkVolume.cxx @@ -95,21 +95,27 @@ void SMDS_VtkVolume::initPoly(std::vector nodeIds, std::vector n { int nf = nbNodesPerFace[i]; ptIds.push_back(nf); - double a[3]; - double b[3]; - double c[3]; - grid->GetPoints()->GetPoint(nodeIds[k], a); - grid->GetPoints()->GetPoint(nodeIds[k + 1], b); - grid->GetPoints()->GetPoint(nodeIds[k + 2], c); - bool isFaceForward = this->isForward(a, b, c, center); + // EAP: a right approach is: + // - either the user should care of order of nodes or + // - the user should use a service method arranging nodes if he + // don't want or can't to do it by him-self + // The method below works OK only with planar faces + // + // double a[3]; + // double b[3]; + // double c[3]; + // grid->GetPoints()->GetPoint(nodeIds[k], a); + // grid->GetPoints()->GetPoint(nodeIds[k + 1], b); + // grid->GetPoints()->GetPoint(nodeIds[k + 2], c); + // bool isFaceForward = this->isForward(a, b, c, center); //MESSAGE("isFaceForward " << i << " " << isFaceForward); vtkIdType *facePts = &nodeIds[k]; - if (isFaceForward) + //if (isFaceForward) for (int n = 0; n < nf; n++) ptIds.push_back(facePts[n]); - else - for (int n = nf - 1; n >= 0; n--) - ptIds.push_back(facePts[n]); + // else + // for (int n = nf - 1; n >= 0; n--) + // ptIds.push_back(facePts[n]); k += nf; } myVtkID = grid->InsertNextLinkedCell(VTK_POLYHEDRON, nbFaces, &ptIds[0]);