SESVertex.h

Go to the documentation of this file.
00001 // -*- Mode: C++; tab-width: 2; -*-
00002 // vi: set ts=2:
00003 //
00004 // $Id: SESVertex.h,v 1.22 2005/12/23 17:02:02 amoll Exp $
00005 //
00006 
00007 #ifndef BALL_STRUCTURE_SESVERTEX_H
00008 #define BALL_STRUCTURE_SESVERTEX_H
00009 
00010 #ifndef BALL_STRUCTURE_GRAPHVERTEX_H
00011 # include <BALL/STRUCTURE/graphVertex.h>
00012 #endif
00013 
00014 #ifndef BALL_MATHS_VECTOR3_H
00015 # include <BALL/MATHS/vector3.h>
00016 #endif
00017 
00018 namespace BALL
00019 {
00020   class SESEdge;
00021   class SESFace;
00022   class SolventExcludedSurface;
00023   class SESComputer;
00024   class SESSingularityCleaner;
00025   class TriangulatedSES;
00026   class SESTriangulator;
00027 
00031   class BALL_EXPORT SESVertex : public GraphVertex< SESVertex,SESEdge,SESFace >
00032   {
00033     public:
00034 
00046     friend class SESEdge;
00047     friend class SESFace;
00048     friend class SolventExcludedSurface;
00049     friend class SESComputer;
00050     friend class SESSingularityCleaner;
00051     friend class TriangulatedSES;
00052     friend class SESTriangulator;
00053 
00054     BALL_CREATE(SESVertex)
00055 
00056     
00059 
00063     SESVertex()
00064       ;
00065 
00073     SESVertex(const SESVertex& sesvertex, bool deep = false)
00074       ;
00075 
00083     SESVertex
00084         (const TVector3<double>&  point,
00085          const TVector3<double>&  normal,
00086          Index          atom,
00087          Index          index)
00088       ;
00089 
00093     virtual ~SESVertex()
00094       ;
00095 
00097 
00100 
00108     void set(const SESVertex& sesvertex, bool deep = false)
00109       ;
00110 
00116     SESVertex& operator = (const SESVertex& sesvertex)
00117       ;
00118 
00125     void set(const TVector3<double> point,
00126         const TVector3<double>& normal,
00127         Index atom,
00128         Index index)
00129       ;
00130 
00134     void setPoint(const TVector3<double>& point)
00135       ;
00136 
00140     TVector3<double> getPoint() const
00141       ;
00142 
00146     void setNormal(const TVector3<double>& normal)
00147       throw(Exception::DivisionByZero);
00148 
00152     TVector3<double> getNormal() const
00153       ;
00154 
00158     void setAtom(Index atom)
00159       ;
00160 
00164     Index getAtom() const
00165       ;
00166 
00168 
00172 
00176     virtual bool operator == (const SESVertex&) const
00177       ;
00178 
00182     virtual bool operator != (const SESVertex&) const
00183       ;
00184 
00188     virtual bool operator *= (const SESVertex&) const
00189       ;
00190 
00192 
00193     protected:
00194 
00198 
00199     /*_ The coordinates of the vertex.
00200     */
00201     TVector3<double> point_;
00202     /*_ The normal vector of the vertex.
00203     */
00204     TVector3<double> normal_;
00205     /*_ The index of the closest atom.
00206     */
00207     Index atom_;
00208 
00210   };
00211 
00215 
00218   BALL_EXPORT std::ostream& operator << (std::ostream& s, const SESVertex& sesvertex);
00219 
00221 
00222    
00223 } // namespace BALL
00224 
00225 #endif // BALL_SES_SESVERTEX_H