Salome HOME
Comments moved.
[modules/hydro.git] / src / HYDROData / HYDROData_CalculationCase.cxx
index 5d910ddca6701e293900deee7e314af596ca6afa..5a5b3ad2dc78fe86434a6d11b93dcf041520135c 100644 (file)
@@ -20,7 +20,8 @@
 #include <TopExp.hxx>
 #include <TopTools_ListOfShape.hxx>
 #include <TopTools_ListIteratorOfListOfShape.hxx>
-
+#include <BRepTopAdaptor_FClass2d.hxx>
+#include <TopAbs.hxx>
 #define CALCULATION_REGIONS_PREF GetName() + "_Reg"
 #define CALCULATION_ZONES_PREF GetName() + "_Zone"
 
@@ -620,7 +621,6 @@ Handle(HYDROData_Zone) HYDROData_CalculationCase::GetZoneFromPoint( const gp_XY&
 
   return aResZone;
 }
-
 HYDROData_CalculationCase::PointClassification HYDROData_CalculationCase::GetPointClassification(
   const gp_XY&                  thePoint,
   const Handle(HYDROData_Zone)& theZone ) const
@@ -633,10 +633,13 @@ HYDROData_CalculationCase::PointClassification HYDROData_CalculationCase::GetPoi
   if ( aZoneFace.IsNull() )
     return aRes;
 
-  // TODO: classify the point position relative to zone
-  // POINT_OUT - point is out of zone face
-  // POINT_IN  - point is inside of zone face
-  // POINT_ON  - point is on the edge of zone face
-
+  BRepTopAdaptor_FClass2d aClassifier( aZoneFace, Precision::Confusion() );
+  TopAbs_State State = aClassifier.Perform( gp_Pnt2d(thePoint), Standard_False );
+  if (State == TopAbs_OUT)
+       aRes =  POINT_OUT;
+  else if(State == TopAbs_IN)
+    aRes =  POINT_IN;
+  else if(State == TopAbs_ON)
+    aRes =  POINT_ON;    
   return aRes;
 }