0027557: Unstable HLR tests
authorjgv <jgv@opencascade.com>
Mon, 6 Jun 2016 15:58:40 +0000 (18:58 +0300)
committerbugmaster <bugmaster@opencascade.com>
Thu, 9 Jun 2016 09:38:15 +0000 (12:38 +0300)
The following modifications were done for stability:
- Precision::PConfusion() was set as parameter of Classifier instead of 0.0
- Coinciding vertices of outlines are united to exclude neighborhood of common vertex from curve-curve intersection
- Draw command "hlrin3d" was modified to prevent exception

Minor corrections

Corrections of test cases for issue CR27557

33 files changed:
src/HLRBRep/HLRBRep_Data.cxx
src/HLRTest/HLRTest.cxx
src/HLRTopoBRep/HLRTopoBRep_DSFiller.cxx
tests/bugs/modalg_6/bug25908
tests/bugs/modalg_6/bug27341_102
tests/bugs/modalg_6/bug27341_103
tests/bugs/modalg_6/bug27341_301
tests/bugs/modalg_6/bug27341_302
tests/bugs/modalg_6/bug27341_303
tests/bugs/modalg_6/bug27341_304
tests/bugs/modalg_6/bug27341_305
tests/bugs/modalg_6/bug27341_306
tests/bugs/modalg_6/bug27341_307
tests/bugs/modalg_6/bug27341_308
tests/bugs/modalg_6/bug27341_309
tests/bugs/modalg_6/bug27341_310
tests/bugs/modalg_6/bug27341_311
tests/bugs/modalg_6/bug27341_312
tests/bugs/modalg_6/bug27341_313
tests/bugs/modalg_6/bug27341_314
tests/bugs/modalg_6/bug27341_315
tests/bugs/modalg_6/bug27341_316
tests/bugs/modalg_6/bug27341_317
tests/bugs/modalg_6/bug27341_318
tests/bugs/modalg_6/bug27341_319
tests/bugs/modalg_6/bug27341_320
tests/bugs/modalg_6/bug27341_322
tests/bugs/modalg_6/bug27341_323
tests/bugs/modalg_6/bug27341_324
tests/bugs/modalg_6/bug27341_326
tests/bugs/modalg_6/bug27341_327
tests/bugs/modalg_6/bug27341_328
tests/bugs/modalg_6/bug27341_329

