occt: master 3065019c

Author Committer Branch Timestamp Parent
msv bugmaster master 2016-08-26 14:33:46 master 84caaf81
Changeset 0027804: Two breps cause intersections to loop for too long/infinitely

In ProjLib_ComputeApprox algorithm, compute correct parametric tolerance from the input 3D tolerance using surface resolution, in order to pass it to low-level 2D algorithm Approx_FitAndDivide2d (instantiation of the generic class Approx_ComputeCLine). Earlier 3D tolerance was used as parametric tolerance directly, which was a problem for surfaces with too small radius of curvature.

Also, eliminate redundant creation of the object of type AppParCurves_MultiCurve on each iteration in the method Approx_ComputeCLine::Compute.

The post treatment of the Edge/Edge intersections has been improved. Namely:
a. Making the procedure of sharing Edge/Edge intersection vertices consistent with intersection algorithm by enlarging bounding box of each vertex on half of Precision::Confusion();
b. Algorithm of computation of vertex tolerance (in order to cover tangent zone between Edges) has been changed for Line/Circle cases.

Test cases for issue CR27804
Adjusting test cases according to their new behavior.

Mark the test boolean/volumemaker/A8 as unstable between different versions of MSVS (2010 and 2013).
mod - src/Approx/Approx_ComputeCLine.gxx Diff File
mod - src/BOPAlgo/BOPAlgo_PaveFiller_3.cxx Diff File
mod - src/ProjLib/ProjLib_ComputeApprox.cxx Diff File
mod - tests/boolean/volumemaker/A8 Diff File
add - tests/bugs/moddata_3/bug27804_1 Diff File
add - tests/bugs/moddata_3/bug27804_2 Diff File