#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 | |
SolventExcludedSurface * | ses_ |
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 |
Generic SESComputer Class.
Definition at line 456 of file solventExcludedSurface.h.
typedef std::pair< std::pair<TAngle<double>,Index>,TVector3<double> > BALL::SESSingularityCleaner::Intersection |
Definition at line 462 of file solventExcludedSurface.h.
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.
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] |
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] |
friend class SESComputer [friend] |
Definition at line 469 of file solventExcludedSurface.h.
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.