From b224bc7bf6b9a68e79dfaab0ded899bc72f9c2e3 Mon Sep 17 00:00:00 2001 From: szy Date: Thu, 12 Dec 2013 11:26:33 +0000 Subject: [PATCH] 12.12.2013. GetPointClassification() implemented. --- src/HYDROData/HYDROData_CalculationCase.cxx | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/HYDROData/HYDROData_CalculationCase.cxx b/src/HYDROData/HYDROData_CalculationCase.cxx index 5d910ddc..b8439721 100644 --- a/src/HYDROData/HYDROData_CalculationCase.cxx +++ b/src/HYDROData/HYDROData_CalculationCase.cxx @@ -20,7 +20,8 @@ #include #include #include - +#include +#include #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 @@ -637,6 +637,13 @@ HYDROData_CalculationCase::PointClassification HYDROData_CalculationCase::GetPoi // 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; } -- 2.39.2