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.
test case for original issue added.
}
-
+ 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);
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);
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);
--- /dev/null
+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
\ No newline at end of file
checkprops result -s 1706.51
checkshape result
-checknbshapes result -vertex 4 -edge 5 -wire 2 -face 2 -shell 1 -solid 1 -compsolid 0 -compound 0 -shape 15
+checknbshapes result -vertex 5 -edge 6 -wire 2 -face 2 -shell 1 -solid 1 -compsolid 0 -compound 0 -shape 17
checkview -display result -2d -path ${imagedir}/${test_image}.png
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