00001 #ifndef mmn_make_tri_tree_h_ 00002 #define mmn_make_tri_tree_h_ 00003 //: 00004 // \file 00005 // \brief Representation of topological arc joining two vertices 00006 // \author Tim Cootes 00007 00008 00009 #include <vnl/vnl_matrix.h> 00010 #include <mmn/mmn_arc.h> 00011 #include <vcl_vector.h> 00012 00013 //: Compute arcs defining a graph s.t. triangles form a tree. 00014 // Compute arc of graph such that point belongs to at least one triangle, 00015 // and the graph of triangles is a tree (acylcic). 00016 // Two triangles are neighbours if they share an edge (arc). 00017 // 00018 // The approach is to select nodes one at a time, at each step 00019 // choosing the node closest to two nodes ending an existing arc. 00020 // This gives two new arcs. 00021 // 00022 // Complexity is approximately O(n^2) 00023 // 00024 // \param D: a symmetric matrix indicating proximity of two nodes 00025 // \param arcs: Output 2n-3 arcs defining the graph. 00026 // \param v0: If input as >=0 then defines one node of the first arc 00027 void mmn_make_tri_tree(const vnl_matrix<double>& D, 00028 vcl_vector<mmn_arc>& arcs, 00029 int v0=-1); 00030 00031 00032 #endif // mmn_make_tri_tree_h_ 00033
1.4.4