1
// -*- Mode: C++; tab-width: 2; -*-
4
// $Id: SASEdge.h,v 1.9 2005-12-23 17:02:01 amoll Exp $
7
#ifndef BALL_STRUCTURE_SASEDGE_H
8
#define BALL_STRUCTURE_SASEDGE_H
10
#ifndef BALL_STRUCTURE_GRAPHEDGE_H
11
# include <BALL/STRUCTURE/graphEdge.h>
14
#ifndef BALL_MATHS_ANGLE_H
15
# include <BALL/MATHS/angle.h>
18
#ifndef BALL_MATHS_CIRCLE3_H
19
# include <BALL/MATHS/circle3.h>
25
class SolventAccessibleSurface;
29
class TriangulatedSAS;
30
class SASTriangulator;
32
/** Generic SASEdge Class.
35
class BALL_EXPORT SASEdge : public GraphEdge< SASVertex,SASEdge,SASFace >
39
/** @name Class friends
43
- class SolventAccessibleSurface
44
- class TriangulatedSAS
45
- class SASTriangulator
48
friend class SASVertex;
50
friend class SolventAccessibleSurface;
51
friend class TriangulatedSAS;
52
friend class SASTriangulator;
56
/** @name Constructors and Destructors
60
/** Default constructor.
61
This method creates a new SASEdge object.
67
Create a new SASEdge object from another.
68
@param sasedge the SASEdge object to be copied
69
@param deep if deep = false, all pointers are set to NULL
70
(default). Otherwise the new SASEdge object is linked
71
to the neighbours of the old SASEdge object.
73
SASEdge(const SASEdge& sasedge, bool deep = false)
76
/** Detailled constructor.
77
Create a new SASEdge object from some nice objects.
78
@param vertex0 assigned to the first vertex
79
@param vertex1 assigned to the second vertex
80
@param face0 assigned to the first face
81
@param face1 assigned to the second face
82
@param circle assigned to the circle
83
@param angle assigned to the angle
84
@param index assigned to the index
86
SASEdge(SASVertex* vertex0,
90
const TCircle3<double>& circle,
91
const TAngle<double>& angle,
96
Destructs the SASEdge object.
106
/** Assign from another SASEdge object.
107
@param sasedge the SASEdge object to assign from
108
@param deep if deep = false, all pointers are set to NULL
109
(default). Otherwise the SASEdge object is linked to
110
the neighbours of the SASEdge object to assign from.
112
void set(const SASEdge& sasedge, bool deep = false)
115
/** Assign from another SASEdge object.
116
The SASEdge object is linked to the neighbours of the SASEdge object
118
@param sasedge the SASEdge object to assign from
120
SASEdge& operator = (const SASEdge& sasedge)
123
/** Assign from some nice objects.
124
@param vertex0 assigned to the first vertex
125
@param vertex1 assigned to the second vertex
126
@param face0 assigned to the first face
127
@param face1 assigned to the second face
128
@param circle assigned to the circle
129
@param angle assigned to the angle
130
@param index assigned to the index
132
void set(SASVertex* vertex0,
136
const TCircle3<double>& circle,
137
const TAngle<double>& angle,
146
/** Set the circle on which the SASEdge lies.
147
@param center the new circle
149
void setCircle(const TCircle3<double>& center)
152
/** Return the circle on which the SASEdge lies.
153
@return TCircle3<double> the circle of the SASEdge
155
TCircle3<double> getCircle() const
158
/** Set the angle of the SASEdge.
159
@param angle the new angle
161
void setAngle(const TAngle<double>& angle)
164
/** Return the angle of the SASEdge.
165
@return TAngle<double> the angle of the SASEdge
167
TAngle<double> getAngle() const
175
/** Equality operator.
176
@return bool <b>true</b>
178
virtual bool operator == (const SASEdge&) const
181
/** Inequality operator.
182
@return bool <b>false</b>
184
virtual bool operator != (const SASEdge&) const
187
/** Similarity operator.
188
@return bool <b>true</b>
190
virtual bool operator *= (const SASEdge&) const
194
@return bool <b>true</b> if the RSEdge of the SASEdge is free,
195
<b>false</b> otherwise
208
/*_ The circle on which the SASEdge lies.
210
TCircle3<double> circle_;
211
/*_ The angle of the SASEdge.
213
TAngle<double> angle_;
224
BALL_EXPORT std::ostream& operator << (std::ostream& s, const SASEdge& sasedge);
231
#endif // BALL_STRUCTURE_SASEDGE_H