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);
299 double getProbeRadius() const;
347 double getMaximalRadius() const;
370 TAngle<
double>& angle,
bool check = false) const;
410 std::vector<
RSEdge*>& rsedge1,
411 std::vector<
RSEdge*>& rsedge2);
426 double probe_radius_;
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);
#define BALL_CREATE(name)
BALL_EXPORT AtomList atoms(const AtomContainer &fragment, const String &expression=String())
HashMap class based on the STL map (containing serveral convenience functions)
bool operator==(const SortedPosition2 &pos) const
SortedPosition2(Position a1, Position a2)
bool operator<(const SortedPosition2 &pos) const
SortedPosition3(Position a1, Position a2, Position a3)
bool operator==(const SortedPosition3 &pos) const
bool operator<(const SortedPosition3 &pos) const
size_t operator()(const BALL::SortedPosition2 &p) const
size_t operator()(const BALL::SortedPosition3 &p) const
HashMap< SortedPosition2, std::deque< Index > > neighbours_of_two_
std::vector< std::list< RSVertex * > > vertices_
std::vector< std::deque< Index > > neighbours_
HashSet< RSFace * > new_faces_
std::vector< AtomStatus > atom_status_
std::deque< RSVertex * > new_vertices_
HashMap< SortedPosition3, ProbePosition * > probe_positions_
RSComputer(ReducedSurface *rs)
HashSet< RSVertex * > rm_vertices_