BALL
1.4.1
|
00001 // -*- Mode: C++; tab-width: 2; -*- 00002 // vi: set ts=2: 00003 // 00004 00005 #ifndef BALL_STRUCTURE_SASFACE_H 00006 #define BALL_STRUCTURE_SASFACE_H 00007 00008 #ifndef BALL_STRUCTURE_GRAPHFACE_H 00009 # include <BALL/STRUCTURE/graphFace.h> 00010 #endif 00011 00012 #ifndef BALL_STRUCTURE_SPHERE3_H 00013 # include <BALL/MATHS/sphere3.h> 00014 #endif 00015 00016 #include <list> 00017 00018 namespace BALL 00019 { 00020 00021 class SolventAccessibleSurface; 00022 class SASEdge; 00023 class SASVertex; 00024 class TriangulatedSAS; 00025 class SASTriangulator; 00026 00030 class BALL_EXPORT SASFace : public GraphFace< SASVertex,SASEdge,SASFace > 00031 { 00032 public: 00033 00043 friend class SASEdge; 00044 friend class SASVertex; 00045 friend class SolventAccessibleSurface; 00046 friend class TriangulatedSAS; 00047 friend class SASTriangulator; 00048 00049 BALL_CREATE(SASFace) 00050 00051 00054 00055 typedef std::list<bool>::iterator OrientationIterator; 00056 typedef std::list<bool>::const_iterator ConstOrientationIterator; 00057 00059 00062 00066 SASFace() 00067 ; 00068 00076 SASFace(const SASFace& sasface, bool deep = false) 00077 ; 00078 00082 virtual ~SASFace() 00083 ; 00084 00086 00089 00096 void set(const SASFace& sasface, bool deep = false) 00097 ; 00098 00104 SASFace& operator = (const SASFace& sasface) 00105 ; 00106 00108 00111 00115 void setSphere(const TSphere3<double>& sphere) 00116 ; 00117 00121 TSphere3<double> getSphere() const 00122 ; 00123 00125 00128 00132 virtual bool operator == (const SASFace&) const 00133 ; 00134 00138 virtual bool operator != (const SASFace&) const 00139 ; 00140 00144 virtual bool operator *= (const SASFace&) const 00145 ; 00146 00148 00151 00152 OrientationIterator beginOrientation() 00153 ; 00154 ConstOrientationIterator beginOrientation() const 00155 ; 00156 OrientationIterator endOrientation() 00157 ; 00158 ConstOrientationIterator endOrientation() const 00159 ; 00160 00162 00163 protected: 00164 00168 00169 /*_ A list of booleans to indicate the orientation of each sasedge. 00170 */ 00171 std::list<bool> orientation_; 00172 /*_ The sphere on which the face lies. 00173 */ 00174 TSphere3<double> sphere_; 00175 00177 }; 00178 00182 00185 BALL_EXPORT std::ostream& operator << (std::ostream& s, const SASFace& sasface); 00186 00188 00189 } // namespace BALL 00190 00191 #endif // BALL_STRUCTURE_SASFACE_H