Salome HOME
0021336: EDF 1717 SMESH: New algorithm "body fitting" cartesian unstructured
authoreap <eap@opencascade.com>
Thu, 17 Nov 2011 07:32:02 +0000 (07:32 +0000)
committereap <eap@opencascade.com>
Thu, 17 Nov 2011 07:32:02 +0000 (07:32 +0000)
  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.

src/SMDS/SMDS_VtkVolume.cxx

index bc561a20b5593f70b0f44bb27a03c6ea91df2184..d4f4a9abc4dbd76de601aba20c02f25c0871fb47 100644 (file)
@@ -95,21 +95,27 @@ void SMDS_VtkVolume::initPoly(std::vector<vtkIdType> nodeIds, std::vector<int> 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]);