BALL  1.5.0
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 
301  TVector3<double> getIntersectionPoint(Position i) const;
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  */
361  /*_ The major radius of the torus described by the probe when ir rolls
362  over the RSEdge
363  */
365  /*_ The rotation angle between the starting and ending position of the
366  probe sphere when it rolls over the RSEdge
367  */
369  /*_ The contact circle of the probe sphere with the first RSVertex
370  */
372  /*_ The contact circle of the probe sphere with the second RSVertex
373  */
375  /*_ The intersection point of the probe sphere with the RSEdge near to
376  the first RSVertex (in singular case).
377  */
379  /*_ The intersection point of the probe sphere with the RSEdge near to
380  the second RSVertex (in singular case).
381  */
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
BALL::SolventAccessibleSurface
Definition: solventAccessibleSurface.h:38
BALL::RSEdge
Definition: RSEdge.h:48
BALL_INDEX_TYPE
BALL_EXPORT
#define BALL_EXPORT
Definition: COMMON/global.h:50
BALL::RSComputer
Definition: reducedSurface.h:475
BALL::SESFace
Definition: SESFace.h:37
BALL::operator!=
BALL_EXPORT bool operator!=(const String &s1, const String &s2)
angle.h
BALL::RSEdge::circle0_
TCircle3< double > circle0_
Definition: RSEdge.h:371
BALL::RSEdge::circle1_
TCircle3< double > circle1_
Definition: RSEdge.h:374
vector3.h
BALL::SASTriangulator
Definition: triangulatedSAS.h:160
BALL::TCircle3< double >
BALL::TVector3< double >
BALL_SIZE_TYPE
circle3.h
BALL::SESSingularityCleaner
Definition: solventExcludedSurface.h:456
BALL::RSEdge::intersection_point1_
TVector3< double > intersection_point1_
Definition: RSEdge.h:382
BALL
Definition: constants.h:12
BALL::RSEdge::intersection_point0_
TVector3< double > intersection_point0_
Definition: RSEdge.h:378
BALL::SolventExcludedSurface
Definition: solventExcludedSurface.h:66
BALL::SASFace
Definition: SASFace.h:30
BALL::TriangulatedSES
Definition: triangulatedSES.h:54
BALL::SESVertex
Definition: SESVertex.h:29
BALL::RSVertex
Definition: RSVertex.h:37
graphEdge.h
BALL::GraphEdge
Definition: graphEdge.h:30
BALL::SESEdge
Definition: SESEdge.h:33
BALL::ReducedSurface
Definition: reducedSurface.h:195
BALL::TAngle< double >
BALL::operator==
BALL_EXPORT bool operator==(const String &s1, const String &s2)
BALL::RSEdge::radius_of_torus_
double radius_of_torus_
Definition: RSEdge.h:364
BALL::operator<<
BALL_EXPORT std::ostream & operator<<(std::ostream &os, const Exception::GeneralException &e)
BALL::TriangulatedSAS
Definition: triangulatedSAS.h:62
BALL::RSEdge::center_of_torus_
TVector3< double > center_of_torus_
Definition: RSEdge.h:360
BALL_CREATE
#define BALL_CREATE(name)
Definition: create.h:62
BALL::RSFace
Definition: RSFace.h:40
BALL::RSEdge::angle_
TAngle< double > angle_
Definition: RSEdge.h:368
BALL::SASVertex
Definition: SASVertex.h:28
BALL::SESTriangulator
Definition: triangulatedSES.h:163
BALL::SESComputer
Definition: solventExcludedSurface.h:317
BALL::RSEdge::singular_
bool singular_
Definition: RSEdge.h:385
BALL::SASEdge
Definition: SASEdge.h:33