1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-09 13:22:24 +03:00

0029606: [Regression vs 7.0] BRepClass3d_SolidClassifier classifies the point as IN while it is ON

Simple treatment of some analytical cases when curve is parallel or belongs surface is added in curve - face/surface intersection algorithm
Treatment such cases is added in classifier algorithm
Test case added
This commit is contained in:
ifv
2018-03-28 17:00:50 +03:00
committed by bugmaster
parent d051064495
commit f84edf5816
8 changed files with 185 additions and 82 deletions

View File

@@ -135,7 +135,8 @@ IntCurvesFace_Intersector::IntCurvesFace_Intersector(const TopoDS_Face& Face,
nbpnt(0),
PtrOnPolyhedron(NULL),
PtrOnBndBounding(NULL),
myUseBoundTol (UseBToler)
myUseBoundTol (UseBToler),
myIsParallel(Standard_False)
{
BRepAdaptor_Surface surface;
face = Face;
@@ -336,6 +337,10 @@ void IntCurvesFace_Intersector::InternalCall(const IntCurveSurface_HInter &HICS,
} //-- classifier state is IN or ON
} //-- Loop on Intersection points.
} //-- HICS.IsDone()
else if (HICS.IsDone())
{
myIsParallel = HICS.IsParallel();
}
}
//=======================================================================
//function : Perform

View File

@@ -113,7 +113,12 @@ public:
//! or TopAbs_ON
//! ( the point is on a boudary of the face).
TopAbs_State State (const Standard_Integer I) const;
//! Returns true if curve is parallel or belongs face surface
//! This case is recognized only for some pairs
//! of analytical curves and surfaces (plane - line, ...)
Standard_Boolean IsParallel() const;
//! Returns the significant face used to determine
//! the intersection.
const TopoDS_Face& Face() const;
@@ -160,6 +165,9 @@ private:
Standard_Address PtrOnPolyhedron;
Standard_Address PtrOnBndBounding;
Standard_Boolean myUseBoundTol;
Standard_Boolean myIsParallel; //Curve is "parallel" face surface
//This case is recognized only for some pairs
//of analytical curves and surfaces (plane - line, ...)
};

View File

@@ -58,7 +58,10 @@ inline TopAbs_State IntCurvesFace_Intersector::State(const Standard_Integer i) c
}
// Modified by skv - Wed Sep 3 15:34:20 2003 OCC578 End
//============================================================================
inline const TopoDS_Face& IntCurvesFace_Intersector::Face() const {
inline Standard_Boolean IntCurvesFace_Intersector::IsParallel() const {
return myIsParallel;
}
inline const TopoDS_Face& IntCurvesFace_Intersector::Face() const {
return(face);
}
//============================================================================