//=======================================================================
AxeOperator::AxeOperator(const gp_Ax1& A1,const gp_Ax1& A2)
{
- myEPSILON_DISTANCE=0.00000000000001;
- myEPSILON_AXES_PARA=0.000000000001;
+ myEPSILON_DISTANCE=1.0e-14;
+ myEPSILON_AXES_PARA=Precision::Angular();
Axe1=A1;
Axe2=A2;
//---------------------------------------------------------------------
//=======================================================================
void IntAna_QuadQuadGeo::InitTolerances()
{
- myEPSILON_DISTANCE = 0.00000000000001;
- myEPSILON_ANGLE_CONE = 0.000000000001;
- myEPSILON_MINI_CIRCLE_RADIUS = 0.000000001;
- myEPSILON_CYLINDER_DELTA_RADIUS = 0.0000000000001;
- myEPSILON_CYLINDER_DELTA_DISTANCE= 0.0000001;
- myEPSILON_AXES_PARA = 0.000000000001;
+ myEPSILON_DISTANCE = 1.0e-14;
+ myEPSILON_ANGLE_CONE = Precision::Angular();
+ myEPSILON_MINI_CIRCLE_RADIUS = 0.01*Precision::Confusion();
+ myEPSILON_CYLINDER_DELTA_RADIUS = 1.0e-13;
+ myEPSILON_CYLINDER_DELTA_DISTANCE= Precision::Confusion();
+ myEPSILON_AXES_PARA = Precision::Angular();
}
//=======================================================================
//function : IntAna_QuadQuadGeo
aRMaj1 = Tor1.MajorRadius();
aRMin2 = Tor2.MinorRadius();
aRMaj2 = Tor2.MajorRadius();
- if (aRMin1 >= aRMaj1 || aRMin2 >= aRMaj2) {
- typeres = IntAna_NoGeometricSolution;
- return;
- }
//
- const gp_Ax1 anAx1 = Tor1.Axis();
- const gp_Ax1 anAx2 = Tor2.Axis();
+ const gp_Ax1& anAx1 = Tor1.Axis();
+ const gp_Ax1& anAx2 = Tor2.Axis();
+ //
+ const gp_Pnt& aLoc1 = anAx1.Location();
+ const gp_Pnt& aLoc2 = anAx2.Location();
//
gp_Lin aL1(anAx1);
if (!anAx1.IsParallel(anAx2, myEPSILON_AXES_PARA) ||
- (aL1.Distance(anAx2.Location()) > myEPSILON_DISTANCE)) {
+ (aL1.Distance(aLoc2) > myEPSILON_DISTANCE)) {
typeres = IntAna_NoGeometricSolution;
return;
}
//
- gp_Pnt aLoc1, aLoc2;
- //
- aLoc1 = anAx1.Location();
- aLoc2 = anAx2.Location();
- //
if (aLoc1.IsEqual(aLoc2, Tol) &&
- (Abs(aRMin1 - aRMin2) <= Tol) &&
+ (Abs(aRMin1 - aRMin2) <= Tol) &&
(Abs(aRMaj1 - aRMaj2) <= Tol)) {
typeres = IntAna_Same;
return;
}
//
+ if (aRMin1 >= aRMaj1 || aRMin2 >= aRMaj2) {
+ typeres = IntAna_NoGeometricSolution;
+ return;
+ }
+ //
Standard_Real aDist;
gp_Pnt aP1, aP2;
//
//=======================================================================
gp_Pnt IntAna_QuadQuadGeo::Point(const Standard_Integer n) const
{
- if(!done) { StdFail_NotDone::Raise(); }
- if(n>nbint || n<1) { Standard_DomainError::Raise(); }
+ if(!done) { throw StdFail_NotDone(); }
+ if(n>nbint || n<1) { throw Standard_DomainError(); }
if(typeres==IntAna_PointAndCircle) {
- if(n!=1) { Standard_DomainError::Raise(); }
+ if(n!=1) { throw Standard_DomainError(); }
if(param1==0.0) return(pt1);
return(pt2);
}
//=======================================================================
gp_Lin IntAna_QuadQuadGeo::Line(const Standard_Integer n) const
{
- if(!done) { StdFail_NotDone::Raise(); }
+ if(!done) { throw StdFail_NotDone(); }
if((n>nbint) || (n<1) || (typeres!=IntAna_Line)) {
- Standard_DomainError::Raise();
+ throw Standard_DomainError();
}
if(n==1) { return(gp_Lin(pt1,dir1)); }
else { return(gp_Lin(pt2,dir2)); }
//=======================================================================
gp_Circ IntAna_QuadQuadGeo::Circle(const Standard_Integer n) const
{
- if(!done) { StdFail_NotDone::Raise(); }
+ if(!done) { throw StdFail_NotDone(); }
if(typeres==IntAna_PointAndCircle) {
- if(n!=1) { Standard_DomainError::Raise(); }
+ if(n!=1) { throw Standard_DomainError(); }
if(param2==0.0) return(gp_Circ(DirToAx2(pt1,dir1),param1));
return(gp_Circ(DirToAx2(pt2,dir2),param2));
}
else if((n>nbint) || (n<1) || (typeres!=IntAna_Circle)) {
- Standard_DomainError::Raise();
+ throw Standard_DomainError();
}
if (n==1) { return(gp_Circ(DirToAx2(pt1,dir1),param1));}
else if (n==2) { return(gp_Circ(DirToAx2(pt2,dir2),param2));}
//=======================================================================
gp_Elips IntAna_QuadQuadGeo::Ellipse(const Standard_Integer n) const
{
- if(!done) { StdFail_NotDone::Raise(); }
+ if(!done) { throw StdFail_NotDone(); }
if((n>nbint) || (n<1) || (typeres!=IntAna_Ellipse)) {
- Standard_DomainError::Raise();
+ throw Standard_DomainError();
}
if(n==1) {
gp_Parab IntAna_QuadQuadGeo::Parabola(const Standard_Integer n) const
{
if(!done) {
- StdFail_NotDone::Raise();
+ throw StdFail_NotDone();
}
if (typeres!=IntAna_Parabola) {
- Standard_DomainError::Raise();
+ throw Standard_DomainError();
}
if((n>nbint) || (n!=1)) {
- Standard_OutOfRange::Raise();
+ throw Standard_OutOfRange();
}
return(gp_Parab(gp_Ax2( pt1
,dir1
gp_Hypr IntAna_QuadQuadGeo::Hyperbola(const Standard_Integer n) const
{
if(!done) {
- StdFail_NotDone::Raise();
+ throw StdFail_NotDone();
}
if((n>nbint) || (n<1) || (typeres!=IntAna_Hyperbola)) {
- Standard_DomainError::Raise();
+ throw Standard_DomainError();
}
if(n==1) {
return(gp_Hypr(gp_Ax2( pt1