summaryrefslogtreecommitdiff
path: root/inc/gp_Sphere.lxx
blob: 17cbc0ffb3dbd2868f6bdc9217c21ee1fe31cd0c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
//File gp_Sphere.lxx

inline gp_Sphere::gp_Sphere () : radius (RealLast())
{ }

inline gp_Sphere::gp_Sphere (const gp_Ax3& A3,
			     const Standard_Real Radius) :
			     pos (A3),
			     radius (Radius)
{ Standard_ConstructionError_Raise_if (Radius < 0.0,""); }

inline void gp_Sphere::SetLocation (const gp_Pnt& Loc)
{ pos.SetLocation (Loc); }

inline void gp_Sphere::SetPosition (const gp_Ax3& A3)
{ pos = A3; }

inline void gp_Sphere::SetRadius (const Standard_Real R)
{
  Standard_ConstructionError_Raise_if (R < 0.0,"");
  radius = R;
}

inline Standard_Real gp_Sphere::Area () const
{ return 4.0 * Standard_PI * radius * radius; }

inline void gp_Sphere::UReverse()
{ pos.YReverse(); }

inline void gp_Sphere::VReverse()
{ pos.ZReverse(); }

inline Standard_Boolean gp_Sphere::Direct() const
{ return pos.Direct(); }

inline const gp_Pnt& gp_Sphere::Location () const
{ return pos.Location(); }

inline const gp_Ax3& gp_Sphere::Position () const
{ return pos; }

inline Standard_Real gp_Sphere::Radius () const
{ return radius; }

inline Standard_Real gp_Sphere::Volume () const
{ return (4.0 * Standard_PI * radius * radius * radius) / 3.0; }

inline gp_Ax1 gp_Sphere::XAxis () const
{ return gp_Ax1(pos.Location(), pos.XDirection()); }

inline gp_Ax1 gp_Sphere::YAxis () const
{ return gp_Ax1(pos.Location(), pos.YDirection()); }

inline void gp_Sphere::Rotate (const gp_Ax1& A1,
			       const Standard_Real Ang)
{ pos.Rotate (A1, Ang); }

inline gp_Sphere gp_Sphere::Rotated (const gp_Ax1& A1,
				     const Standard_Real Ang) const
{
  gp_Sphere C = *this;
  C.pos.Rotate (A1, Ang);
  return C;
}

inline void gp_Sphere::Scale (const gp_Pnt& P,
			      const Standard_Real S)
{
  pos.Scale (P, S);      
  radius *= S;
  if (radius < 0) radius = - radius;
}

inline gp_Sphere gp_Sphere::Scaled (const gp_Pnt& P,
				    const Standard_Real S) const
{
  gp_Sphere C = *this;
  C.pos.Scale (P, S);
  C.radius *= S;
  if (C.radius < 0) C.radius = - C.radius;
  return C;
}

inline void gp_Sphere::Transform (const gp_Trsf& T)
{
  pos.Transform (T);
  radius *= T.ScaleFactor();
  if (radius < 0) radius = - radius;
}

inline gp_Sphere gp_Sphere::Transformed (const gp_Trsf& T) const
{
  gp_Sphere C = *this;
  C.pos.Transform (T);
  C.radius *= T.ScaleFactor();
  if (C.radius < 0) C.radius = - C.radius;
  return C;
}

inline void gp_Sphere::Translate (const gp_Vec& V)
{ pos.Translate (V); }

inline gp_Sphere gp_Sphere::Translated (const gp_Vec& V) const
{
  gp_Sphere C = *this;
  C.pos.Translate (V);
  return C;
}

inline void gp_Sphere::Translate (const gp_Pnt& P1,
				  const gp_Pnt& P2)
{ pos.Translate (P1, P2); }

inline gp_Sphere gp_Sphere::Translated (const gp_Pnt& P1,
					const gp_Pnt& P2) const
{
  gp_Sphere C = *this;
  C.pos.Translate (P1, P2);
  return C;
}