BALL  1.4.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
RSFace.h
Go to the documentation of this file.
1 // -*- Mode: C++; tab-width: 2; -*-
2 // vi: set ts=2:
3 //
4 
5 #ifndef BALL_STRUCTURE_RSFACE_H
6 #define BALL_STRUCTURE_RSFACE_H
7 
8 #ifndef BALL_STRUCTURE_GRAPHFACE_H
10 #endif
11 
12 #ifndef BALL_MATHS_VECTOR3_H
13 # include <BALL/MATHS/vector3.h>
14 #endif
15 
16 namespace BALL
17 {
18  class RSVertex;
19  class RSEdge;
20  class ReducedSurface;
21  class RSComputer;
22  class SolventExcludedSurface;
23  class SESComputer;
24  class SESSingularityCleaner;
25  class SESEdge;
26  class SESFace;
27  class SESVertex;
28  class TriangulatedSES;
29  class SASTriangulator;
30  class SolventAccessibleSurface;
31  class SASEdge;
32  class SASFace;
33  class SASVertex;
34  class TriangulatedSAS;
35  class SESTriangulator;
36 
40  class BALL_EXPORT RSFace : public GraphTriangle< RSVertex,RSEdge,RSFace >
41  {
42  public:
43 
66  friend class RSEdge;
67  friend class RSVertex;
68  friend class ReducedSurface;
69  friend class RSComputer;
70  friend class SESEdge;
71  friend class SESFace;
72  friend class SESVertex;
73  friend class SolventExcludedSurface;
74  friend class SESComputer;
75  friend class SESSingularityCleaner;
76  friend class TriangulatedSES;
77  friend class SESTriangulator;
78  friend class SASEdge;
79  friend class SASFace;
80  friend class SASVertex;
82  friend class TriangulatedSAS;
83  friend class SASTriangulator;
84 
86 
87 
90 
94  RSFace()
95  ;
96 
104  RSFace(const RSFace& rsface, bool deep = false)
105  ;
106 
120  RSFace(RSVertex* vertex1,
121  RSVertex* vertex2,
122  RSVertex* vertex3,
123  RSEdge* edge1,
124  RSEdge* edge2,
125  RSEdge* edge3,
126  const TVector3<double>& center,
127  const TVector3<double>& normal,
128  bool singular,
129  Index index)
130  throw(Exception::DivisionByZero);
131 
135  virtual ~RSFace()
136  ;
137 
139 
142 
149  void set(const RSFace& rsface, bool deep = false)
150  ;
151 
157  RSFace& operator = (const RSFace& rsface)
158  ;
159 
172  void set(RSVertex* vertex1,
173  RSVertex* vertex2,
174  RSVertex* vertex3,
175  RSEdge* edge1,
176  RSEdge* edge2,
177  RSEdge* edge3,
178  const TVector3<double>& center,
179  const TVector3<double>& normal,
180  bool singular,
181  Index index)
182  throw(Exception::DivisionByZero);
183 
185 
188 
193  virtual bool operator == (const RSFace& rsface) const
194  ;
195 
200  virtual bool operator != (const RSFace& rsface) const
201  ;
202 
207  virtual bool operator *=(const RSFace& rsface) const
208  ;
209 
214  bool isSingular() const
215  ;
216 
218 
221 
225  void setCenter(const TVector3<double>& center)
226  ;
227 
231  TVector3<double> getCenter() const
232  ;
233 
237  void setNormal(const TVector3<double>& normal)
238  throw(Exception::DivisionByZero);
239 
243  TVector3<double> getNormal() const
244  ;
245 
248  void setSingular(bool singular)
249  ;
250 
259  void remove
260  (HashSet<RSEdge*>& edges,
261  HashSet<RSVertex*>& vertices,
262  HashSet<RSFace*>& faces)
263  ;
264 
266 
267  protected:
268 
269  /*_ @name Attributes
270  */
272 
273  /*_ The center of the probe sphere defining the RSFace
274  */
275  TVector3<double> center_;
276  /*_ The vector orthogonal to the RSFace
277  */
278  TVector3<double> normal_;
279  /*_ singular
280  */
281  bool singular_;
282 
284 
285  };
286 
290 
293  BALL_EXPORT std::ostream& operator << (std::ostream& s, const RSFace& rsface);
294 
296 
297 } // namespace BALL
298 
299 #endif // BALL_STRUCTURE_RSFACE_H