index 4f6ac72..63e7ee0 100644 (file)
@@ -1987,7 +1987,7 @@ HLRBRep_Data::Classify (const Standard_Integer E,
     HLRAlgo::EncodeMinMax((Standard_Address)VertMin,
                          (Standard_Address)VertMax,
                          (Standard_Address)MinMaxVert);
-
+    /*
 #ifdef OCCT_DEBUG
        {
          Standard_Integer qwe,qwep8,q,q1,q2;
@@ -2027,6 +2027,7 @@ HLRBRep_Data::Classify (const Standard_Integer E,
          cout<<endl;
        }
  #endif
+    */
 
     if (((MaxFace1 - MinVert1) & 0x80008000) != 0 ||
        ((MaxVert1 - MinFace1) & 0x80008000) != 0 ||
@@ -2109,7 +2110,9 @@ HLRBRep_Data::Classify (const Standard_Integer E,
            
            do {
              gp_Pnt2d pnt2d(u,v);
-             if (myClassifier->Classify(pnt2d,0.0)!=TopAbs_OUT) {
+             if (myClassifier->Classify(pnt2d,Precision::PConfusion())
+                  != TopAbs_OUT)
+              {
                InsideRestriction = Standard_True;
                state = TopAbs_IN;
                Level++;
index 891dc05..2af070d 100644 (file)
@@ -487,11 +487,14 @@ static Standard_Integer hlrin3d(Draw_Interpretor& , Standard_Integer n, const ch
   BB.MakeCompound(Result);
   
   TopoDS_Shape SharpEdges = Reflector.GetCompoundOf3dEdges(HLRBRep_Sharp, Standard_True, Standard_True);
-  BB.Add(Result, SharpEdges);
+  if (!SharpEdges.IsNull())
+    BB.Add(Result, SharpEdges);
   TopoDS_Shape OutLines = Reflector.GetCompoundOf3dEdges(HLRBRep_OutLine, Standard_True, Standard_True);
-  BB.Add(Result, OutLines);
+  if (!OutLines.IsNull())
+    BB.Add(Result, OutLines);
   TopoDS_Shape SmoothEdges = Reflector.GetCompoundOf3dEdges(HLRBRep_Rg1Line, Standard_True, Standard_True);
-  BB.Add(Result, SmoothEdges);
+  if (!SmoothEdges.IsNull())
+    BB.Add(Result, SmoothEdges);
   
   DBRep::Set(a[1], Result);
 
index 3237d0e..d451dc8 100644 (file)
@@ -454,6 +454,46 @@ void  HLRTopoBRep_DSFiller::InsertFace (const Standard_Integer /*FI*/,
       }
     }
   }
+
+  //Correction of internal outlines: unite coinciding vertices
+  const Standard_Real SqTol = tol*tol;
+  TopTools_ListIteratorOfListOfShape itl1(IntL);
+  for (; itl1.More(); itl1.Next())
+  {
+    TopoDS_Edge anIntLine = TopoDS::Edge(itl1.Value());
+    anIntLine.Orientation(TopAbs_FORWARD);
+    TopoDS_Vertex aVer [2];
+    TopExp::Vertices(anIntLine, aVer[0], aVer[1]);
+    TopTools_ListIteratorOfListOfShape itl2 = itl1;
+    for (; itl2.More(); itl2.Next())
+    {
+      TopoDS_Edge anIntLine2 = TopoDS::Edge(itl2.Value());
+      anIntLine2.Orientation(TopAbs_FORWARD);
+      if (anIntLine2.IsSame(anIntLine))
+        continue;
+      TopoDS_Vertex aVer2 [2];
+      TopExp::Vertices(anIntLine2, aVer2[0], aVer2[1]);
+      for (Standard_Integer i = 0; i < 2; i++)
+      {
+        if (i == 1 && aVer[0].IsSame(aVer[1]))
+          continue;
+        gp_Pnt Pnt1 = BRep_Tool::Pnt(aVer[i]);
+        for (Standard_Integer j = 0; j < 2; j++)
+        {
+          if (aVer[i].IsSame(aVer2[j]))
+            continue;
+          gp_Pnt Pnt2 = BRep_Tool::Pnt(aVer2[j]);
+          if (Pnt1.SquareDistance(Pnt2) <= SqTol)
+          {
+            BRep_Builder aBB;
+            aBB.Remove(anIntLine2, aVer2[j]);
+            aVer[i].Orientation((j==0)? TopAbs_FORWARD : TopAbs_REVERSED);
+            aBB.Add(anIntLine2, aVer[i]);
+          }
+        }
+      }
+    }
+  }
 }
 
 //=======================================================================
index 6e497b3..9adc038 100755 (executable)
@@ -20,15 +20,15 @@ compound vl v1l vnl vol vil result
 
 set nbshapes_expected "
 Number of shapes in shape
- VERTEX    : 167
- EDGE      : 84
+ VERTEX    : 93
+ EDGE      : 47
  WIRE      : 0
  FACE      : 0
  SHELL     : 0
  SOLID     : 0
  COMPSOLID : 0
  COMPOUND  : 1
- SHAPE     : 252
+ SHAPE     : 141
 "
 
 checknbshapes result -ref ${nbshapes_expected} -t -m "HLRToShape"
index b96ea1b..66d389f 100644 (file)
@@ -22,6 +22,6 @@ build3d result
 fit
 
 checkprops result -l 291.117
-checknbshapes result -vertex 18 -edge 9
+checknbshapes result -vertex 16 -edge 8
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index 8876798..1dcb7f0 100644 (file)
@@ -22,12 +22,6 @@ build3d result
 fit
 
 checkprops result -l 334.113
-
-# 0027526: Excess micro-edge in HLR visualization of a torus
-if { [regexp {Windows} [dversion]] } {
-   checknbshapes result -vertex 24 -edge 12
-} else {
-   checknbshapes result -vertex 26 -edge 13
-}
+checknbshapes result -vertex 24 -edge 12
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index c94be6e..5c48031 100644 (file)
@@ -22,7 +22,7 @@ build3d result
 
 fit
 
-checkprops result -l 1188.11
-checknbshapes result -vertex 324 -edge 163
+checkprops result -l 1030.62
+checknbshapes result -vertex 236 -edge 119
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index a4efaf4..c6289f3 100644 (file)
@@ -22,13 +22,7 @@ build3d result
 
 fit
 
-checkprops result -l 425.969
-
-# 0027526: Excess micro-edge in HLR visualization of a torus
-if { [regexp {Windows} [dversion]] } {
-   checknbshapes result -vertex 198 -edge 99
-} else {
-   checknbshapes result -vertex 200 -edge 100
-}
+checkprops result -l 414.732
+checknbshapes result -vertex 200 -edge 100
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index 38d8dc1..0d5fe66 100644 (file)
@@ -22,7 +22,7 @@ build3d result
 
 fit
 
-checkprops result -l 3299.23
-checknbshapes result -vertex 648 -edge 324
+checkprops result -l 3249.9
+checknbshapes result -vertex 634 -edge 317
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index ac74a3e..0eb1c3b 100644 (file)
@@ -22,7 +22,7 @@ build3d result
 
 fit
 
-checkprops result -l 3016.59
-checknbshapes result -vertex 1388 -edge 696
+checkprops result -l 2867.9
+checknbshapes result -vertex 1365 -edge 684
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index 919c0ed..1cc1338 100644 (file)
@@ -23,6 +23,6 @@ build3d result
 fit
 
 checkprops result -l 1760.66
-checknbshapes result -vertex 508 -edge 254
+checknbshapes result -vertex 500 -edge 250
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index bea0290..96e3667 100644 (file)
@@ -23,6 +23,6 @@ build3d result
 fit
 
 checkprops result -l 2893.98
-checknbshapes result -vertex 725 -edge 363
+checknbshapes result -vertex 697 -edge 349
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index 50e8e2f..9981db4 100644 (file)
@@ -22,13 +22,7 @@ build3d result
 
 fit
 
-# 0027526: Excess micro-edge in HLR visualization of a torus
-if { [regexp {Windows} [dversion]] } {
-   checkprops result -l 2377.14
-   checknbshapes result -vertex 1008 -edge 507
-} else {
-   checkprops result -l 2345.73
-   checknbshapes result -vertex 1007 -edge 506
-}
+checkprops result -l 2282.11
+checknbshapes result -vertex 943 -edge 474
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index ee1ea92..86251a4 100644 (file)
@@ -22,7 +22,7 @@ build3d result
 
 fit
 
-checkprops result -l 1260.37
-checknbshapes result -vertex 527 -edge 264
+checkprops result -l 1169.48
+checknbshapes result -vertex 482 -edge 241
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index 140784c..b0c072f 100644 (file)
@@ -22,7 +22,7 @@ build3d result
 
 fit
 
-checkprops result -l 2040.68
-checknbshapes result -vertex 344 -edge 172
+checkprops result -l 2010.95
+checknbshapes result -vertex 312 -edge 156
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index 68b7681..5f3f168 100644 (file)
@@ -22,7 +22,7 @@ build3d result
 
 fit
 
-checkprops result -l 808.299
-checknbshapes result -vertex 578 -edge 289
+checkprops result -l 778.117
+checknbshapes result -vertex 550 -edge 275
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index cb19133..539909a 100644 (file)
@@ -22,7 +22,7 @@ build3d result
 
 fit
 
-checkprops result -l 1124.09
-checknbshapes result -vertex 354 -edge 177
+checkprops result -l 1095.44
+checknbshapes result -vertex 328 -edge 164
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index f9296c6..6fe0f08 100644 (file)
@@ -23,6 +23,6 @@ build3d result
 fit
 
 checkprops result -l 520.703
-checknbshapes result -vertex 310 -edge 155
+checknbshapes result -vertex 306 -edge 153
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index 8010ba3..f4f64f6 100644 (file)
@@ -23,6 +23,6 @@ build3d result
 fit
 
 checkprops result -l 9662.5
-checknbshapes result -vertex 4531 -edge 2272
+checknbshapes result -vertex 4417 -edge 2215
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index f85af44..202779d 100644 (file)
@@ -23,12 +23,6 @@ build3d result
 fit
 
 checkprops result -l 5910.01
-
-# 0027526: Excess micro-edge in HLR visualization of a torus
-if { [regexp {Windows} [dversion]] } {
-   checknbshapes result -vertex 1461 -edge 731
-} else {
-   checknbshapes result -vertex 1460 -edge 730
-}
+checknbshapes result -vertex 1406 -edge 703
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index 371de00..e2e8168 100644 (file)
@@ -22,13 +22,7 @@ build3d result
 
 fit
 
-checkprops result -l 5343.53
-
-# 0027526: Excess micro-edge in HLR visualization of a torus
-if { [regexp {Windows} [dversion]] } {
-   checknbshapes result -vertex 1813 -edge 909
-} else {
-   checknbshapes result -vertex 1812 -edge 908
-}
+checkprops result -l 5219.21
+checknbshapes result -vertex 1692 -edge 848
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index 084b3a5..b6fdfd2 100644 (file)
@@ -23,6 +23,6 @@ build3d result
 fit
 
 checkprops result -l 1764.64
-checknbshapes result -vertex 353 -edge 177
+checknbshapes result -vertex 345 -edge 173
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index b678670..ba824f0 100644 (file)
@@ -22,7 +22,7 @@ build3d result
 
 fit
 
-checkprops result -l 2647.04
-checknbshapes result -vertex 614 -edge 307
+checkprops result -l 2619.72
+checknbshapes result -vertex 578 -edge 289
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index 24fcd64..9aa7a7c 100644 (file)
@@ -23,6 +23,6 @@ build3d result
 fit
 
 checkprops result -l 2429.7
-checknbshapes result -vertex 387 -edge 194
+checknbshapes result -vertex 379 -edge 190
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index 7b8fbd6..a03d77f 100644 (file)
@@ -22,7 +22,7 @@ build3d result
 
 fit
 
-checkprops result -l 792.344
-checknbshapes result -vertex 410 -edge 205
+checkprops result -l 755.552
+checknbshapes result -vertex 376 -edge 188
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index 798d120..6f2b240 100644 (file)
@@ -22,7 +22,7 @@ build3d result
 
 fit
 
-checkprops result -l 1751.95
-checknbshapes result -vertex 867 -edge 434
+checkprops result -l 1726.77
+checknbshapes result -vertex 801 -edge 401
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index abdf1bd..51cd011 100644 (file)
@@ -23,12 +23,6 @@ build3d result
 fit
 
 checkprops result -l 6584.94
-
-# 0027526: Excess micro-edge in HLR visualization of a torus
-if { [regexp {Windows} [dversion]] } {
-   checknbshapes result -vertex 819 -edge 410
-} else {
-   checknbshapes result -vertex 818 -edge 409
-}
+checknbshapes result -vertex 774 -edge 387
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index c04566c..c519478 100644 (file)
@@ -22,7 +22,7 @@ build3d result
 
 fit
 
-checkprops result -l 838.306
-checknbshapes result -vertex 478 -edge 239
+checkprops result -l 813.531
+checknbshapes result -vertex 452 -edge 226
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index edd427b..dad9044 100644 (file)
@@ -22,7 +22,7 @@ build3d result
 
 fit
 
-checkprops result -l 220.507
-checknbshapes result -vertex 110 -edge 55
+checkprops result -l 211.007
+checknbshapes result -vertex 102 -edge 51
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index d760d25..dedf13d 100644 (file)
@@ -22,7 +22,7 @@ build3d result
 
 fit
 
-checkprops result -l 565.837
-checknbshapes result -vertex 324 -edge 162
+checkprops result -l 521.037
+checknbshapes result -vertex 316 -edge 158
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index 0656bb6..a722999 100644 (file)
@@ -11,7 +11,7 @@ pload QAcommands
 
 testreadstep [locate_data_file bug27341_conboom.stp] a
 
-set viewname "right"
+set viewname "back"
 
 smallview
 top
@@ -22,7 +22,7 @@ build3d result
 
 fit
 
-checkprops result -l 23600.7
-checknbshapes result -vertex 174 -edge 87
+checkprops result -l 48596.2
+checknbshapes result -vertex 312 -edge 156
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index cb3a3d9..4aef177 100644 (file)
@@ -22,7 +22,7 @@ build3d result
 
 fit
 
-checkprops result -l 47.1886
-checknbshapes result -vertex 70 -edge 35
+checkprops result -l 40.3211
+checknbshapes result -vertex 60 -edge 30
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index 9c9d9b7..3313c76 100644 (file)
@@ -24,7 +24,7 @@ build3d result
 
 fit
 
-checkprops result -l 1147.49
-checknbshapes result -vertex 298 -edge 149
+checkprops result -l 1126.76
+checknbshapes result -vertex 280 -edge 140
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png