00001
00002
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
00170
00171 std::list<bool> orientation_;
00172
00173
00174 TSphere3<double> sphere_;
00175
00177 };
00178
00182
00185 BALL_EXPORT std::ostream& operator << (std::ostream& s, const SASFace& sasface);
00186
00188
00189 }
00190
00191 #endif // BALL_STRUCTURE_SASFACE_H