00001
00002
00003
00004
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
00200
00201 TVector3<double> point_;
00202
00203
00204 TVector3<double> normal_;
00205
00206
00207 Index atom_;
00208
00210 };
00211
00215
00218 BALL_EXPORT std::ostream& operator << (std::ostream& s, const SESVertex& sesvertex);
00219
00221
00222
00223 }
00224
00225 #endif // BALL_SES_SESVERTEX_H