1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-09 13:22:24 +03:00

0027114: [Regression to 6.7] DistShapeShape does not find a solution edge-face

Extrema Curve / Surface algorithm changed to perform more accurate search.

test case bug25232_8 - improvement, one additional intersection point is detected now.
test case bug23830 - normal behavior, position of extrema is changed.
Small correction of pro19653 test
test case for original issue added.
This commit is contained in:
aml
2016-01-29 09:11:46 +03:00
parent 8474ba84f8
commit ff85f6086c
6 changed files with 39 additions and 8 deletions

View File

@@ -187,7 +187,10 @@ void Extrema_ExtCS::Perform(const Adaptor3d_Curve& C,
}
if (myS->IsUPeriodic())
NbU = 13;
if (myS->IsVPeriodic())
NbV = 13;
Extrema_GenExtCS Ext(C, *myS, NbT, NbU, NbV, cfirst, clast, ufirst, ulast,
vfirst, vlast, mytolC, mytolS);
@@ -243,7 +246,9 @@ void Extrema_ExtCS::Perform(const Adaptor3d_Curve& C,
Ext.Perform(C, NbT, tmin, tmax, mytolC); // to avoid overflow
}
else {
if(myCtype == GeomAbs_Circle && NbT < 13) {
if((myCtype == GeomAbs_Circle && NbT < 13) ||
(myCtype == GeomAbs_BSplineCurve && NbT < 13))
{
NbT = 13;
}
Ext.Perform(C, NbT, mytolC);

View File

@@ -205,7 +205,7 @@ void Extrema_GenExtCS::Perform (const Adaptor3d_Curve& C,
TUVsup(3) = trimvsup;
// Number of particles used in PSO algorithm (particle swarm optimization).
const Standard_Integer aNbParticles = 32;
const Standard_Integer aNbParticles = 48;
math_PSOParticlesPool aParticles(aNbParticles, 3);

View File

@@ -0,0 +1,26 @@
puts "========"
puts "OCC27114"
puts "========"
puts ""
##############################################
# DistShapeShape gives not all solutions
# Correct result is 2 solutions
##############################################
restore [locate_data_file bug27114.brep] aShape
explode aShape
set anInfo [distmini d aShape_1 aShape_2]
# Check number of solutions
if { [llength $anInfo] != 9 } {
puts "ERROR: Incorrect number of solutions"
} else {
puts "OK: Two solutions is found"
}
# Check extrema distance
set absTol 1.0e-10
set relTol 0.001
set aDist_Exp 0.0
set aDist [dval d_val]
checkreal "Distance value check" $aDist $aDist_Exp $absTol $relTol

View File

@@ -1,5 +1,5 @@
puts "TODO OCC12345 ALL: Faulty : TEST FAILED"
#puts "TODO OCC12345 ALL: Error : The length of result shape is"
puts "TODO OCC12345 ALL: Error : The length of result shape is"
puts "============"
puts "PRO19653"

View File

@@ -26,14 +26,14 @@ mkvolume result fcon3 fp
set square 1706.51
set nb_v_good 4
set nb_e_good 5
set nb_v_good 5
set nb_e_good 6
set nb_w_good 2
set nb_f_good 2
set nb_sh_good 1
set nb_sol_good 1
set nb_compsol_good 0
set nb_compound_good 0
set nb_shape_good 15
set nb_shape_good 17
set 2dviewer 1

View File

@@ -18,7 +18,7 @@ foreach i ${Indices} {
if { [isdraw ext_1] } {
mkedge e ext_1
regexp {Mass +: +([-0-9.+eE]+)} [lprops e] full l
if {$l > 1e-12} {
if {$l > 2.5e-12} {
puts "Error: invalid result"
}
renamevar ext_1 r_$i