PeriodicInterval C1Domain(DomainCirc1);
//-- On se ramene entre 0 et 2PI
Standard_Real deltat = C1Domain.Bsup-C1Domain.Binf;
- if(deltat>=PIpPI) { deltat=PIpPI-1e-14; }
+ if(deltat>=PIpPI)
+ {
+ // make deltat not including the upper limit
+ deltat=NextAfter(PIpPI, 0.);
+ }
while(C1Domain.Binf >= PIpPI) C1Domain.Binf-=PIpPI;
while(C1Domain.Binf < 0.0) C1Domain.Binf+=PIpPI;
PeriodicInterval C2Domain(DomainCirc2);
deltat = C2Domain.Bsup-C2Domain.Binf;
- if(deltat>=PIpPI) { deltat=PIpPI-1e-14; }
+ if(deltat>=PIpPI)
+ {
+ deltat=NextAfter(PIpPI, 0.);
+ }
while(C2Domain.Binf >= PIpPI) C2Domain.Binf-=PIpPI;
while(C2Domain.Binf < 0.0) C2Domain.Binf+=PIpPI;
//--------------------------------------------------
if(Opposite) {
- if(nbsol!=3) {
if(C2inf<C2sup) C2inf+=PIpPI;
- }
}
else {
- if(nbsol!=3) {
if(C2sup<C2inf) C2sup+=PIpPI;
- }
}
IntRes2d_IntersectionPoint NewPoint2(P1b,C1sup,C2sup,T1b,T2b,Standard_False);
--- /dev/null
+puts "============"
+puts "CR25876"
+puts "==========="
+puts ""
+###############################################################################
+# Geom2dAPI_InterCurveCurve returns only one intersection point instead of two intersection points
+###############################################################################
+
+restore [locate_data_file bug25876_oc_test_firstcircle.brep] e1
+restore [locate_data_file bug25876_oc_test_secondcircle.brep] e2
+
+explode e1
+explode e2
+
+mk2dcurve c1 e1_1
+mk2dcurve c2 e2_1
+
+set inter1 [2dintersect c1 c2 1e-3]
+set int1 [regexp {Intersection point 2} ${inter1}]
+if { ${int1} == 0 } {
+ puts "Error : Second intersection is not found"
+}
+
+#smallview -2D-
+view 1 -2D- 728 450 400 400
+2dfit
+xwd ${imagedir}/${test_image}_1.png
+donly c1 c2
+
+set inter2 [2dintersect c1 c2 1e-7]
+set int2 [regexp {Intersection point 2} ${inter2}]
+if { ${int2} == 0 } {
+ puts "Error : Second intersection is not found"
+}
+
+xwd ${imagedir}/${test_image}_2.png