]> OCCT Git - occt-copy.git/commitdiff
0026374: GeomFill_Profiler fails to unify BSplines if one has knot distance less...
authorapl <apl@opencascade.com>
Mon, 30 May 2016 09:39:42 +0000 (12:39 +0300)
committerapl <anton.poletaev@opencascade.com>
Thu, 20 Apr 2017 13:05:14 +0000 (16:05 +0300)
src/Geom/Geom_BSplineCurve.cxx
src/Geom/Geom_BSplineSurface.cxx

index 195d56f904f96b2b95d1278e380f0fb9d09cfdd2..eb34bba1c4934352e17c8123b132a0dddeb89de1 100644 (file)
@@ -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);
 
index 2d7153accf3ae8c2093a65ae07ca6c287dc6ecf7..6790e819d91decc89cd0a7717299461e48f8c716 100644 (file)
@@ -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();