From 2029028dfa2f7fa39e8282b1aad1d0182a4b705b Mon Sep 17 00:00:00 2001 From: apl Date: Mon, 30 May 2016 12:39:42 +0300 Subject: [PATCH] 0026374: GeomFill_Profiler fails to unify BSplines if one has knot distance less than PConf --- src/Geom/Geom_BSplineCurve.cxx | 2 +- src/Geom/Geom_BSplineSurface.cxx | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Geom/Geom_BSplineCurve.cxx b/src/Geom/Geom_BSplineCurve.cxx index 195d56f904..eb34bba1c4 100644 --- a/src/Geom/Geom_BSplineCurve.cxx +++ b/src/Geom/Geom_BSplineCurve.cxx @@ -571,7 +571,7 @@ void Geom_BSplineCurve::Segment(const Standard_Real U1, AbsUMax = Max(AbsUMax, Max(Abs(FirstParameter()),Abs(LastParameter()))); // Modified by Sergey KHROMOV - Fri Apr 11 12:15:40 2003 End - Standard_Real Eps = 100. * Epsilon(AbsUMax); + Standard_Real Eps = Max (Epsilon(AbsUMax), Precision::PConfusion()); InsertKnots( Knots, Mults, Eps); diff --git a/src/Geom/Geom_BSplineSurface.cxx b/src/Geom/Geom_BSplineSurface.cxx index 2d7153accf..6790e819d9 100644 --- a/src/Geom/Geom_BSplineSurface.cxx +++ b/src/Geom/Geom_BSplineSurface.cxx @@ -541,7 +541,7 @@ void Geom_BSplineSurface::Segment(const Standard_Real U1, if ((U2 < U1) || (V2 < V1)) Standard_DomainError::Raise("Geom_BSplineSurface::Segment"); Standard_Real deltaU = Max(Abs(U2),Abs(U1)); - Standard_Real EpsU = Epsilon(deltaU); + Standard_Real EpsU = Max (Epsilon(deltaU), Precision::PConfusion()); deltaU = U2 - U1; if (uperiodic) { Standard_Real aUPeriod = uknots->Last() - uknots->First(); @@ -552,7 +552,7 @@ void Geom_BSplineSurface::Segment(const Standard_Real U1, } Standard_Real deltaV = Max(Abs(V2),Abs(V1)); - Standard_Real EpsV = Epsilon(deltaV); + Standard_Real EpsV = Max (Epsilon(deltaV), Precision::PConfusion()); deltaV = V2 - V1; if (vperiodic) { Standard_Real aVPeriod = vknots->Last() - vknots->First(); @@ -763,7 +763,7 @@ void Geom_BSplineSurface::CheckAndSegment(const Standard_Real U1, if ((U2 < U1) || (V2 < V1)) Standard_DomainError::Raise("Geom_BSplineSurface::CheckAndSegment"); Standard_Real deltaU = Max(Abs(U2),Abs(U1)); - Standard_Real EpsU = Epsilon(deltaU); + Standard_Real EpsU = Max (Epsilon(deltaU), Precision::PConfusion()); deltaU = U2 - U1; if (uperiodic) { Standard_Real aUPeriod = uknots->Last() - uknots->First(); @@ -774,7 +774,7 @@ void Geom_BSplineSurface::CheckAndSegment(const Standard_Real U1, } Standard_Real deltaV = Max(Abs(V2),Abs(V1)); - Standard_Real EpsV = Epsilon(deltaV); + Standard_Real EpsV = Max (Epsilon(deltaV), Precision::PConfusion()); deltaV = V2 - V1; if (vperiodic) { Standard_Real aVPeriod = vknots->Last() - vknots->First(); -- 2.39.5