-// Copyright (c) 1995-1999 Matra Datavision
-// Copyright (c) 1999-2014 OPEN CASCADE SAS
-//
-// This file is part of Open CASCADE Technology software library.
-//
-// This library is free software; you can redistribute it and/or modify it under
-// the terms of the GNU Lesser General Public License version 2.1 as published
-// by the Free Software Foundation, with special exception defined in the file
-// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
-// distribution for complete text of the license and disclaimer of any warranty.
-//
-// Alternatively, this file may be used under the terms of Open CASCADE
-// commercial license or contractual agreement.
-
-inline gp_Torus::gp_Torus () :
-majorRadius (RealLast()),
-minorRadius (RealSmall())
-{ }
-
-inline gp_Torus::gp_Torus (const gp_Ax3& A3,
- const Standard_Real MajorRadius,
- const Standard_Real MinorRadius) :
- pos(A3),
- majorRadius (MajorRadius),
- minorRadius (MinorRadius)
-{
- Standard_ConstructionError_Raise_if (MinorRadius < 0.0 || MajorRadius < 0.0,
- "gp_Torus() - invalid construction parameters");
-}
-
-inline void gp_Torus::SetAxis (const gp_Ax1& A1)
-{ pos.SetAxis (A1); }
-
-inline void gp_Torus::SetLocation (const gp_Pnt& Loc)
-{ pos.SetLocation (Loc); }
-
-inline void gp_Torus::SetMajorRadius (const Standard_Real MajorRadius)
-{
- Standard_ConstructionError_Raise_if (MajorRadius - minorRadius <= gp::Resolution(),
- "gp_Torus::SetMajorRadius() - invalid input parameters");
- majorRadius = MajorRadius;
-}
-
-inline void gp_Torus::SetMinorRadius (const Standard_Real MinorRadius)
-{
- Standard_ConstructionError_Raise_if (MinorRadius < 0.0 || majorRadius - MinorRadius <= gp::Resolution(),
- "gp_Torus::SetMinorRadius() - invalid input parameters");
- minorRadius = MinorRadius;
-}
-
-inline void gp_Torus::SetPosition (const gp_Ax3& A3)
-{ pos = A3; }
-
-inline Standard_Real gp_Torus::Area () const
-{ return 4.0 * M_PI * M_PI * minorRadius * majorRadius; }
-
-inline void gp_Torus::UReverse()
-{ pos.YReverse(); }
-
-inline void gp_Torus::VReverse()
-{ pos.ZReverse(); }
-
-inline Standard_Boolean gp_Torus::Direct() const
-{ return pos.Direct(); }
-
-inline const gp_Ax1& gp_Torus::Axis () const
-{ return pos.Axis(); }
-
-inline const gp_Pnt& gp_Torus::Location () const
-{ return pos.Location(); }
-
-inline const gp_Ax3& gp_Torus::Position () const
-{ return pos; }
-
-inline Standard_Real gp_Torus::MajorRadius () const
-{ return majorRadius; }
-
-inline Standard_Real gp_Torus::MinorRadius () const
-{ return minorRadius; }
-
-inline Standard_Real gp_Torus::Volume () const
-{ return (M_PI * minorRadius * minorRadius) * (2.0 * M_PI * majorRadius); }
-
-inline gp_Ax1 gp_Torus::XAxis () const
-{ return gp_Ax1(pos.Location(), pos.XDirection()); }
-
-inline gp_Ax1 gp_Torus::YAxis () const
-{ return gp_Ax1(pos.Location(), pos.YDirection()); }
-
-inline void gp_Torus::Rotate (const gp_Ax1& A1,
- const Standard_Real Ang)
-{ pos.Rotate (A1, Ang); }
-
-inline gp_Torus gp_Torus::Rotated (const gp_Ax1& A1,
- const Standard_Real Ang) const
-{
- gp_Torus C = *this;
- C.pos.Rotate (A1, Ang);
- return C;
-}
-
-inline void gp_Torus::Scale (const gp_Pnt& P,
- const Standard_Real S)
-{
- pos.Scale (P, S);
- Standard_Real s = S;
- if (s < 0) s = - s;
- majorRadius *= s;
- minorRadius *= s;
-}
-
-inline gp_Torus gp_Torus::Scaled (const gp_Pnt& P,
- const Standard_Real S) const
-{
- gp_Torus C = *this;
- C.pos.Scale (P, S);
- C.majorRadius *= S;
- if (C.majorRadius < 0) C.majorRadius = - C.majorRadius;
- C.minorRadius *= S;
- if (C.minorRadius < 0) C.minorRadius = - C.minorRadius;
- return C;
-}
-
-inline void gp_Torus::Transform (const gp_Trsf& T)
-{
- pos.Transform (T);
- Standard_Real t = T.ScaleFactor();
- if(t < 0 ) t = - t;
- minorRadius *= t;
- majorRadius *= t;
-}
-
-inline gp_Torus gp_Torus::Transformed (const gp_Trsf& T) const
-{
- gp_Torus C = *this;
- C.pos.Transform (T);
- C.majorRadius *= T.ScaleFactor();
- if (C.majorRadius < 0) C.majorRadius = - C.majorRadius;
- C.minorRadius *= T.ScaleFactor();
- if (C.minorRadius < 0) C.minorRadius = - C.minorRadius;
- return C;
-}
-
-inline void gp_Torus::Translate (const gp_Vec& V)
-{ pos.Translate (V); }
-
-inline gp_Torus gp_Torus::Translated (const gp_Vec& V) const
-{
- gp_Torus C = *this;
- C.pos.Translate (V);
- return C;
-}
-
-inline void gp_Torus::Translate (const gp_Pnt& P1,
- const gp_Pnt& P2)
-{ pos.Translate (P1, P2); }
-
-inline gp_Torus gp_Torus::Translated (const gp_Pnt& P1,
- const gp_Pnt& P2) const
-{
- gp_Torus C = *this;
- C.pos.Translate (P1, P2);
- return C;
-}
-