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);
152 struct hash<
BALL::SortedPosition2>
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