#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.
| typedef std::pair< std::pair<TAngle<double>,Index>,TVector3<double> > BALL::SESSingularityCleaner::Intersection |
| 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] |
HashMap< Position, HashMap< Position, HashMap< Position, ProbeIntersection* > > > BALL::SESSingularityCleaner::probe_intersections_ [protected] |
SolventExcludedSurface* BALL::SESSingularityCleaner::ses_ [protected] |
HashGrid3<Index>* BALL::SESSingularityCleaner::vertex_grid_ [protected] |