5 #ifndef BALL_STRUCTURE_REDUCEDSURFACE_H 6 #define BALL_STRUCTURE_REDUCEDSURFACE_H 8 #ifndef BALL_MATHC_COMMON_H 12 #ifndef BALL_MATHS_SIMPLEBOX3_H 16 #ifndef BALL_MATHS_CIRCLE3_H 20 #ifndef BALL_MATHS_SPHERE_H 24 #ifndef BALL_MATHS_VECTOR3_H 28 #ifndef BALL_DATATYPE_HASHSET_H 32 #ifndef BALL_DATATYPE_HASHSET_H 36 #ifndef BALL_COMMON_EXCEPTION_H 40 #ifndef BALL_STRUCTURE_RSEDGE_H 44 #ifndef BALL_STRUCTURE_RSFACE_H 48 #ifndef BALL_STRUCTURE_RSVERTEX_H 64 if (
a >
b) std::swap(
a,
b);
69 return (
a == pos.
a) && (
b == pos.
b);
101 if (
a >
b) std::swap(
a,
b);
102 if (
a >
c) std::swap(
a,
c);
103 if (
b >
c) std::swap(
b,
c);
108 return (
a == pos.
a) && (
b == pos.
b) && (
c == pos.
c);
158 boost::hash_combine(seed, p.
a);
159 boost::hash_combine(seed, p.
b);
166 struct hash<
BALL::SortedPosition3>
172 boost::hash_combine(seed, p.
a);
173 boost::hash_combine(seed, p.
b);
174 boost::hash_combine(seed, p.
c);
184 class SolventExcludedSurface;
186 class SESSingularityCleaner;
187 class TriangulatedSES;
188 class SolventAccessibleSurface;
189 class TriangulatedSAS;
190 class SESTriangulator;
242 const double& probe_radius);
279 Size numberOfAtoms()
const;
284 Size numberOfVertices()
const;
289 Size numberOfEdges()
const;
294 Size numberOfFaces()
const;
299 double getProbeRadius()
const;
337 void insert(
RSEdge* rsedge);
342 void insert(
RSFace* rsface);
347 double getMaximalRadius()
const;
404 std::vector<RSVertex*>& rsvertex1,
405 std::vector<RSVertex*>& rsvertex2);
410 std::vector<RSEdge*>& rsedge1,
411 std::vector<RSEdge*>& rsedge2);
422 std::vector< TSphere3<double> >
atom_;
504 STATUS_ON_SURFACE = 0,
557 void preProcessing();
564 void getRSComponent();
572 bool treatFace(
RSFace* face);
580 bool treatEdge(
RSEdge* edge);
587 void correct(
Index atom);
594 void extendComponent();
720 void findThirdAtom(
Index atom1,
Index atom2,
const std::deque<Index>& third,
735 const std::deque<Index>& neighboursOfTwoAtoms(
const SortedPosition2& pos);
746 std::deque<Index>& output_list);
815 RSFace* faceExists(
RSFace* face,
const std::list< RSVertex* >& vertices);
840 void correctProbePosition(
Position atom);
852 void insert(
RSEdge* edge);
856 void insert(
RSFace* face);
902 #endif // BALL_STRUCTURE_REDUCEDSURFACE_H
SortedPosition2(Position a1, Position a2)
HashMap< SortedPosition3, ProbePosition *> probe_positions_
std::vector< RSEdge *> edges_
std::vector< RSVertex *> vertices_
std::vector< RSFace *> faces_
bool operator<(const SortedPosition3 &pos) const
BALL_EXPORT std::ostream & operator<<(std::ostream &os, const Exception::GeneralException &e)
HashSet< RSFace * > new_faces_
HashMap class based on the STL map (containing serveral convenience functions)
TSimpleBox3< double > bounding_box_
BALL_EXTERN_VARIABLE const double c
BALL_EXPORT AtomList atoms(const AtomContainer &fragment, const String &expression=String())
size_t operator()(const BALL::SortedPosition2 &p) const
HashMap< SortedPosition2, std::deque< Index > > neighbours_of_two_
bool operator<(const SortedPosition2 &pos) const
std::vector< AtomStatus > atom_status_
bool operator==(const SortedPosition3 &pos) const
std::vector< std::list< RSVertex * > > vertices_
std::vector< TSphere3< double > > atom_
SortedPosition3(Position a1, Position a2, Position a3)
size_t operator()(const BALL::SortedPosition3 &p) const
HashSet< RSVertex * > rm_vertices_
std::vector< std::deque< Index > > neighbours_
bool operator==(const SortedPosition2 &pos) const
std::deque< RSVertex * > new_vertices_
#define BALL_CREATE(name)