]> OCCT Git - occt-copy.git/commitdiff
0028637: [regression] Extrema curve - curve can not find correct solution between...
authorifv <ifv@opencascade.com>
Thu, 18 May 2017 13:10:45 +0000 (16:10 +0300)
committerbugmaster <bugmaster@opencascade.com>
Thu, 25 May 2017 08:35:53 +0000 (11:35 +0300)
Adding condition for preventing decreasing Lipschitz constant if derivative are too small
Test case is created

src/Extrema/Extrema_GenExtCC.gxx
tests/bugs/modalg_6/bug28637 [new file with mode: 0644]

index 63294ae1bd9e2fda0af9b529732258389f2bfe83..a03e33d116a549e3b1b58c92119845ee5647055c 100644 (file)
@@ -220,6 +220,12 @@ void Extrema_GenExtCC::Perform()
 
   // Change constant value according to the concrete curve types.
   Standard_Boolean isConstLockedFlag = Standard_False;
+  //To prevent LipConst to became too small
+  const Standard_Real aCR = 0.001;
+  if (aMaxDer1 / aMaxDer < aCR || aMaxDer2 / aMaxDer < aCR)
+  {
+    isConstLockedFlag = Standard_True;
+  }
   if (C1.GetType() == GeomAbs_Line)
   {
     aMaxDer = 1.0 / C2.Resolution(1.0);
diff --git a/tests/bugs/modalg_6/bug28637 b/tests/bugs/modalg_6/bug28637
new file mode 100644 (file)
index 0000000..5caeda3
--- /dev/null
@@ -0,0 +1,12 @@
+puts "========"
+puts "OCC28637"
+puts "========"
+puts ""
+####################################################################################
+## [regression] Extrema curve - curve can not find correct solution between edge based on the line and BSpline edge
+####################################################################################
+
+restore [locate_data_file bug28637_shapes.brep] b
+explode b
+distmini d b_1 b_2
+checkprops d -l 4.46857e-005 -deps 1.e-2