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

0032066: Modeling Algorithms - Incorrect result of Boolean CUT operation

Do not limit the normalization factor of the highly anisotropic parametric space when filtering start points in the algorithm of walking line construction.
Additionally check the knots are in the increasing orders when merging two B-spline curves
This commit is contained in:
azv
2021-02-19 22:34:56 +03:00
committed by smoskvin
parent 7573a45deb
commit 9140163ba8
4 changed files with 38 additions and 12 deletions

View File

@@ -400,8 +400,15 @@ Standard_Boolean IntWalk_IWalking::TestArretPassage
//Normalizing factor. If it is less than 1.0 then the range will be expanded.
//This is no good for computation. Therefore, it is limited.
const Standard_Real deltau = mySRangeU.IsVoid() ? UM - Um : Max(mySRangeU.Delta(), 1.0);
const Standard_Real deltav = mySRangeV.IsVoid() ? VM - Vm : Max(mySRangeV.Delta(), 1.0);
//Do not limit this factor in case of highly anisotropic parametrization
//(parametric space is considerably larger in one direction than another).
const Standard_Boolean isHighlyAnisotropic = Max(tolu, tolv) > 1000. * Min(tolu, tolv);
const Standard_Real deltau = mySRangeU.IsVoid() ? UM - Um
: (isHighlyAnisotropic ? mySRangeU.Delta()
: Max(mySRangeU.Delta(), 1.0));
const Standard_Real deltav = mySRangeV.IsVoid() ? VM - Vm
: (isHighlyAnisotropic ? mySRangeV.Delta()
: Max(mySRangeV.Delta(), 1.0));
Up/=deltau; UV1/=deltau;
Vp/=deltav; UV2/=deltav;