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

#include <BALL/STRUCTURE/reducedSurface.h>

Classes

struct  ProbePosition
 

Public Types

Enums
enum  ProbeStatus { STATUS_OK = 0, STATUS_NOT_OK, STATUS_NOT_TESTED }
 
enum  AtomStatus { STATUS_ON_SURFACE = 0, STATUS_INSIDE, STATUS_UNKNOWN }
 

Public Member Functions

Constructors and Destructors
 RSComputer ()
 
 RSComputer (ReducedSurface *rs)
 
virtual ~RSComputer ()
 
Accessors
void run () throw (Exception::GeneralException, Exception::DivisionByZero, Exception::IndexOverflow)
 

Protected Attributes

ReducedSurfacers_
 
std::vector< std::deque< Index > > neighbours_
 
std::vector< AtomStatusatom_status_
 
HashMap< SortedPosition2,
std::deque< Index > > 
neighbours_of_two_
 
HashMap< SortedPosition3,
ProbePosition * > 
probe_positions_
 
HashSet< RSVertex * > new_vertices_
 
HashSet< RSFace * > new_faces_
 
std::vector< std::list
< RSVertex * > > 
vertices_
 

Private Member Functions

void preProcessing ()
 
void getRSComponent () throw (Exception::GeneralException, Exception::DivisionByZero, Exception::IndexOverflow)
 
bool treatFace (RSFace *face) throw (Exception::GeneralException, Exception::DivisionByZero, Exception::IndexOverflow)
 
bool treatEdge (RSEdge *edge) throw (Exception::GeneralException, Exception::DivisionByZero, Exception::IndexOverflow)
 
void correct (Index atom)
 
void extendComponent () throw (Exception::GeneralException, Exception::DivisionByZero, Exception::IndexOverflow)
 
Index thirdAtom (RSVertex *vertex1, RSVertex *vertex2, RSFace *face, TSphere3< double > &probe, TAngle< double > &phi) throw (Exception::GeneralException, Exception::DivisionByZero, Exception::IndexOverflow)
 
Position getStartPosition () throw (Exception::DivisionByZero)
 
RSFacefindFirstFace () throw (Exception::DivisionByZero)
 
RSFacefindFace (Position direction, Position extrem) throw (Exception::DivisionByZero)
 
RSEdgefindFirstEdge ()
 
RSEdgefindEdge (Position direction, Position extrem)
 
RSVertexfindFirstVertex ()
 
Index findFirstAtom (Position direction, Position extrem)
 
Index findSecondAtom (Index atom, Position direction, Position extrem)
 
void findThirdAtom (Index atom1, Index atom2, const std::deque< Index > &third, std::deque< std::pair< Index, TSphere3< double > > > &atoms)
 
const std::deque< Index > & neighboursOfTwoAtoms (const SortedPosition2 &pos)
 
void neighboursOfThreeAtoms (Index atom1, Index atom2, Index atom3, std::deque< Index > &output_list)
 
double getCircleExtremum (const TCircle3< double > &circle, Position direction, Position extrem)
 
RSEdgecreateFreeEdge (RSVertex *vertex1, RSVertex *vertex2)
 
bool getCircles (Index atom1, Index atom2, TCircle3< double > &circle1, TCircle3< double > &circle2, TCircle3< double > &circle3)
 
TVector3< doublegetFaceNormal (const TSphere3< double > &atom1, const TSphere3< double > &atom2, const TSphere3< double > &atom3, const TSphere3< double > &probe)
 
void updateFaceAndEdges (RSVertex *v1, RSVertex *v2, RSVertex *v3, RSEdge *e1, RSEdge *e2, RSEdge *e3, RSFace *f, const TSphere3< double > &probe)
 
RSFacefaceExists (RSFace *face, const std::list< RSVertex * > &vertices)
 
bool centerOfProbe (const SortedPosition3 &pos, TVector3< double > &c1, TVector3< double > &c2)
 
bool checkProbe (const TSphere3< double > &probe, const SortedPosition3 &pos)
 
void correctProbePosition (Position atom)
 
void correctProbePosition (const SortedPosition3 &pos)
 
void insert (RSVertex *vertex)
 
void insert (RSEdge *edge)
 
void insert (RSFace *face)
 

Detailed Description

Generic RSComputer Class.

Definition at line 476 of file reducedSurface.h.

Member Enumeration Documentation

status of an atom 0 on surface 1 inside 2 outside

Enumerator
STATUS_ON_SURFACE 
STATUS_INSIDE 
STATUS_UNKNOWN 

Definition at line 503 of file reducedSurface.h.

status of the probe positions of three atoms: 0 ok 1 not ok 2 not tested

Enumerator
STATUS_OK 
STATUS_NOT_OK 
STATUS_NOT_TESTED 

Definition at line 491 of file reducedSurface.h.

Constructor & Destructor Documentation

BALL::RSComputer::RSComputer ( )

Default constructor. All components are initialized to (T)0 or NULL, respectivly.

BALL::RSComputer::RSComputer ( ReducedSurface rs)

Detailed constructor.

virtual BALL::RSComputer::~RSComputer ( )
virtual

Destructor.

Member Function Documentation

