0023830: BRepExtrema_DistShapeShape does not find intersection of face with edge
authorabk <abk@opencascade.com>
Wed, 17 Apr 2013 11:33:27 +0000 (15:33 +0400)
committerabk <abk@opencascade.com>
Wed, 17 Apr 2013 11:33:27 +0000 (15:33 +0400)
commitb659a6dc194c9ce0f80ee548442a36fc861f976e
tree90864ce33f8d68ffef646177b83d95819fc4655b
parent729d84d4f977dd8dc7724ccaae3127842cdcaf17
0023830: BRepExtrema_DistShapeShape does not find intersection of face with edge

Data member myIsDivergent was added to class math_FunctionSetRoot.
The member is initialized in method Perform start by Standard_False. The member is changed in the method to Standard_True if an approximation point is located outside of search set.

Method IsDivergent was added to class math_FunctionSetRoot.
The method returns value of myIsDivergent.

Parameter theStopOnDivergent with default value Standard_False was added to
a constructor and method Perform of class math_FunctionSetRoot.
The parameter shows whether return from method Perform if myIsDivergent
became Standard_True.

Class Extrema_GenExtCS was optimized for dynamic memory consumption:
the class surface values are not stored now.

Method Perform of class Extrema_GenExtCS was improved for local extreme
search in case of iteration algorithm divergence. Size of the algorithm
grid cell for initial approximation is reduced by 2 in the case. The count
of the reduces is limited.
Build fix in *.cdl.
Case of extrusion was carried out of the repeat loop.

Division method of the 3-dimensional grid (curve param, surface first
param, surface second param) by two was replaced by method of moving the
grid.

The moving method is about two times faster than division method.
Now grid moving method is depending on some average linear sizes of the curve and the surface.
In case (theStopOnDivergent && myIsDivergent) method math_FunctionSetRoot::Perform sets Done to Standard_False and discard it's last solution.
Test case for the bug fix.
Test case correction
Initial approximation was corrected for search of maximum in Extrema_GenExtCS::Perform.
Test case bugs moddata_3 bug23830 was formatted.
src/Extrema/Extrema_GenExtCS.cxx
src/math/math_FunctionSetRoot.cdl
src/math/math_FunctionSetRoot.cxx
src/math/math_FunctionSetRoot.lxx
tests/bugs/moddata_3/bug23830 [new file with mode: 0755]