BALL  1.4.79
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
RSEdge.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_RSEDGE_H
6 #define BALL_STRUCTURE_RSEDGE_H
7 
8 #ifndef BALL_STRUCTURE_GRAPHEDGE_H
10 #endif
11 
12 #ifndef BALL_MATHS_ANGLE_H
13 # include <BALL/MATHS/angle.h>
14 #endif
15 
16 #ifndef BALL_MATHS_CIRCLE3_H
17 # include <BALL/MATHS/circle3.h>
18 #endif
19 
20 #ifndef BALL_MATHS_VECTOR3_H
21 # include <BALL/MATHS/vector3.h>
22 #endif
23 
24 namespace BALL
25 {
26  class RSFace;
27  class RSVertex;
28  class ReducedSurface;
29  class RSComputer;
30  class SESEdge;
31  class SESFace;
32  class SESVertex;
33  class SolventExcludedSurface;
34  class SESComputer;
35  class SESSingularityCleaner;
36  class TriangulatedSES;
37  class SESTriangulator;
38  class SASEdge;
39  class SASFace;
40  class SASVertex;
41  class SolventAccessibleSurface;
42  class TriangulatedSAS;
43  class SASTriangulator;
44 
48  class BALL_EXPORT RSEdge : public GraphEdge< RSVertex,RSEdge,RSFace >
49  {
50  public:
51 
74  friend class RSFace;
75  friend class RSVertex;
76  friend class ReducedSurface;
77  friend class RSComputer;
78  friend class SESEdge;
79  friend class SESFace;
80  friend class SESVertex;
81  friend class SolventExcludedSurface;
82  friend class SESComputer;
83  friend class SESSingularityCleaner;
84  friend class TriangulatedSES;
85  friend class SESTriangulator;
86  friend class SASEdge;
87  friend class SASFace;
89  friend class SASVertex;
90  friend class TriangulatedSAS;
91  friend class SASTriangulator;
92 
94 
95 
98 
102  RSEdge()
103  ;
104 
112  RSEdge(const RSEdge& rsedge, bool deep = false)
113  ;
114 
133  RSEdge(RSVertex* vertex1,
134  RSVertex* vertex2,
135  RSFace* face1,
136  RSFace* face2,
137  const TVector3<double>& center_of_torus,
138  const double& radius_of_torus,
139  const TAngle<double>& angle,
140  const TCircle3<double>& circle1,
141  const TCircle3<double>& circle2,
142  const TVector3<double>& intersection_point1,
143  const TVector3<double>& intersection_point2,
144  bool singular,
145  Index index)
146  ;
147 
152  virtual ~RSEdge()
153  ;
154 
156 
159 
166  void set(const RSEdge& rsedge, bool deep = false)
167  ;
168 
174  RSEdge& operator = (const RSEdge& rsedge)
175  ;
176 
194  void set(RSVertex* vertex0,
195  RSVertex* vertex1,
196  RSFace* face0,
197  RSFace* face1,
198  const TVector3<double>& center_of_torus,
199  const double& radius_of_torus,
200  const TAngle<double>& angle,
201  const TCircle3<double>& circle0,
202  const TCircle3<double>& circle1,
203  const TVector3<double>& intersection_point0,
204  const TVector3<double>& intersection_point1,
205  bool singular,
206  Index index)
207  ;
208 
210 
213 
219  void setCenterOfTorus(const TVector3<double>& center)
220  ;
221 
227  TVector3<double> getCenterOfTorus() const
228  ;
229 
235  void setMajorRadiusOfTorus(const double& radius)
236  ;
237 
243  double getMajorRadiusOfTorus() const
244  ;
245 
251  void setAngle(const TAngle<double>& angle)
252  ;
253 
259  TAngle<double> getAngle() const
260  ;
261 
269  void setContactCircle(Position i, const TCircle3<double>& circle)
270  ;
271 
280  TCircle3<double> getContactCircle(Position i) const
281  ;
282 
289  void setIntersectionPoint(Position i, const TVector3<double>& point)
290  ;
291 
300  TVector3<double> getIntersectionPoint(Position i) const
301  throw(Exception::GeneralException);
302 
305  void setSingular(bool singular)
306  ;
307 
309 
310 
314 
319  virtual bool operator == (const RSEdge& rsedge) const
320  ;
321 
326  virtual bool operator != (const RSEdge& rsedge) const
327  ;
328 
333  virtual bool operator *=(const RSEdge& rsedge) const
334  ;
335 
340  bool isSingular() const
341  ;
342 
346  bool isFree() const
347  ;
348 
350 
351  protected:
352 
353  /*_ @name Attributes
354  */
356 
357  /*_ The center of the torus described by the probe when ir rolls over
358  the RSEdge
359  */
360  TVector3<double> center_of_torus_;
361  /*_ The major radius of the torus described by the probe when ir rolls
362  over the RSEdge
363  */
364  double radius_of_torus_;
365  /*_ The rotation angle between the starting and ending position of the
366  probe sphere when it rolls over the RSEdge
367  */
368  TAngle<double> angle_;
369  /*_ The contact circle of the probe sphere with the first RSVertex
370  */
371  TCircle3<double> circle0_;
372  /*_ The contact circle of the probe sphere with the second RSVertex
373  */
374  TCircle3<double> circle1_;
375  /*_ The intersection point of the probe sphere with the RSEdge near to
376  the first RSVertex (in singular case).
377  */
378  TVector3<double> intersection_point0_;
379  /*_ The intersection point of the probe sphere with the RSEdge near to
380  the second RSVertex (in singular case).
381  */
382  TVector3<double> intersection_point1_;
383  /*_ singular
384  */
385  bool singular_;
386 
388 
389  };
390 
394 
397  BALL_EXPORT std::ostream& operator << (std::ostream& s, const RSEdge& rsedge);
398 
400 
401 
402 
403 } // namespace BALL
404 
405 #endif // BALL_STRUCTURE_RSEDGE_H
#define BALL_CREATE(name)
Definition: create.h:62
#define BALL_EXPORT
Definition: COMMON/global.h:50