bool BALL::RSComputer::centerOfProbe ( const SortedPosition3 pos,
TVector3< double > &  c1,
TVector3< double > &  c2 
)
private
bool BALL::RSComputer::checkProbe ( const TSphere3< double > &  probe,
const SortedPosition3 pos 
)
private
void BALL::RSComputer::correct ( Index  atom)
private
void BALL::RSComputer::correctProbePosition ( Position  atom)
private
void BALL::RSComputer::correctProbePosition ( const SortedPosition3 pos)
private
RSEdge* BALL::RSComputer::createFreeEdge ( RSVertex vertex1,
RSVertex vertex2 
)
private
void BALL::RSComputer::extendComponent ( ) throw (Exception::GeneralException, Exception::DivisionByZero, Exception::IndexOverflow)
private
RSFace* BALL::RSComputer::faceExists ( RSFace face,
const std::list< RSVertex * > &  vertices 
)
private
RSEdge* BALL::RSComputer::findEdge ( Position  direction,
Position  extrem 
)
private
RSFace* BALL::RSComputer::findFace ( Position  direction,
Position  extrem 
) throw (Exception::DivisionByZero)
private
Index BALL::RSComputer::findFirstAtom ( Position  direction,
Position  extrem 
)
private
RSEdge* BALL::RSComputer::findFirstEdge ( )
private
RSFace* BALL::RSComputer::findFirstFace ( ) throw (Exception::DivisionByZero)
private
RSVertex* BALL::RSComputer::findFirstVertex ( )
private
Index BALL::RSComputer::findSecondAtom ( Index  atom,
Position  direction,
Position  extrem 
)
private
void BALL::RSComputer::findThirdAtom ( Index  atom1,
Index  atom2,
const std::deque< Index > &  third,
std::deque< std::pair< Index, TSphere3< double > > > &  atoms 
)
private
double BALL::RSComputer::getCircleExtremum ( const TCircle3< double > &  circle,
Position  direction,
Position  extrem 
)
private
bool BALL::RSComputer::getCircles ( Index  atom1,
Index  atom2,
TCircle3< double > &  circle1,
TCircle3< double > &  circle2,
TCircle3< double > &  circle3 
)
private
TVector3<double> BALL::RSComputer::getFaceNormal ( const TSphere3< double > &  atom1,
const TSphere3< double > &  atom2,
const TSphere3< double > &  atom3,
const TSphere3< double > &  probe 
)
private
void BALL::RSComputer::getRSComponent ( ) throw (Exception::GeneralException, Exception::DivisionByZero, Exception::IndexOverflow)
private
Position BALL::RSComputer::getStartPosition ( ) throw (Exception::DivisionByZero)
private
void BALL::RSComputer::insert ( RSVertex vertex)
private
void BALL::RSComputer::insert ( RSEdge edge)
private
void BALL::RSComputer::insert ( RSFace face)
private
void BALL::RSComputer::neighboursOfThreeAtoms ( Index  atom1,
Index  atom2,
Index  atom3,
std::deque< Index > &  output_list 
)
private
const std::deque<Index>& BALL::RSComputer::neighboursOfTwoAtoms ( const SortedPosition2 pos)
private
void BALL::RSComputer::preProcessing ( )
private

Compute the reduced surface

Index BALL::RSComputer::thirdAtom ( RSVertex vertex1,
RSVertex vertex2,
RSFace face,
TSphere3< double > &  probe,
TAngle< double > &  phi 
) throw (Exception::GeneralException, Exception::DivisionByZero, Exception::IndexOverflow)
private
bool BALL::RSComputer::treatEdge ( RSEdge edge) throw (Exception::GeneralException, Exception::DivisionByZero, Exception::IndexOverflow)
private
bool BALL::RSComputer::treatFace ( RSFace face) throw (Exception::GeneralException, Exception::DivisionByZero, Exception::IndexOverflow)
private
void BALL::RSComputer::updateFaceAndEdges ( RSVertex v1,
RSVertex v2,
RSVertex v3,
RSEdge e1,
RSEdge e2,
RSEdge e3,
RSFace f,
const TSphere3< double > &  probe 
)
private

Member Data Documentation

std::vector< AtomStatus > BALL::RSComputer::atom_status_
protected

Definition at line 874 of file reducedSurface.h.

std::vector< std::deque<Index> > BALL::RSComputer::neighbours_
protected

Definition at line 870 of file reducedSurface.h.

HashMap< SortedPosition2, std::deque<Index> > BALL::RSComputer::neighbours_of_two_
protected

Definition at line 878 of file reducedSurface.h.

HashSet<RSFace*> BALL::RSComputer::new_faces_
protected

Definition at line 890 of file reducedSurface.h.

HashSet<RSVertex*> BALL::RSComputer::new_vertices_
protected

Definition at line 886 of file reducedSurface.h.

HashMap< SortedPosition3, ProbePosition* > BALL::RSComputer::probe_positions_
protected

Definition at line 882 of file reducedSurface.h.

ReducedSurface* BALL::RSComputer::rs_
protected

Definition at line 866 of file reducedSurface.h.

std::vector< std::list<RSVertex*> > BALL::RSComputer::vertices_
protected

Definition at line 894 of file reducedSurface.h.