BALL  1.4.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Classes | Public Types | Protected Attributes | Friends | List of all members
BALL::SESSingularityCleaner Class Reference

#include <BALL/STRUCTURE/solventExcludedSurface.h>

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.

Definition at line 456 of file solventExcludedSurface.h.

Member Typedef Documentation

Definition at line 462 of file solventExcludedSurface.h.

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 ( SESFace face1,
SESFace face2,
std::vector< SESEdge * > &  sesedge1,
std::vector< SESEdge * > &  sesedge2,
std::vector< SESVertex * > &  sesvertex1,
std::vector< SESVertex * > &  sesvertex2 
)
private
void BALL::SESSingularityCleaner::sort ( Index  u1,
Index  u2,
Index  u3,
Index s1,
Index s2,
Index s3 
)
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

Definition at line 469 of file solventExcludedSurface.h.

Member Data Documentation

HashMap< Position, HashMap< Position, HashMap< Position, ProbeIntersection* > > > BALL::SESSingularityCleaner::probe_intersections_
protected

Definition at line 639 of file solventExcludedSurface.h.

SolventExcludedSurface* BALL::SESSingularityCleaner::ses_
protected

Definition at line 626 of file solventExcludedSurface.h.

HashGrid3<Index>* BALL::SESSingularityCleaner::vertex_grid_
protected

Definition at line 630 of file solventExcludedSurface.h.