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

0025820: No Intersection Curves between surface of revolution and planes

Thin shapes processing has been improved.

Test-cases for issue #25820

Comment has been changed
This commit is contained in:
nbv
2015-06-18 13:30:34 +03:00
committed by bugmaster
parent b028f13535
commit c0e32b3c3d
5 changed files with 143 additions and 2 deletions

View File

@@ -107,8 +107,18 @@ IntWalk_StatusDeflection IntWalk_IWalking::TestDeflection
}
}
if (Abs(Du) < tolerance(1) && Abs(Dv) < tolerance(2))
const Standard_Real aMinTolU = 0.1*Abs(Step*previousd2d.X()),
aMinTolV = 0.1*Abs(Step*previousd2d.Y());
if ((Abs(Du) < Min(tolerance(1), aMinTolU)) && (Abs(Dv) < Min(tolerance(2), aMinTolV)))
{
//Thin shapes (for which Ulast-Ufirst or/and Vlast-Vfirst is quite small)
//exists (see bug #25820). In this case, step is quite small too.
//Nevertheless, it not always means that we mark time. Therefore, Du and Dv
//must consider step (aMinTolU and aMinTolV parameters).
return IntWalk_ArretSurPointPrecedent; //confused point 2d
}
Standard_Real Cosi = StepSign * (Du * previousd2d.X() + Dv * previousd2d.Y());