0030435: Improving performance of Approx_ComputeCLine
authorifv <ifv@opencascade.com>
Thu, 10 Jan 2019 10:07:01 +0000 (13:07 +0300)
committerifv <ifv@opencascade.com>
Mon, 22 Apr 2019 11:03:45 +0000 (14:03 +0300)
commitba7f665dce92eb21ac0031497558d14de17fa4d3
treefd621fa0836d54276c188c2f53df0de8bf02145f
parent130bc3c09728a63920a87c193fe5a3d5cc008d0a
0030435: Improving performance of Approx_ComputeCLine

1. Approx_ComputeCLine.gxx, Approx_FitAndDivide.hxx, Approx_FitAndDivide2d.hxx, BRepFill_ComputeCLine.hxx
It is base modification, which allows improve performance of approximation with help of Approx_ComputeCLine. The main idea of improvement is using degree selection by inverse order - from maxdegree to mindegree. If tolerance for maxdegree is not reached, there is no sense to make approximation for current number of knots with lower degree, it is necessary to cut parametric interval.

2. ProjLib_ComputeApprox, ProjLib_ComputeApproxOnPolarSurface, ProjLib_ComputeApproxOnPolarSurface, ProjLib_ProjectOnPlane
It is additional modification of methods using Approx_ComputeCLine.
Mainly, modifications concern to more optimal choosing parameters for approximation algorithm.

3. BRepCheck_Face
Small improvement of method Intersect(...), which intersects two wires on face.

4. BRepTopAdaptor_FClass2d
Impovement of treatment infinitely narrow faces.

5. ChFi3d/ChFi3d_Builder_6.cxx
Small improvement, which forbids extension of singular boundary of surface.
It was TODO problem in tests/bugs/modalg_7/bug27711_3

6. IntTools_EdgeEdge.cxx
Improvement of performance for cases of searching common parts between line  and analytical curve

7. GeomliteTest_CurveCommands.cxx
Adding Draw command fitcurve. This command is analog of approxcurve, but uses Approx_FitAndDivide algorithm.
Mainly to have direct draw command for testing Approx_ComputeCLine.

8. Extrema_ExtElC.cxx

Treatment of case "infinite solutions" for extrema line-ellipse

9. Modification of some tests according to new behavior of algorithm.

10. tests/perf/moddata/bug30435
Test for new improved algorithm.

11. Implementation QAcommand OCC30435 in QABugs_20.cxx used in test bug30435
21 files changed:
src/Approx/Approx_ComputeCLine.gxx
src/Approx/Approx_FitAndDivide.hxx
src/Approx/Approx_FitAndDivide2d.hxx
src/BRepCheck/BRepCheck_Face.cxx
src/BRepFill/BRepFill_ComputeCLine.hxx
src/BRepTopAdaptor/BRepTopAdaptor_FClass2d.cxx
src/ChFi3d/ChFi3d_Builder_6.cxx
src/Extrema/Extrema_ExtElC.cxx
src/GeomliteTest/GeomliteTest_CurveCommands.cxx
src/IntTools/IntTools_EdgeEdge.cxx
src/ProjLib/ProjLib_ComputeApprox.cxx
src/ProjLib/ProjLib_ComputeApproxOnPolarSurface.cxx
src/ProjLib/ProjLib_ComputeApproxOnPolarSurface.hxx
src/ProjLib/ProjLib_ProjectOnPlane.cxx
src/QABugs/QABugs_20.cxx
tests/bugs/mesh/bug30008_2
tests/bugs/modalg_7/bug27711_3
tests/de/step_4/D9
tests/de/step_4/E1
tests/lowalgos/intss/bug27263
tests/perf/moddata/bug30435 [new file with mode: 0644]