BALL::SESSingularityCleaner Class Reference
[Molecular Surface Computation]

#include <BALL/STRUCTURE/solventExcludedSurface.h>

List of all members.


Classes

struct  ProbeIntersection

Public Types

typedef std::pair< std::pair
< TAngle< double >, Index >
, TVector3< double > > 
Intersection

Public Member Functions

Constructors and Destructors
 SESSingularityCleaner ()
 SESSingularityCleaner (SolventExcludedSurface *ses, HashGrid3< Index > *vertex_grid_)
virtual ~SESSingularityCleaner ()
Accessors
bool run () throw (Exception::GeneralException)

Protected Attributes

SolventExcludedSurfaceses_
HashGrid3< Index > * vertex_grid_
HashMap< Position, HashMap
< Position, HashMap< Position,
ProbeIntersection * > > > 
probe_intersections_

Private Member Functions

Treatment of singularities (private)
Index vertexExists (TVector3< double > point)
void treatSingularities ()
void getSingularFaces (std::list< SESFace * > &faces)
bool treatFirstCategory ()
void treatSecondCategory ()
void getFirstCategoryFaces (std::list< SESFace * > &first_category_faces)
void noCut (SESFace *face1, SESFace *face2)
void twoCuts (SESFace *face1, SESFace *face2)
void treatSingularEdge (SESEdge *edge, HashGrid3< Position > &grid,::std::list< SESEdge * > &deletable_edges)
void getIntersectionsOfSingularEdge (SESEdge *edge, const TAngle< double > &phi, HashGrid3< Position > &grid, std::list< Intersection > &intersections)
bool getIntersectionPointsAndAngles (const TCircle3< double > &circle, const TVector3< double > &point, Position index1, Position index2, Position probe_index, TAngle< double > &phi1, TVector3< double > &point1, TAngle< double > &phi2, TVector3< double > &point2)
bool isIntersection (const TAngle< double > &min_phi, const TAngle< double > &max_phi, const TAngle< double > &phi, const TVector3< double > &middle, const TSphere3< double > &probe)
void buildEndEdges (SESEdge *edge, const std::list< Intersection > &min, const std::list< Intersection > &max, SESVertex *&vertex1, SESVertex *&vertex2, Index &actual_min, Index &actual_max)
void buildEdge (SESEdge *edge, Index face1, Index &face2, Index end, SESVertex *&vertex, const HashSet< Index > &indices, bool minimum)
void getExtrema (const std::list< Intersection > &intersections, std::list< Intersection > &min, std::list< Intersection > &max)
void buildEndEdge (SESEdge *edge, const std::list< Intersection > &extrema, SESVertex *&vertex, Index &actual_extremum, bool min)
bool probeIntersection (Index face1, Index face2, Index face3, TVector3< double > &point1, TVector3< double > &point2)
void sort (SESFace *face1, SESFace *face2, std::vector< SESEdge * > &sesedge1, std::vector< SESEdge * > &sesedge2, std::vector< SESVertex * > &sesvertex1, std::vector< SESVertex * > &sesvertex2)
void sort (Index u1, Index u2, Index u3, Index &s1, Index &s2, Index &s3)

Friends

class SESComputer

Detailed Description

Generic SESComputer Class.


Member Typedef Documentation


Constructor & Destructor Documentation

BALL::SESSingularityCleaner::SESSingularityCleaner (  ) 

Default constructor. This method creates a new SESComputer object.

BALL::SESSingularityCleaner::SESSingularityCleaner ( SolventExcludedSurface ses,
HashGrid3< Index > *  vertex_grid_ 
)

Detailed constructor

virtual BALL::SESSingularityCleaner::~SESSingularityCleaner (  )  [virtual]

Destructor. As there are no dynamic data structures, nothing happens.


Member Function Documentation

void BALL::SESSingularityCleaner::buildEdge ( SESEdge edge,
Index  face1,
Index face2,
Index  end,
SESVertex *&  vertex,
const HashSet< Index > &  indices,
bool  minimum 
) [private]
void BALL::SESSingularityCleaner::buildEndEdge ( SESEdge edge,
const std::list< Intersection > &  extrema,
SESVertex *&  vertex,
Index actual_extremum,
bool  min 
) [private]
void BALL::SESSingularityCleaner::buildEndEdges ( SESEdge edge,
const std::list< Intersection > &  min,
const std::list< Intersection > &  max,
SESVertex *&  vertex1,
SESVertex *&  vertex2,
Index actual_min,
Index actual_max 
) [private]
void BALL::SESSingularityCleaner::getExtrema ( const std::list< Intersection > &  intersections,
std::list< Intersection > &  min,
std::list< Intersection > &  max 
) [private]
void BALL::SESSingularityCleaner::getFirstCategoryFaces ( std::list< SESFace * > &  first_category_faces  )  [private]
bool BALL::SESSingularityCleaner::getIntersectionPointsAndAngles ( const TCircle3< double > &  circle,
const TVector3< double > &  point,
Position  index1,
Position  index2,
Position  probe_index,
TAngle< double > &  phi1,
TVector3< double > &  point1,
TAngle< double > &  phi2,
TVector3< double > &  point2 
) [private]
void BALL::SESSingularityCleaner::getIntersectionsOfSingularEdge ( SESEdge edge,
const TAngle< double > &  phi,
HashGrid3< Position > &  grid,
std::list< Intersection > &  intersections 
) [private]
void BALL::SESSingularityCleaner::getSingularFaces ( std::list< SESFace * > &  faces  )  [private]
bool BALL::SESSingularityCleaner::isIntersection ( const TAngle< double > &  min_phi,
const TAngle< double > &  max_phi,
const TAngle< double > &  phi,
const TVector3< double > &  middle,
const TSphere3< double > &  probe 
) [private]
void BALL::SESSingularityCleaner::noCut ( SESFace face1,
SESFace face2 
) [private]
bool BALL::SESSingularityCleaner::probeIntersection ( Index  face1,
Index  face2,
Index  face3,
TVector3< double > &  point1,
TVector3< double > &  point2 
) [private]
bool BALL::SESSingularityCleaner::run (  )  throw (Exception::GeneralException)

Solves the singularities

void BALL::SESSingularityCleaner::sort ( Index  u1,
Index  u2,
Index  u3,
Index s1,
Index s2,
Index s3 
) [private]
void BALL::SESSingularityCleaner::sort ( SESFace face1,
SESFace face2,
std::vector< SESEdge * > &  sesedge1,
std::vector< SESEdge * > &  sesedge2,
std::vector< SESVertex * > &  sesvertex1,
std::vector< SESVertex * > &  sesvertex2 
) [private]
bool BALL::SESSingularityCleaner::treatFirstCategory (  )  [private]
void BALL::SESSingularityCleaner::treatSecondCategory (  )  [private]
void BALL::SESSingularityCleaner::treatSingularEdge ( SESEdge edge,
HashGrid3< Position > &  grid,
::std::list< SESEdge * > &  deletable_edges 
) [private]
void BALL::SESSingularityCleaner::treatSingularities (  )  [private]
void BALL::SESSingularityCleaner::twoCuts ( SESFace face1,
SESFace face2 
) [private]
Index BALL::SESSingularityCleaner::vertexExists ( TVector3< double point  )  [private]

Friends And Related Function Documentation

friend class SESComputer [friend]

Member Data Documentation