1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-09-03 14:10:33 +03:00

0023981: Wrong section curves

Test case for issue CR23981
Small correction of test case for issue CR23981
This commit is contained in:
ifv
2013-10-03 16:13:10 +04:00
committed by bugmaster
parent b1c5c4e6a6
commit 7c4e9501b4
7 changed files with 220 additions and 247 deletions

View File

@@ -22,6 +22,7 @@
#include <Standard_OutOfRange.hxx>
#include <Standard_NotImplemented.hxx>
#include <ElSLib.hxx>
static const Standard_Real ExtPElS_MyEps = Epsilon(2. * M_PI);
//=============================================================================
Extrema_ExtPElS::Extrema_ExtPElS () { myDone = Standard_False; }
@@ -70,6 +71,7 @@ void Extrema_ExtPElS::Perform(const gp_Pnt& P,
if (OPp.Magnitude() < Tol) { return; }
gp_Vec myZ = Pos.XDirection()^Pos.YDirection();
Standard_Real U1 = gp_Vec(Pos.XDirection()).AngleWithRef(OPp,myZ); //-M_PI<U1<M_PI
if (U1 > -ExtPElS_MyEps && U1 < ExtPElS_MyEps) { U1 = 0.; }
Standard_Real U2 = U1 + M_PI;
if (U1 < 0.) { U1 += 2. * M_PI; }
@@ -164,6 +166,7 @@ void Extrema_ExtPElS::Perform(const gp_Pnt& P,
Standard_Real B, U1, V1, U2, V2;
Standard_Boolean Same = DirZ.Dot(MP) >= 0.0;
U1 = gp_Vec(Pos.XDirection()).AngleWithRef(OPp,myZ); //-M_PI<U1<M_PI
if (U1 > -ExtPElS_MyEps && U1 < ExtPElS_MyEps) { U1 = 0.; }
B = MP.Angle(DirZ);
if (!Same) { U1 += M_PI; }
U2 = U1 + M_PI;
@@ -257,6 +260,7 @@ void Extrema_ExtPElS::Perform(const gp_Pnt& P,
else {
gp_Vec myZ = Pos.XDirection()^Pos.YDirection();
U1 = gp_Vec(Pos.XDirection()).AngleWithRef(OPp,myZ);
if (U1 > -ExtPElS_MyEps && U1 < ExtPElS_MyEps) { U1 = 0.; }
U2 = U1 + M_PI;
if (U1 < 0.) { U1 += 2. * M_PI; }
V = OP.Angle(OPp);
@@ -321,6 +325,7 @@ void Extrema_ExtPElS::Perform(const gp_Pnt& P,
gp_Vec myZ = Pos.XDirection()^Pos.YDirection();
Standard_Real U1 = gp_Vec(Pos.XDirection()).AngleWithRef(OPp,myZ);
if (U1 > -ExtPElS_MyEps && U1 < ExtPElS_MyEps) { U1 = 0.; }
Standard_Real U2 = U1 + M_PI;
if (U1 < 0.) { U1 += 2. * M_PI; }
Standard_Real R = sqrt(R2);
@@ -333,7 +338,10 @@ void Extrema_ExtPElS::Perform(const gp_Pnt& P,
if(O2.SquareDistance(P) < Tol) { return; }
Standard_Real V1 = OO1.AngleWithRef(gp_Vec(O1,P),OO1.Crossed(OZ));
if (V1 > -ExtPElS_MyEps && V1 < ExtPElS_MyEps) { V1 = 0.; }
Standard_Real V2 = OO2.AngleWithRef(gp_Vec(P,O2),OO2.Crossed(OZ));
if (V2 > -ExtPElS_MyEps && V2 < ExtPElS_MyEps) { V2 = 0.; }
if (V1 < 0.) { V1 += 2. * M_PI; }
if (V2 < 0.) { V2 += 2. * M_PI; }