[ GAMB | Source | Keywords | Summary | Ancestors | All Members | Descendants ]
public: | |
BipartiteMatcher(unsigned int m, unsigned int n) ; | |
void | addEdge(unsigned int ai, unsigned int bj); |
template<class MatchT> void | calculateMatch(MatchT& match); |
void | update(); |
protected: | |
BipartiteGraph | bipartiteGraph_; |
::list< | leda::node> setA_, setB_; |
vector< | leda::node> id2nodeSetA_, id2nodeSetB_; |
unsigned int sizeA_, | sizeB_; |
::list< | leda::edge> matchEdges_; |
bool | isMatchUpdated_; |
Back to the top of BipartiteMatcher
Back to the top of BipartiteMatcher
Back to the top of BipartiteMatcher
Back to the top of BipartiteMatcher
void TriangleMatch::BipartiteMatchExtension( const float maxAtomDistance, const RigidTrans3& rigidTrans3, Match& newMatch) { const register float maxAtomDistanceSquare = maxAtomDistance*maxAtomDistance; BipartiteMatcher bpm(m_sizeModel,m_sizeTarget); // copy and transform the scene Molecule<Atom> transformedScene = m_molTarget; transformedScene.rigidTrans(rigidTrans3); for(register unsigned int i = 0 ; i < m_sizeModel ; i++) for(register unsigned int j = 0 ; j < transformedScene.size(); j++) { if (m_molModel[i].dist2(transformedScene[j]) < maxAtomDistanceSquare) bpm.addEdge(i,j); } bpm.update(); bpm.calculateMatch(newMatch); if (newMatch.size() == 0) { //cout << "BipartiteMatchExtension: Match.size(): == 0; break"<< endl; return; } // Implementation Note: Calculating the best fit is necessary for setting the rigid transformation and the rmsd of the match newMatch.calculateBestFit(m_molModel,m_molTarget);//newMatch.calculateBestFit(*model, *scene); #ifdef dbgConsistency CheckConsistencyOfMatch(newMatch); #endif } void TriangleMatch::BipartiteMatchOneVoteList( const TVectVotes& vVotes ,const RigidTrans3& rigidTrans3,Match& newMatch) { BipartiteMatcher bpm(m_sizeModel,m_sizeTarget); // copy and transform the scene Molecule<Atom> transformedScene = m_molTarget; transformedScene.rigidTrans(rigidTrans3); TVectVotes::const_iterator it, itend = vVotes.end(); for(it = vVotes.begin(); it != itend ; it++) bpm.addEdge((*it).iModel,(*it).iTarget); bpm.update(); bpm.calculateMatch(newMatch); if (newMatch.size() == 0) return; // Implementation Note: Calculating the best fit is necessary for setting the rigid transformation and the rmsd of the match newMatch.calculateBestFit(m_molModel,m_molTarget);//newMatch.calculateBestFit(*model, *scene); #ifdef dbgConsistency CheckConsistencyOfMatch(newMatch); #endif }
Back to the top of BipartiteMatcher
Back to the top of BipartiteMatcher
Back to the top of BipartiteMatcher
BipartiteMatcher(unsigned int m, unsigned int n) ;
m,n are the sizes of each set
BipartiteMatcher(unsigned int m, unsigned int n) ;
Function is currently defined inline.
Back to the top of BipartiteMatcher
void addEdge(unsigned int ai, unsigned int bj);
inline void addEdge(unsigned int ai, unsigned int bj);
Function is currently defined inline.
Back to the top of BipartiteMatcher
template<class MatchT> void calculateMatch(MatchT& match);
template<class MatchT> inline void calculateMatch(MatchT& match);
Function is currently defined inline.
Back to the top of BipartiteMatcher
inline void update();
Function is currently defined inline.
Back to the top of BipartiteMatcher
BipartiteGraph bipartiteGraph_;
BipartiteGraph bipartiteGraph_;
Back to the top of BipartiteMatcher
::list< leda::node> setA_, setB_;
leda::list< leda::node> setA_, setB_;
Back to the top of BipartiteMatcher
vector< leda::node> id2nodeSetA_, id2nodeSetB_;
vector< leda::node> id2nodeSetA_, id2nodeSetB_;
Back to the top of BipartiteMatcher
unsigned int sizeA_, sizeB_;
Back to the top of BipartiteMatcher
::list< leda::edge> matchEdges_;
leda::list< leda::edge> matchEdges_;
Back to the top of BipartiteMatcher
bool isMatchUpdated_;
Back to the top of BipartiteMatcher
public: | ||
---|---|---|
void | addEdge(unsigned int ai, unsigned int bj); | |
template<class MatchT> void | calculateMatch(MatchT& match); | |
void | update(); | |
protected: | ||
BipartiteGraph | bipartiteGraph_; | |
::list< | leda::node> setA_, setB_; | |
vector< | leda::node> id2nodeSetA_, id2nodeSetB_; | |
unsigned int sizeA_, | sizeB_; | |
::list< | leda::edge> matchEdges_; | |
bool | isMatchUpdated_; |
Back to the top of BipartiteMatcher
Back to the top of BipartiteMatcher
Back to the top of BipartiteMatcher
Report problems to jkotula@unimax.com