BipartiteMatcher[ 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