mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-14 13:30:48 +03:00
0030590: Wrong result of Boolean Cut algorithm
Modification in static method BoundedArc of IntStart_SearchOnBoundaries: add exact intersection of canonical curve-surface (when Func is IntPatch_ArcFunction).
This commit is contained in:
@@ -428,8 +428,10 @@ void IntAna_Curve::FindParameter(const gp_Pnt& theP,
|
||||
TColStd_ListOfReal& theParams) const
|
||||
{
|
||||
const Standard_Real aPIpPI = M_PI + M_PI,
|
||||
anEpsAng = 1.e-8,
|
||||
aSqTolPrecision=1.0e-8;
|
||||
anEpsAng = 1.e-8,
|
||||
InternalPrecision = 1.e-8, //precision of internal algorithm of values computation
|
||||
aSqTolPrecision = Precision::SquareConfusion(); //for boundary points to check their coincidence with others
|
||||
|
||||
Standard_Real aTheta = 0.0;
|
||||
//
|
||||
switch (typequadric)
|
||||
@@ -494,7 +496,15 @@ void IntAna_Curve::FindParameter(const gp_Pnt& theP,
|
||||
InternalUVValue(aParams[i], U, V, A, B, C,
|
||||
cost, sint, SigneSqrtDis);
|
||||
const gp_Pnt aP(InternalValue(U, V));
|
||||
if (aP.SquareDistance(theP) < aSqTolPrecision)
|
||||
|
||||
Standard_Real aSqTol;
|
||||
if (aParams[i] == aTheta ||
|
||||
(TwoCurves && aParams[i] == DomainSup + DomainSup - aTheta))
|
||||
aSqTol = InternalPrecision;
|
||||
else
|
||||
aSqTol = aSqTolPrecision;
|
||||
|
||||
if (aP.SquareDistance(theP) < aSqTol)
|
||||
{
|
||||
theParams.Append(aParams[i]);
|
||||
}
|
||||
|
Reference in New Issue
Block a user