SASFace.h

Go to the documentation of this file.
00001 // -*- Mode: C++; tab-width: 2; -*-
00002 // vi: set ts=2:
00003 //
00004 // $Id: SASFace.h,v 1.9 2005/12/23 17:02:02 amoll Exp $
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     /*_ A list of booleans to indicate the orientation of each sasedge.
00172     */
00173     std::list<bool> orientation_;
00174     /*_ The sphere on which the face lies.
00175     */
00176     TSphere3<double> sphere_;
00177 
00179   };
00180 
00184 
00187   BALL_EXPORT std::ostream& operator << (std::ostream& s, const SASFace& sasface);
00188 
00190 
00191 } // namespace BALL
00192 
00193 #endif // BALL_STRUCTURE_SASFACE_H