0032137: Coding Rules - merge redundant .lxx files into header files within Package gp
[occt.git] / src / gp / gp_Cylinder.lxx
1 // Copyright (c) 1995-1999 Matra Datavision
2 // Copyright (c) 1999-2014 OPEN CASCADE SAS
3 //
4 // This file is part of Open CASCADE Technology software library.
5 //
6 // This library is free software; you can redistribute it and/or modify it under
7 // the terms of the GNU Lesser General Public License version 2.1 as published
8 // by the Free Software Foundation, with special exception defined in the file
9 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
10 // distribution for complete text of the license and disclaimer of any warranty.
11 //
12 // Alternatively, this file may be used under the terms of Open CASCADE
13 // commercial license or contractual agreement.
14
15 #include <Standard_ConstructionError.hxx>
16
17 inline gp_Cylinder::gp_Cylinder ()
18 { radius = RealLast(); }
19
20 inline gp_Cylinder::gp_Cylinder (const gp_Ax3& A3,
21                                  const Standard_Real Radius) :
22                                  pos(A3),
23                                  radius (Radius)
24 {
25   Standard_ConstructionError_Raise_if (Radius < 0.0, "gp_Cylinder() - radius should be positive number");
26 }
27
28 inline void gp_Cylinder::SetAxis (const gp_Ax1& A1)
29 { pos.SetAxis (A1); }
30
31 inline void gp_Cylinder::SetLocation (const gp_Pnt& Loc)
32 { pos.SetLocation (Loc); }
33
34 inline void gp_Cylinder::SetPosition (const gp_Ax3& A3)
35 { pos = A3; }
36
37 inline void gp_Cylinder::SetRadius (const Standard_Real R)
38 {
39   Standard_ConstructionError_Raise_if (R < 0.0, "gp_Cylinder::SetRadius() - radius should be positive number");
40   radius = R;
41 }
42
43 inline void gp_Cylinder::UReverse()
44 { pos.YReverse(); }
45
46 inline void gp_Cylinder::VReverse()
47 { pos.ZReverse(); }
48
49 inline Standard_Boolean gp_Cylinder::Direct() const
50 { return pos.Direct(); }
51
52 inline const gp_Ax1&  gp_Cylinder::Axis () const
53 { return pos.Axis(); }
54
55 inline const gp_Pnt&  gp_Cylinder::Location () const
56 { return pos.Location(); }
57
58 inline const gp_Ax3&  gp_Cylinder::Position () const
59 { return pos; }
60
61 inline Standard_Real gp_Cylinder::Radius () const
62 { return radius; }
63
64 inline gp_Ax1 gp_Cylinder::XAxis () const
65 {return gp_Ax1(pos.Location(), pos.XDirection());}
66
67 inline gp_Ax1 gp_Cylinder::YAxis () const
68 {return gp_Ax1(pos.Location(), pos.YDirection());}
69
70 inline void gp_Cylinder::Rotate (const gp_Ax1& A1,
71                                  const Standard_Real Ang)
72 {pos.Rotate(A1,Ang);}
73
74 inline gp_Cylinder gp_Cylinder::Rotated (const gp_Ax1& A1,
75                                          const Standard_Real Ang) const
76 {
77   gp_Cylinder C = *this;
78   C.pos.Rotate (A1, Ang);
79   return C;
80 }
81
82 inline void gp_Cylinder::Scale (const gp_Pnt& P, const Standard_Real S)
83 {
84   pos.Scale (P, S);      
85   radius *= S;
86   if (radius < 0) radius = - radius;
87 }
88
89 inline gp_Cylinder gp_Cylinder::Scaled (const gp_Pnt& P,
90                                         const Standard_Real S) const
91 {
92   gp_Cylinder C = *this;
93   C.pos.Scale (P, S);
94   C.radius *= S;
95   if (C.radius < 0) C.radius = - C.radius;
96   return C;
97 }
98
99 inline void gp_Cylinder::Transform (const gp_Trsf& T)
100 {
101   pos.Transform (T);
102   radius *= T.ScaleFactor();
103   if (radius < 0) radius = - radius;
104 }
105
106 inline gp_Cylinder gp_Cylinder::Transformed (const gp_Trsf& T) const
107 {
108   gp_Cylinder C = *this;
109   C.pos.Transform (T);
110   C.radius *= T.ScaleFactor();
111   if (C.radius < 0) C.radius = - C.radius;
112   return C;
113 }
114
115 inline void gp_Cylinder::Translate (const gp_Vec& V)
116 { pos.Translate (V); }
117
118 inline gp_Cylinder gp_Cylinder::Translated (const gp_Vec& V) const
119 {
120   gp_Cylinder C = *this;
121   C.pos.Translate (V);
122   return C;
123 }
124
125 inline void gp_Cylinder::Translate (const gp_Pnt& P1,
126                                     const gp_Pnt& P2)
127 { pos.Translate (P1, P2); }
128
129 inline gp_Cylinder gp_Cylinder::Translated (const gp_Pnt& P1,
130                                             const gp_Pnt& P2) const
131 {
132   gp_Cylinder C = *this;
133   C.pos.Translate (P1, P2);
134   return C;
135 }
136