]> OCCT Git - occt-copy.git/commit
27117: BRepClass3d_SolidClassifier doesn't take into account vertex/edge/face tolerances
authorisn <isn@opencascade.com>
Tue, 15 Mar 2016 13:38:11 +0000 (16:38 +0300)
committernbv <nbv@opencascade.com>
Fri, 16 Sep 2016 13:14:30 +0000 (16:14 +0300)
commit2b7083946a2f0678b5ff4eca7799f1bc62fed325
tree8431d613d92c73b8a87aa2d78eec556129f5e2ae
parentca672396b99bb85cec00f1c5e8cdbfd360bd3ddd
27117: BRepClass3d_SolidClassifier doesn't take into account vertex/edge/face tolerances

3D-claasifier now takes into the account the vertex/edges tolerances. If the given point lays inside the tolerance area of vertex or edge of the solid it's classified as TopAbs_ON.
The behavior of IntCurvesFace_Intersector::Perform was changed. Now it may use optional null-tolerance to classify 2d-point relatively to the given face.
UBTreeFiller is used to speedup intersection process between edges/vertices and the point.
The test case 'boolean gdml_private ZH2' extensively uses the SolidClassifier. After this fix it returns the correct classification statuses, which leads to incorrect result shape (reported by checkshape). Yet the result shape without this fix also seems to be incorrect (one of the isolines goes out of boundary of the face). Thats why it's marked with 'TODO'.

Various improvements in point-solid classifier:

1) Refactoring.
2) BndBoxTree is extracted into separate class.
3) UB-tree calculation is cashed to improve point-solid classification speed.
4) Ray / curve intersection improved by trimmed parameters and correct order.
5) Fixes in logic.
6) Calculation caching at the classifier level.

(cherry picked from commit ccba18e5bd7c21351acd9c29fcb43dc537fd5028)

Task GEOM-03-025: Point classification issue
12 files changed:
src/BRepClass3d/BRepClass3d.cdl
src/BRepClass3d/BRepClass3d_BndBoxTree.cxx [new file with mode: 0644]
src/BRepClass3d/BRepClass3d_BndBoxTree.hxx [new file with mode: 0644]
src/BRepClass3d/BRepClass3d_SClassifier.cxx
src/BRepClass3d/BRepClass3d_SolidExplorer.cdl
src/BRepClass3d/BRepClass3d_SolidExplorer.cxx
src/BRepClass3d/FILES [new file with mode: 0644]
src/IntCurvesFace/IntCurvesFace_Intersector.cdl
src/IntCurvesFace/IntCurvesFace_Intersector.cxx
src/TopOpeBRepTool/FILES
src/TopOpeBRepTool/TopOpeBRepTool.cdl
src/TopOpeBRepTool/TopOpeBRepTool_IndexedDataMapOfSolidClassifier.hxx [new file with mode: 0644]