BALL
1.4.1
|
00001 // -*- Mode: C++; tab-width: 2; -*- 00002 // vi: set ts=2: 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 /*_ @name Attributes 00203 */ 00205 00206 /*_ The circle on which the SASEdge lies. 00207 */ 00208 TCircle3<double> circle_; 00209 /*_ The angle of the SASEdge. 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 } // namespace BALL 00228 00229 #endif // BALL_STRUCTURE_SASEDGE_H