0024775: False detecting of intersection in BRepMesh_Classifier class.
authorazn <azn@opencascade.com>
Thu, 17 Apr 2014 12:12:49 +0000 (16:12 +0400)
committerapn <apn@opencascade.com>
Thu, 17 Apr 2014 12:13:51 +0000 (16:13 +0400)
Increased checking accuracy of endpoints touching of segments.
Code formatting improvement.
Test case for issue CR24775
Correction test case for issue CR24775

src/BRepMesh/BRepMesh_Classifier.cxx
tests/bugs/mesh/bug24775 [new file with mode: 0755]
tests/mesh/data/standard/V4

index a9c1d45..2c64b04 100644 (file)
@@ -266,10 +266,9 @@ static Standard_Boolean checkWiresIntersection(const Standard_Integer
       Standard_Real dd[2][4] = { {(xc-x11), (xc-x12), (xc-x21), (xc-x22)},   //dX
                                  {(yc-y11), (yc-y12), (yc-y21), (yc-y22)} }; //dY
 
-      Standard_Integer i = 0;
-      for(; i < 2; i++ )
+      for( Standard_Integer i = 0; i < 2; i++ )
       {
-        if ( dd[i][0]*dd[i][1] > dTol || dd[i][2]*dd[i][3] > dTol)
+        if ( dd[i][0] * dd[i][1] > RESOLUTION || dd[i][2] * dd[i][3] > RESOLUTION )
         {
           isOnLines = Standard_False;
           break;
@@ -279,7 +278,7 @@ static Standard_Boolean checkWiresIntersection(const Standard_Integer
       // check the intersection point is on the ends of segments
       if ( isOnLines )
       {
-        for( i = 0; i < 2; i++ )
+        for( Standard_Integer i = 0; i < 2; i++ )
         {
           //     if it's the last segment and intersection point lies at the end
           if ( ( jk == jkEnd                                              ||
diff --git a/tests/bugs/mesh/bug24775 b/tests/bugs/mesh/bug24775
new file mode 100755 (executable)
index 0000000..d6f888d
--- /dev/null
@@ -0,0 +1,35 @@
+puts "================"
+puts "CR24775"
+puts "================"
+puts ""
+###############################################
+## False detecting of intersection in BRepMesh_Classifier class.
+###############################################
+
+restore [locate_data_file bug24775_face.brep] face
+vinit
+vdisplay face
+vfit
+
+set trinfo_s [trinfo face]
+regexp {([0-9]+) triangles} ${trinfo_s} str nbtri_s
+regexp {([0-9]+) nodes} ${trinfo_s} str nbnod_s
+regexp {deflection ([0-9.+e-]+)} ${trinfo_s} str defl_s
+
+if { ${nbtri_s} == 0 } {
+   puts "Error: shape contains 0 triangles"
+} else {
+   puts "OK: shape contains triangles"
+}
+
+if { ${nbnod_s} == 0 } {
+   puts "Error: shape contains 0 nodes"
+} else {
+   puts "OK: shape contains nodes"
+}
+
+if { ${defl_s} == 0 } {
+   puts "Error: deflection is 0"
+} else {
+   puts "OK: deflection is good"
+}
index b496eb8..93a64fd 100755 (executable)
@@ -2,5 +2,4 @@ set TheFileName shading_wrongshape_015.brep
 set bug_withouttri "OCC22687"
 set bug_freenodes "OCC23105"
 set nbfreenodes(ALL) 4
-set nbwithouttri(All) 6
-
+set nbwithouttri(All) 5