00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef BALL_STRUCTURE_RSCONSTRUCTOR_H
00011 #define BALL_STRUCTURE_RSCONSTRUCTOR_H
00012
00013 #include <vector>
00014 #include <BALL/STRUCTURE/ringAnalyser.h>
00015
00016 namespace BALL
00017 {
00018 class Atom;
00019
00024 class BALL_EXPORT RSConstructor
00025 {
00026 public:
00027
00028 typedef RingAnalyser::RingInfo RingInfo;
00029
00033 RSConstructor();
00034
00038 virtual ~RSConstructor();
00039
00045 void constructRS(std::vector<RingInfo>& analysed_rings, Size& i);
00046
00047 private:
00048
00054 void buildRegularPolygon(std::vector<Atom*>& ring, Size& z);
00055
00061 void attachFused(RingInfo& ring_info, std::vector<RingInfo>& ringsystem);
00062
00068 void attachBridged(std::vector<Atom*>& ring, std::vector<RingInfo>& ringsystem);
00069
00075 void attachSpiro(RingInfo& ring_info, std::vector<RingInfo>& ringsystem);
00076
00082 void attachTemplate(std::vector<Atom*>& ring);
00083
00090 bool inside(Atom*& test_a, vector<Atom*>& ring);
00091
00092 };
00093 }
00094 #endif