00001
00002
00003
00004
00005 #ifndef BALL_STRUCTURE_SASEDGE_H
00006 #define BALL_STRUCTURE_SASEDGE_H
00007
00008 #ifndef BALL_STRUCTURE_GRAPHEDGE_H
00009 # include <BALL/STRUCTURE/graphEdge.h>
00010 #endif
00011
00012 #ifndef BALL_MATHS_ANGLE_H
00013 # include <BALL/MATHS/angle.h>
00014 #endif
00015
00016 #ifndef BALL_MATHS_CIRCLE3_H
00017 # include <BALL/MATHS/circle3.h>
00018 #endif
00019
00020 namespace BALL
00021 {
00022
00023 class SolventAccessibleSurface;
00024 class SASFace;
00025 class SASVertex;
00026 class RSEdge;
00027 class TriangulatedSAS;
00028 class SASTriangulator;
00029
00033 class BALL_EXPORT SASEdge : public GraphEdge< SASVertex,SASEdge,SASFace >
00034 {
00035 public:
00036
00046 friend class SASVertex;
00047 friend class SASFace;
00048 friend class SolventAccessibleSurface;
00049 friend class TriangulatedSAS;
00050 friend class SASTriangulator;
00051
00052 BALL_CREATE(SASEdge)
00053
00054
00057
00061 SASEdge()
00062 ;
00063
00071 SASEdge(const SASEdge& sasedge, bool deep = false)
00072 ;
00073
00084 SASEdge(SASVertex* vertex0,
00085 SASVertex* vertex1,
00086 SASFace* face0,
00087 SASFace* face1,
00088 const TCircle3<double>& circle,
00089 const TAngle<double>& angle,
00090 Index index)
00091 ;
00092
00096 virtual ~SASEdge()
00097 ;
00098
00100
00103
00110 void set(const SASEdge& sasedge, bool deep = false)
00111 ;
00112
00118 SASEdge& operator = (const SASEdge& sasedge)
00119 ;
00120
00130 void set(SASVertex* vertex0,
00131 SASVertex* vertex1,
00132 SASFace* face0,
00133 SASFace* face1,
00134 const TCircle3<double>& circle,
00135 const TAngle<double>& angle,
00136 Index index)
00137 ;
00138
00140
00143
00147 void setCircle(const TCircle3<double>& center)
00148 ;
00149
00153 TCircle3<double> getCircle() const
00154 ;
00155
00159 void setAngle(const TAngle<double>& angle)
00160 ;
00161
00165 TAngle<double> getAngle() const
00166 ;
00167
00169
00172
00176 virtual bool operator == (const SASEdge&) const
00177 ;
00178
00182 virtual bool operator != (const SASEdge&) const
00183 ;
00184
00188 virtual bool operator *= (const SASEdge&) const
00189 ;
00190
00195 bool isFree() const
00196 ;
00197
00199
00200 protected:
00201
00202
00203
00205
00206
00207
00208 TCircle3<double> circle_;
00209
00210
00211 TAngle<double> angle_;
00212
00214 };
00215
00219
00222 BALL_EXPORT std::ostream& operator << (std::ostream& s, const SASEdge& sasedge);
00223
00225
00226
00227 }
00228
00229 #endif // BALL_STRUCTURE_SASEDGE_H