0028222: Intersection of two cylinders fails
authornbv <nbv@opencascade.com>
Thu, 15 Dec 2016 14:22:00 +0000 (17:22 +0300)
committerbugmaster <bugmaster@opencascade.com>
Fri, 26 May 2017 11:48:59 +0000 (14:48 +0300)
commit261b7d9e8a7e2f58c3e1316fa98bd88c274d88f1
tree02011d6d3a40e09b93567fa68f00f3e6cd95eb20
parent0609d8ee53b0b9d31dd49c39acc74ad83304db97
0028222: Intersection of two cylinders fails

1. The reason of exception has been eliminated.

2. Algorithm in IntPatch_WLineTool::JoinWLines(...) method has been modified in order to forbid join curves in the point where more than two intersection lines meet. More over, joining is forbidden if local curvature in the connection point is too big (see function CheckArgumentsToJoin(...) in the file IntPatch_WLineTool.cxx).

3. Interface of IntPatch_WLineTool::JoinWLines(...) method has been modified in order to reduce number of arguments.

4. Small corrections in IsSeamOrBound(...) static function has been made. Namely, check has been added if two boundaries are in the same period region but are too far each to other (see IntPatch_WLineTool.cxx, IsSeamOrBound(...) function, line # 532).

5. "Reversed" flag has been made local. Now, it is pure local characteristic: the algorithm decides itself, shall we reverse the argument order. This correction makes the algorithm more commutative (see issue #25404). However, IntPatch_WLineTool::JoinWLines(...) method can return non-commutative result.

6. Algorithm of searching small intersection curves has been improved.

7. New methods have been added in Bnd_Range class.

Some test cases have been adjusted according to their new behavior.

1. tests\bugs\modalg_6\bug26310_3
   tests\bugs\modalg_6\bug26310_4
   tests\bugs\moddata_2\bug235
   tests\perf\modalg\bug26310_1
   tests\bugs\modalg_5\bug24915

Logic of these cases has been changed. Mover over, additional check has been added in "bug26310_1" test case. Therefore, its performance will be slower than on the current MASTER.

2. tests\bugs\modalg_5\bug25292*

Scripts have been rewritten in order to make it more readable. Logic of these cases has not been changed.
36 files changed:
src/Bnd/Bnd_Range.cxx
src/Bnd/Bnd_Range.hxx
src/ElCLib/ElCLib.cxx
src/IntPatch/IntPatch_ImpImpIntersection_1.gxx
src/IntPatch/IntPatch_ImpImpIntersection_2.gxx
src/IntPatch/IntPatch_ImpImpIntersection_4.gxx
src/IntPatch/IntPatch_Intersection.cxx
src/IntPatch/IntPatch_WLineTool.cxx
src/IntPatch/IntPatch_WLineTool.hxx
tests/bugs/modalg_5/bug24915
tests/bugs/modalg_5/bug25292_11
tests/bugs/modalg_5/bug25292_12
tests/bugs/modalg_5/bug25292_15
tests/bugs/modalg_5/bug25292_16
tests/bugs/modalg_5/bug25292_21
tests/bugs/modalg_5/bug25292_22
tests/bugs/modalg_5/bug25292_25
tests/bugs/modalg_5/bug25292_26
tests/bugs/modalg_5/bug25292_31
tests/bugs/modalg_5/bug25292_32
tests/bugs/modalg_5/bug25292_33
tests/bugs/modalg_5/bug25292_34
tests/bugs/modalg_5/bug25292_35
tests/bugs/modalg_5/bug25292_36
tests/bugs/modalg_6/bug26310_3
tests/bugs/modalg_6/bug26310_4
tests/bugs/modalg_6/bug27310_1
tests/bugs/modalg_6/bug27310_2
tests/bugs/modalg_6/bug27856_2
tests/bugs/modalg_6/bug28009_2
tests/bugs/modalg_6/bug28222_1 [new file with mode: 0644]
tests/bugs/modalg_6/bug28222_2 [new file with mode: 0644]
tests/bugs/modalg_6/bug28222_3 [new file with mode: 0644]
tests/bugs/modalg_6/bug28706 [new file with mode: 0644]
tests/bugs/moddata_2/bug235
tests/perf/modalg/bug26310_1