0024915: Wrong intersection curves between two cylinders
authornbv <nbv@opencascade.com>
Fri, 15 Aug 2014 10:35:04 +0000 (14:35 +0400)
committerbugmaster <bugmaster@opencascade.com>
Thu, 21 Aug 2014 11:54:02 +0000 (15:54 +0400)
commitecc4f1489dfbd6e1275465bb6847614eb1131893
tree9c912f7b7e8bd5ac3bdb88d5a04ebec2cc271602
parentd15f387afa4204406b1aab88da737ced73c8d586
0024915: Wrong intersection curves between two cylinders

Existing method of Cylinder-Cylinder intersection computing is based on finding the analytic line (as a function of one argument) and converting one into the walking-line with set of equidistant (along the line parameter) points.

The main advantage of applied method is using adaptively computed step. Necessary step is computed into every point of the obtained walking-line. At that we receive final walking-line directly (without preliminary analytic line) and we determine moments more precisely, when it should be split (see IntPatch_ImpImpIntersection_4.gxx).

The main disadvantages is bad working this method for non-trimmed cylinders (with infinite bounds), because step value is depend on the boundaries values.

More over, new method always returns walking-line, while intersection result can be an analytic curve (lines, circle, ellipse). That is NO good. Therefore, analytic curve is computed by existing method.

In conclusion, in spite of covering almost all more often meeting cases, new method has limited application. Then we should use the existing old method.

Additionally, method MinMax() is added (see Standard_Real.hxx file). It uses into new algorithm.

Some test cases is changed according to their new behavior.

Test case for issue CR24915 is added.

Into GeometryTest_APICommands.cxx only tabulations were chaged.

"Extending" of isolines (see Geom2dHatch_Hatcher.cxx).

Small correction of test case for issue CR24915.
22 files changed:
src/DBRep/DBRep_IsoBuilder.cxx
src/Geom/Geom_CylindricalSurface.cdl
src/Geom2dHatch/Geom2dHatch_Hatcher.cxx
src/GeometryTest/GeometryTest_APICommands.cxx
src/IntAna/IntAna_QuadQuadGeo.cxx
src/IntPatch/IntPatch_ImpImpIntersection.cdl
src/IntPatch/IntPatch_ImpImpIntersection_1.gxx
src/IntPatch/IntPatch_ImpImpIntersection_2.gxx
src/IntPatch/IntPatch_ImpImpIntersection_4.gxx
src/IntPatch/IntPatch_Intersection.cdl
src/IntPatch/IntPatch_Intersection.cxx
src/Standard/Standard_Real.hxx
tests/blend/bfuseblend/B7
tests/bugs/modalg_2/bug22864
tests/bugs/modalg_2/bug22967
tests/bugs/modalg_2/bug23218
tests/bugs/modalg_5/bug24798
tests/bugs/modalg_5/bug24825_common
tests/bugs/modalg_5/bug24825_cut
tests/bugs/modalg_5/bug24825_fuse
tests/bugs/modalg_5/bug24915 [new file with mode: 0755]
tests/bugs/modalg_5/bug24981