From: msv Date: Thu, 12 Mar 2015 09:30:18 +0000 (+0300) Subject: 0025876: Geom2dAPI_InterCurveCurve returns only one intersection point instead of... X-Git-Tag: V6_9_0_beta~52 X-Git-Url: http://git.dev.opencascade.org/gitweb/?p=occt.git;a=commitdiff_plain;h=3062fdf9935113bcb4e04e5243718840eecf819e 0025876: Geom2dAPI_InterCurveCurve returns only one intersection point instead of two intersection points Extend domain of circle to include all possible solutions. Test case for issue CR25876 Correct test case Period 'jump" handling algorithm changed. --- diff --git a/src/IntCurve/IntCurve_IntConicConic_1.cxx b/src/IntCurve/IntCurve_IntConicConic_1.cxx index 825d0ff2b8..aeed78226f 100644 --- a/src/IntCurve/IntCurve_IntConicConic_1.cxx +++ b/src/IntCurve/IntCurve_IntConicConic_1.cxx @@ -719,7 +719,11 @@ void IntCurve_IntConicConic::Perform(const gp_Circ2d& Circle1 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; @@ -732,8 +736,8 @@ void IntCurve_IntConicConic::Perform(const gp_Circ2d& Circle1 deltat = C2Domain.Bsup-C2Domain.Binf; if(deltat>=PIpPI) { - deltat=PIpPI-1e-14; - } + deltat=NextAfter(PIpPI, 0.); + } while(C2Domain.Binf >= PIpPI) C2Domain.Binf-=PIpPI; @@ -1027,19 +1031,13 @@ void IntCurve_IntConicConic::Perform(const gp_Circ2d& Circle1 if(Opposite) { - if(nbsol!=3) - { if(C2inf