X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROData%2FHYDROData_StreamAltitude.cxx;h=8c1f9f69f53bf84c9ef70b73bb9db4dadcb102d5;hb=81c9f5cdf82909d0aebd2c491c50fa7516cc80b7;hp=656bbdc1670580363f499ea5031078759bf1ffac;hpb=15327a2433ee39a181928d06a2acb5104bfbc979;p=modules%2Fhydro.git diff --git a/src/HYDROData/HYDROData_StreamAltitude.cxx b/src/HYDROData/HYDROData_StreamAltitude.cxx index 656bbdc1..8c1f9f69 100644 --- a/src/HYDROData/HYDROData_StreamAltitude.cxx +++ b/src/HYDROData/HYDROData_StreamAltitude.cxx @@ -5,11 +5,9 @@ #include "HYDROData_Profile.h" #include "HYDROData_Stream.h" #include "HYDROData_ShapesTool.h" - +#include #include -#include - #include #include #include @@ -30,18 +28,10 @@ #include +#include + #include -#define CLASS2D 1 -#ifdef CLASS2D -#include -#include -#include -#include -#include -#include -#include -#undef _NCollection_MapHasher -#endif + #ifdef DEB_CLASS2D #include #include @@ -66,8 +56,8 @@ Standard_Real getAltitudeFromProfile( const Handle(HYDROData_Profile)& theProfil Standard_Real aResAlt = 0.0; gp_XY aFirstPoint, aLastPoint; - if ( !theProfile->GetLeftPoint( aFirstPoint ) || - !theProfile->GetRightPoint( aLastPoint ) ) + if ( !theProfile->GetLeftPoint( aFirstPoint, false ) || + !theProfile->GetRightPoint( aLastPoint, false ) ) return aResAlt; gp_Pnt aPnt1( aFirstPoint.X(), aFirstPoint.Y(), 0 ); @@ -83,7 +73,7 @@ Standard_Real getAltitudeFromProfile( const Handle(HYDROData_Profile)& theProfil gp_Pnt aPrevPoint; gp_Lin aPrevNormal; - HYDROData_Profile::ProfilePoints aProfilePoints = theProfile->GetProfilePoints(); + HYDROData_Profile::ProfilePoints aProfilePoints = theProfile->GetProfilePoints( false ); for ( int i = 1, n = aProfilePoints.Length(); i <= n; ++i ) { gp_Pnt aProfPoint( aProfilePoints.Value( i ) ); @@ -129,60 +119,6 @@ Standard_Real getAltitudeFromProfile( const Handle(HYDROData_Profile)& theProfil return aResAlt; } -// =================================== workaround ============================== -// till fix of Classifier2d bug -#ifdef CLASS2D -TopAbs_State ComputePointState(const gp_XY& thePnt2d, const TopoDS_Face& theFace) -{ - TopAbs_State aStatus(TopAbs_UNKNOWN); - TopoDS_Wire aWire; - int nb(0); - TopoDS_Iterator it(theFace); - for(;it.More();it.Next()) { - aWire = TopoDS::Wire(it.Value()); - nb++; - } - if(nb > 1 || aWire.IsNull()) return aStatus; - gp_Pln aPlane; - gp_Vec aNormal; - BRepBuilderAPI_FindPlane fndPlane (theFace, Precision::Confusion()); - if(fndPlane.Found()) - aPlane = fndPlane.Plane()->Pln(); - else - return aStatus; - aNormal = gp_Vec(aPlane.Axis().Direction()); - if(theFace.Orientation() == TopAbs_REVERSED) - aNormal.Reverse(); - gp_Pnt aPoint = gp_Pnt (thePnt2d.X(), thePnt2d.Y(), 0); - TColgp_SequenceOfVec aSeq; - TopTools_MapOfShape aMap; - it.Initialize(aWire); - for (;it.More(); it.Next()) { - const TopoDS_Vertex& aVx = TopExp::FirstVertex(TopoDS::Edge(it.Value()), Standard_True); - if(!aMap.Add(aVx)) - continue; - const gp_Pnt& aCurPnt = BRep_Tool::Pnt(TopoDS::Vertex(aVx)); - if(aPoint.IsEqual(aCurPnt,Precision::Confusion())) { - aStatus = TopAbs_ON; - return aStatus; - } - gp_Vec aVec (aPoint, aCurPnt); - aSeq.Append(aVec); - } - Standard_Real anAng(0.0); - for(int i = 1;i < aSeq.Length();i++) { - const gp_Vec& aV1 = aSeq.Value(i); - const gp_Vec& aV2 = aSeq.Value(i+1); - anAng += aV1.AngleWithRef(aV2, aNormal); - } - anAng += aSeq.Value(aSeq.Length()).AngleWithRef(aSeq.Value(1), aNormal); - if(abs(anAng) > Precision::Angular()) - aStatus = TopAbs_IN; - else - aStatus = TopAbs_OUT; - return aStatus; -} -#endif bool HYDROData_StreamAltitude::getBoundaryProfilesForPoint( const gp_XY& thePoint, Handle(HYDROData_Profile)& theLeftProfile, @@ -207,7 +143,8 @@ bool HYDROData_StreamAltitude::getBoundaryProfilesForPoint( continue; gp_XY aFirstPoint, aLastPoint; - if ( !aProfile->GetLeftPoint( aFirstPoint ) || !aProfile->GetRightPoint( aLastPoint ) ) + if ( !aProfile->GetLeftPoint( aFirstPoint, false ) || + !aProfile->GetRightPoint( aLastPoint, false ) ) continue; gp_Pnt aPnt1( aFirstPoint.X(), aFirstPoint.Y(), 0 ); @@ -235,14 +172,10 @@ bool HYDROData_StreamAltitude::getBoundaryProfilesForPoint( BRepBuilderAPI_MakeVertex aMk(aPnt); aBB.Add(aCmp, aMk.Vertex()); BRepTools::Write(aCmp, "ProfileFace.brep"); -#endif - BRepTopAdaptor_FClass2d aClassifier( aProfilesFace, Precision::Confusion() ); - TopAbs_State aPointState = -#ifdef CLASS2D - ComputePointState(thePoint, aProfilesFace); -#else - aClassifier.Perform( gp_Pnt2d( thePoint ), Standard_False ); -#endif +#endif + + TopAbs_State aPointState = HYDROData_Tool::ComputePointState(thePoint, aProfilesFace); + #ifdef DEB_CLASS2D cout << "Point status is = " << aPointState <