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
24namespace 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;
82 friend class SESComputer;
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
99
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 */
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
STL namespace.
Definition: constants.h:13
#define BALL_EXPORT
Definition: COMMON/global.h:50