BALL  1.4.1
 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

ReducedSurface * rs_
std::vector< std::deque< Index > > neighbours_
std::vector< AtomStatus > atom_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)
RSFace * findFirstFace () throw (Exception::DivisionByZero)
RSFace * findFace (Position direction, Position extrem) throw (Exception::DivisionByZero)
RSEdge * findFirstEdge ()
RSEdge * findEdge (Position direction, Position extrem)
RSVertex * findFirstVertex ()
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)
RSEdge * createFreeEdge (RSVertex *vertex1, RSVertex *vertex2)
bool getCircles (Index atom1, Index atom2, TCircle3< double > &circle1, TCircle3< double > &circle2, TCircle3< double > &circle3)
TVector3< double > getFaceNormal (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)
RSFace * faceExists (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 434 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 461 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 449 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 832 of file reducedSurface.h.

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

Definition at line 828 of file reducedSurface.h.

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

Definition at line 836 of file reducedSurface.h.

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

Definition at line 848 of file reducedSurface.h.

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

Definition at line 844 of file reducedSurface.h.

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

Definition at line 840 of file reducedSurface.h.

ReducedSurface* BALL::RSComputer::rs_
protected

Definition at line 824 of file reducedSurface.h.

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

Definition at line 852 of file reducedSurface.h.