mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-04-10 18:51:21 +03:00
0024775: False detecting of intersection in BRepMesh_Classifier class.
Increased checking accuracy of endpoints touching of segments. Code formatting improvement. Test case for issue CR24775 Correction test case for issue CR24775
This commit is contained in:
parent
31249d1967
commit
e28d7e62f9
@ -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
|
Standard_Real dd[2][4] = { {(xc-x11), (xc-x12), (xc-x21), (xc-x22)}, //dX
|
||||||
{(yc-y11), (yc-y12), (yc-y21), (yc-y22)} }; //dY
|
{(yc-y11), (yc-y12), (yc-y21), (yc-y22)} }; //dY
|
||||||
|
|
||||||
Standard_Integer i = 0;
|
for( Standard_Integer i = 0; i < 2; i++ )
|
||||||
for(; 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;
|
isOnLines = Standard_False;
|
||||||
break;
|
break;
|
||||||
@ -279,7 +278,7 @@ static Standard_Boolean checkWiresIntersection(const Standard_Integer
|
|||||||
// check the intersection point is on the ends of segments
|
// check the intersection point is on the ends of segments
|
||||||
if ( isOnLines )
|
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 it's the last segment and intersection point lies at the end
|
||||||
if ( ( jk == jkEnd ||
|
if ( ( jk == jkEnd ||
|
||||||
|
35
tests/bugs/mesh/bug24775
Executable file
35
tests/bugs/mesh/bug24775
Executable file
@ -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"
|
||||||
|
}
|
@ -2,5 +2,4 @@ set TheFileName shading_wrongshape_015.brep
|
|||||||
set bug_withouttri "OCC22687"
|
set bug_withouttri "OCC22687"
|
||||||
set bug_freenodes "OCC23105"
|
set bug_freenodes "OCC23105"
|
||||||
set nbfreenodes(ALL) 4
|
set nbfreenodes(ALL) 4
|
||||||
set nbwithouttri(All) 6
|
set nbwithouttri(All) 5
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user