Salome HOME
Merge commit '6600bcec782fc8b6c72871fe6e08bd19a34a4e2b'
[modules/smesh.git] / src / SMDS / SMDS_VolumeTool.hxx
index 271ab4af5dcb0113d6470129fd0110ffb5d71f41..226eb2536952f0425b316da60c931d01c767efee 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2023  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 
 #include "SMESH_SMDS.hxx"
 
+#include <smIdType.hxx>
+
 class SMDS_MeshElement;
 class SMDS_MeshNode;
-class SMDS_VtkVolume;
 class SMDS_MeshVolume;
 
 #include <vector>
@@ -73,7 +74,7 @@ class SMDS_EXPORT SMDS_VolumeTool
   const SMDS_MeshVolume* Element() const;
   // return element
 
-  int ID() const;
+  smIdType ID() const;
   // return element ID
 
   bool IsPoly() const { return myPolyedre; }
@@ -96,12 +97,15 @@ class SMDS_EXPORT SMDS_VolumeTool
   const SMDS_MeshNode** GetNodes() const { return (const SMDS_MeshNode**) &myVolumeNodes[0]; }
   // Return array of volume nodes
 
-  int NbNodes() const { return myVolumeNodes.size(); }
-  // Return array of volume nodes
+  int NbNodes() const { return (int) myVolumeNodes.size(); }
+  // Return number of volume nodes
 
   double GetSize() const;
   // Return element volume
 
+  double GetScaledJacobian() const;
+  // Return the scaled jacobian 
+
   bool GetBaryCenter (double & X, double & Y, double & Z) const;
 
   bool IsOut(double X, double Y, double Z, double tol) const;
@@ -195,6 +199,10 @@ class SMDS_EXPORT SMDS_VolumeTool
   bool GetFaceBaryCenter (int faceIndex, double & X, double & Y, double & Z) const;
   // Return barycenter of a face
 
+  bool AllFacesSameOriented() const;
+  // Check that all the faces of a polyhedron have the same orientation
+  // no differentiation between inward and outward orientation is made.
+
   double GetFaceArea( int faceIndex ) const;
   // Return face area
 
@@ -249,17 +257,20 @@ class SMDS_EXPORT SMDS_VolumeTool
 
   bool setFace( int faceIndex ) const;
 
-  bool projectNodesToNormal( int faceIndex, double& minProj, double& maxProj ) const;
+  bool projectNodesToNormal( int     faceIndex,
+                             double& minProj,
+                             double& maxProj,
+                             double* normal = 0) const;
 
   const SMDS_MeshElement* myVolume;
-  const SMDS_VtkVolume*   myPolyedre;
+  const SMDS_MeshVolume*  myPolyedre;
   bool                    myIgnoreCentralNodes;
 
   bool                    myVolForward;
   int                     myNbFaces;
   std::vector<const SMDS_MeshNode*> myVolumeNodes;
   std::vector< int >      myPolyIndices; // of a myCurFace
-  std::vector< int >      myPolyQuantities;
+  std::vector<int>        myPolyQuantities;
   std::vector< int >      myPolyFacetOri; // -1-in, +1-out, 0-undef
 
   typedef std::pair<int,int> Link;