BALL
1.4.1
|
00001 // -*- Mode: C++; tab-width: 2; -*- 00002 // vi: set ts=2: 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 /*_ The coordinates of the vertex. 00198 */ 00199 TVector3<double> point_; 00200 /*_ The normal vector of the vertex. 00201 */ 00202 TVector3<double> normal_; 00203 /*_ The index of the closest atom. 00204 */ 00205 Index atom_; 00206 00208 }; 00209 00213 00216 BALL_EXPORT std::ostream& operator << (std::ostream& s, const SESVertex& sesvertex); 00217 00219 00220 00221 } // namespace BALL 00222 00223 #endif // BALL_SES_SESVERTEX_H