00001
00002
00003
00004
00005 #ifndef BALL_STRUCTURE_SESVERTEX_H
00006 #define BALL_STRUCTURE_SESVERTEX_H
00007
00008 #ifndef BALL_STRUCTURE_GRAPHVERTEX_H
00009 # include <BALL/STRUCTURE/graphVertex.h>
00010 #endif
00011
00012 #ifndef BALL_MATHS_VECTOR3_H
00013 # include <BALL/MATHS/vector3.h>
00014 #endif
00015
00016 namespace BALL
00017 {
00018 class SESEdge;
00019 class SESFace;
00020 class SolventExcludedSurface;
00021 class SESComputer;
00022 class SESSingularityCleaner;
00023 class TriangulatedSES;
00024 class SESTriangulator;
00025
00029 class BALL_EXPORT SESVertex : public GraphVertex< SESVertex,SESEdge,SESFace >
00030 {
00031 public:
00032
00044 friend class SESEdge;
00045 friend class SESFace;
00046 friend class SolventExcludedSurface;
00047 friend class SESComputer;
00048 friend class SESSingularityCleaner;
00049 friend class TriangulatedSES;
00050 friend class SESTriangulator;
00051
00052 BALL_CREATE(SESVertex)
00053
00054
00057
00061 SESVertex()
00062 ;
00063
00071 SESVertex(const SESVertex& sesvertex, bool deep = false)
00072 ;
00073
00081 SESVertex
00082 (const TVector3<double>& point,
00083 const TVector3<double>& normal,
00084 Index atom,
00085 Index index)
00086 ;
00087
00091 virtual ~SESVertex()
00092 ;
00093
00095
00098
00106 void set(const SESVertex& sesvertex, bool deep = false)
00107 ;
00108
00114 SESVertex& operator = (const SESVertex& sesvertex)
00115 ;
00116
00123 void set(const TVector3<double> point,
00124 const TVector3<double>& normal,
00125 Index atom,
00126 Index index)
00127 ;
00128
00132 void setPoint(const TVector3<double>& point)
00133 ;
00134
00138 TVector3<double> getPoint() const
00139 ;
00140
00144 void setNormal(const TVector3<double>& normal)
00145 throw(Exception::DivisionByZero);
00146
00150 TVector3<double> getNormal() const
00151 ;
00152
00156 void setAtom(Index atom)
00157 ;
00158
00162 Index getAtom() const
00163 ;
00164
00166
00170
00174 virtual bool operator == (const SESVertex&) const
00175 ;
00176
00180 virtual bool operator != (const SESVertex&) const
00181 ;
00182
00186 virtual bool operator *= (const SESVertex&) const
00187 ;
00188
00190
00191 protected:
00192
00196
00197
00198
00199 TVector3<double> point_;
00200
00201
00202 TVector3<double> normal_;
00203
00204
00205 Index atom_;
00206
00208 };
00209
00213
00216 BALL_EXPORT std::ostream& operator << (std::ostream& s, const SESVertex& sesvertex);
00217
00219
00220
00221 }
00222
00223 #endif // BALL_SES_SESVERTEX_H