00001
00002
00003
00004
00005
00006
00007 #ifndef BALL_STRUCTURE_SASEDGE_H
00008 #define BALL_STRUCTURE_SASEDGE_H
00009
00010 #ifndef BALL_STRUCTURE_GRAPHEDGE_H
00011 # include <BALL/STRUCTURE/graphEdge.h>
00012 #endif
00013
00014 #ifndef BALL_MATHS_ANGLE_H
00015 # include <BALL/MATHS/angle.h>
00016 #endif
00017
00018 #ifndef BALL_MATHS_CIRCLE3_H
00019 # include <BALL/MATHS/circle3.h>
00020 #endif
00021
00022 namespace BALL
00023 {
00024
00025 class SolventAccessibleSurface;
00026 class SASFace;
00027 class SASVertex;
00028 class RSEdge;
00029 class TriangulatedSAS;
00030 class SASTriangulator;
00031
00035 class BALL_EXPORT SASEdge : public GraphEdge< SASVertex,SASEdge,SASFace >
00036 {
00037 public:
00038
00048 friend class SASVertex;
00049 friend class SASFace;
00050 friend class SolventAccessibleSurface;
00051 friend class TriangulatedSAS;
00052 friend class SASTriangulator;
00053
00054 BALL_CREATE(SASEdge)
00055
00056
00059
00063 SASEdge()
00064 ;
00065
00073 SASEdge(const SASEdge& sasedge, bool deep = false)
00074 ;
00075
00086 SASEdge(SASVertex* vertex0,
00087 SASVertex* vertex1,
00088 SASFace* face0,
00089 SASFace* face1,
00090 const TCircle3<double>& circle,
00091 const TAngle<double>& angle,
00092 Index index)
00093 ;
00094
00098 virtual ~SASEdge()
00099 ;
00100
00102
00105
00112 void set(const SASEdge& sasedge, bool deep = false)
00113 ;
00114
00120 SASEdge& operator = (const SASEdge& sasedge)
00121 ;
00122
00132 void set(SASVertex* vertex0,
00133 SASVertex* vertex1,
00134 SASFace* face0,
00135 SASFace* face1,
00136 const TCircle3<double>& circle,
00137 const TAngle<double>& angle,
00138 Index index)
00139 ;
00140
00142
00145
00149 void setCircle(const TCircle3<double>& center)
00150 ;
00151
00155 TCircle3<double> getCircle() const
00156 ;
00157
00161 void setAngle(const TAngle<double>& angle)
00162 ;
00163
00167 TAngle<double> getAngle() const
00168 ;
00169
00171
00174
00178 virtual bool operator == (const SASEdge&) const
00179 ;
00180
00184 virtual bool operator != (const SASEdge&) const
00185 ;
00186
00190 virtual bool operator *= (const SASEdge&) const
00191 ;
00192
00197 bool isFree() const
00198 ;
00199
00201
00202 protected:
00203
00204
00205
00207
00208
00209
00210 TCircle3<double> circle_;
00211
00212
00213 TAngle<double> angle_;
00214
00216 };
00217
00221
00224 BALL_EXPORT std::ostream& operator << (std::ostream& s, const SASEdge& sasedge);
00225
00227
00228
00229 }
00230
00231 #endif // BALL_STRUCTURE_SASEDGE_H