}
default: break;
}
- if (mypoints.Size() == 0) {
+ if (mypoints.Size() == 0)
+ {
myDone = Standard_False;
}
} else if (type1 == GeomAbs_Circle && type2 == GeomAbs_Circle) {
}
}
if(!myDone){
+ Standard_Boolean isParallel = myIsPar;
myECC.Perform();
PrepareResults(myECC, U11, U12, U21, U22);
+ myIsPar = myIsPar || isParallel;
}
}
Standard_Integer aNbSegments = Intersector.NbSegments();
for (Standard_Integer i = 1; i <= aNbSegments; i++)
{
- di << "Segment #" << i << " found.\n";
- di << "Curve 1 first parameter:" << S1->FirstParameter() << " last parameter: " << S1->LastParameter() <<"\n";
- di << "Curve 2 first parameter:" << S2->FirstParameter() << " last parameter: " << S2->LastParameter() << "\n";
Intersector.Segment(i,S1,S2);
+ di << "Segment #" << i << " found.\n";
+ di << "Curve 1 first parameter: " << S1->FirstParameter() << " last parameter: " << S1->LastParameter() <<"\n";
+ di << "Curve 2 first parameter: " << S2->FirstParameter() << " last parameter: " << S2->LastParameter() <<"\n";
CD = new DrawTrSurf_Curve2d(S1, Draw_bleu, 30);
dout << CD;
CD = new DrawTrSurf_Curve2d(S2, Draw_violet, 30);
puts "============"
-puts "OCC30217"
+puts "OCC30217_1"
puts "============"
puts ""
#########################################################################
set param11 1.8484218380721342
set param12 1.8484627151687805
set param21 50.908401295062035
-set param22 1.8484627151687805
+set param22 50.909328431594709
set info [2dintersect c2 s2 -tol 1e-8]
regexp {Curve 1 first parameter: +([-0-9.+eE]+) last parameter: +([-0-9.+eE]+)} ${info} full curve1p1 curve1p2
puts "============"
-puts "OCC30217_1"
+puts "OCC30217_2"
puts "============"
puts ""
#########################################################################
drseg s -80.461134694338 53.07587187722 0.0 -31.501464018476 67.029737602069 0.0
circle c -18.339655323916 20.849340929486 0.0 48.019394466707
-set info1 [extrema c s]
-
+set info1 [extrema c s]
if {[regexp "ext" ${info1}] != 1} {
puts "Error : No intersection detected"
} else {
puts "Error: bad distance poins obtained"
} else {
puts "OK: good distance between obtained points"
-}
\ No newline at end of file
+}
\ No newline at end of file
--- /dev/null
+puts "============"
+puts "OCC30217_3"
+puts "============"
+puts ""
+#########################################################################
+# Intersection between a circle and a line not detected (3d)
+#########################################################################
+set tol_abs 2.e-7
+
+drseg s -31.501464018476 67.029737602069 -10.0 -31.501464018476 67.029737602069 0.0
+circle c -18.339655323916 20.849340929486 0.0 48.019394466707
+set info1 [extrema c s]
+if {[regexp "ext" ${info1}] != 1} {
+ puts "Error : No intersection detected"
+} else {
+ puts "OK: Intersection are detected"
+}
+
+# Distance check
+set infoext1 [dump ext_1]
+
+
+regexp "Parameters : 0 +(\[-0-9*\.+eE\]+)" $infoext1 full ext1Length ext2Length
+if { $ext1Length > $tol_abs || $ext2Length > $tol_abs } {
+ puts "Error: bad distance poins obtained"
+} else {
+ puts "OK: good distance between obtained points"
+}
\ No newline at end of file
--- /dev/null
+puts "============"
+puts "OCC30217_4"
+puts "============"
+puts ""
+#########################################################################
+# Intersection between a circle and a line not detected (3d)
+#########################################################################
+
+set ExpDist 5
+
+circle c1 0 0 0 0 0 1 5
+line c2 0 0 0 0 0 1
+trim c2 c2 -1 -5e-8
+
+regexp {Infinite number of extremas, distance = +([-0-9.+eE]+)} [extrema c1 c2] full aDist1
+checkreal Distance $aDist1 $ExpDist 1.0e-7 0.0
+
+regexp {Infinite number of extremas, distance = +([-0-9.+eE]+)} [extrema c2 c1] full aDist2
+checkreal Distance $aDist2 $ExpDist 1.0e-7 0.0
+
\ No newline at end of file