1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-04 13:13:25 +03:00

0027300: Boolean operation produces invalid shape in terms of "bopargcheck" command

1. Check, if value found by math_PSO algorithm cannot be precised by math_NewtonMinimum algorithm. In this case, we call math_PSO algorithm repeatedly, however, with other parameters.

2. Some margin of edge tolerance value has been provided in IntTools_Tools class.

3. Interface of math_NewtonMinimum class has been changed (method GetStatus() has been added).

Correction of some test cases according to their new behavior.
This commit is contained in:
nbv
2016-03-29 16:29:55 +03:00
committed by bugmaster
parent cb120537bf
commit 243505b81b
8 changed files with 109 additions and 52 deletions

View File

@@ -797,8 +797,16 @@ Standard_Boolean IntTools_Tools::ComputeTolerance
if (!aCS.IsDone()) {
return Standard_False;
}
//
theMaxDist = aCS.MaxDistance();
//Obtaining precise result is impossible if we use
//numeric methods for solution. Therefore, we must provide
//some margin. Otherwise, in the future
//(when geometrical properties of the curve will be changed,
//e.g. after trimming) we will be able to come
//to the more precise minimum point. As result, this curve with the
//tolerance computed earlier will become invalid.
const Standard_Real anEps = (1.0+1.0e-9);
theMaxDist = anEps*aCS.MaxDistance();
theMaxPar = aCS.MaxParameter();
//
return Standard_True;