00001
00002
00003
00004
00005
00006
00007 #ifndef BALL_STRUCTURE_SASFACE_H
00008 #define BALL_STRUCTURE_SASFACE_H
00009
00010 #ifndef BALL_STRUCTURE_GRAPHFACE_H
00011 # include <BALL/STRUCTURE/graphFace.h>
00012 #endif
00013
00014 #ifndef BALL_STRUCTURE_SPHERE3_H
00015 # include <BALL/MATHS/sphere3.h>
00016 #endif
00017
00018 #include <list>
00019
00020 namespace BALL
00021 {
00022
00023 class SolventAccessibleSurface;
00024 class SASEdge;
00025 class SASVertex;
00026 class TriangulatedSAS;
00027 class SASTriangulator;
00028
00032 class BALL_EXPORT SASFace : public GraphFace< SASVertex,SASEdge,SASFace >
00033 {
00034 public:
00035
00045 friend class SASEdge;
00046 friend class SASVertex;
00047 friend class SolventAccessibleSurface;
00048 friend class TriangulatedSAS;
00049 friend class SASTriangulator;
00050
00051 BALL_CREATE(SASFace)
00052
00053
00056
00057 typedef std::list<bool>::iterator OrientationIterator;
00058 typedef std::list<bool>::const_iterator ConstOrientationIterator;
00059
00061
00064
00068 SASFace()
00069 ;
00070
00078 SASFace(const SASFace& sasface, bool deep = false)
00079 ;
00080
00084 virtual ~SASFace()
00085 ;
00086
00088
00091
00098 void set(const SASFace& sasface, bool deep = false)
00099 ;
00100
00106 SASFace& operator = (const SASFace& sasface)
00107 ;
00108
00110
00113
00117 void setSphere(const TSphere3<double>& sphere)
00118 ;
00119
00123 TSphere3<double> getSphere() const
00124 ;
00125
00127
00130
00134 virtual bool operator == (const SASFace&) const
00135 ;
00136
00140 virtual bool operator != (const SASFace&) const
00141 ;
00142
00146 virtual bool operator *= (const SASFace&) const
00147 ;
00148
00150
00153
00154 OrientationIterator beginOrientation()
00155 ;
00156 ConstOrientationIterator beginOrientation() const
00157 ;
00158 OrientationIterator endOrientation()
00159 ;
00160 ConstOrientationIterator endOrientation() const
00161 ;
00162
00164
00165 protected:
00166
00170
00171
00172
00173 std::list<bool> orientation_;
00174
00175
00176 TSphere3<double> sphere_;
00177
00179 };
00180
00184
00187 BALL_EXPORT std::ostream& operator << (std::ostream& s, const SASFace& sasface);
00188
00190
00191 }
00192
00193 #endif // BALL_STRUCTURE_SASFACE_H