0027117: BRepClass3d_SolidClassifier doesn't take into account vertex/edge/face toler...
authorisn <isn@opencascade.com>
Tue, 15 Mar 2016 13:38:11 +0000 (16:38 +0300)
committerbugmaster <bugmaster@opencascade.com>
Fri, 8 Apr 2016 08:50:38 +0000 (11:50 +0300)
commit58e14d59e765b0c66c7fbc8a59b031719008a41a
tree6d31aac3044fd42b6a870c49b86f15af09546570
parentd658f27576d23b1e531d263de28dbf62ced21f18
0027117: BRepClass3d_SolidClassifier doesn't take into account vertex/edge/face tolerances

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.

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'.

Corrections in test cases.

Test case is added.
14 files changed:
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_SClassifier.hxx
src/BRepClass3d/BRepClass3d_SolidExplorer.cxx
src/BRepClass3d/BRepClass3d_SolidExplorer.hxx
src/BRepClass3d/FILES
src/IntCurvesFace/IntCurvesFace_Intersector.cxx
src/IntCurvesFace/IntCurvesFace_Intersector.hxx
tests/boolean/gdml_private/ZH2
tests/boolean/gdml_private/ZI7
tests/boolean/gdml_private/ZJ7
tests/boolean/volumemaker/C9
tests/bugs/modalg_6/bug27117 [new file with mode: 0644]