X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2Ffpa%2FDataStructures%2FMinimumSpanningTree.hxx;h=c7083d9d53d7044b5eefb1099ca76ba44211ebb3;hb=34f4ff5d31c70f1127d43865c61e9f57a7071190;hp=5eecf290918cb143354f003ad85b999f85408d4f;hpb=2047276c8f1a02432fbcc7014722d460d6c1e60f;p=FrontAlgorithms.git diff --git a/lib/fpa/DataStructures/MinimumSpanningTree.hxx b/lib/fpa/DataStructures/MinimumSpanningTree.hxx index 5eecf29..c7083d9 100644 --- a/lib/fpa/DataStructures/MinimumSpanningTree.hxx +++ b/lib/fpa/DataStructures/MinimumSpanningTree.hxx @@ -76,6 +76,7 @@ SetCollisions( const TCollisions& collisions ) } // rof } // rof + this->m_Seeds.resize( N ); this->Modified( ); } @@ -91,9 +92,9 @@ ClearSeeds( ) // ------------------------------------------------------------------------- template< class _TVertex, class _Superclass > void fpa::DataStructures::MinimumSpanningTree< _TVertex, _Superclass >:: -AddSeed( const _TVertex& seed ) +AddSeed( const _TVertex& seed, unsigned long fId ) { - this->m_Seeds.push_back( seed ); + this->m_Seeds[ fId - 1 ] = seed; this->Modified( ); } @@ -101,7 +102,7 @@ AddSeed( const _TVertex& seed ) template< class _TVertex, class _Superclass > typename fpa::DataStructures::MinimumSpanningTree< _TVertex, _Superclass >:: TVertices fpa::DataStructures::MinimumSpanningTree< _TVertex, _Superclass >:: -GetPath( const _TVertex& a ) const +GetAxis( const _TVertex& a ) const { TVertices vertices; _TVertex it = a; @@ -121,14 +122,14 @@ GetPath( const _TVertex& a ) const template< class _TVertex, class _Superclass > typename fpa::DataStructures::MinimumSpanningTree< _TVertex, _Superclass >:: TVertices fpa::DataStructures::MinimumSpanningTree< _TVertex, _Superclass >:: -GetPath( const _TVertex& a, const _TVertex& b ) const +GetAxis( const _TVertex& a, const _TVertex& b ) const { static const unsigned long _inf = std::numeric_limits< unsigned long >::max( ); TVertices vertices; - TVertices pa = this->GetPath( a ); - TVertices pb = this->GetPath( b ); + TVertices pa = this->GetAxis( a ); + TVertices pb = this->GetAxis( b ); if( pa.size( ) > 0 && pb.size( ) > 0 ) { // Find front identifiers @@ -161,7 +162,7 @@ GetPath( const _TVertex& a, const _TVertex& b ) const if( N > 0 ) { // First path: from start vertex to first collision - vertices = this->GetPath( + vertices = this->GetAxis( a, this->m_Collisions[ fpath[ 0 ] ][ fpath[ 1 ] ].first ); @@ -169,7 +170,7 @@ GetPath( const _TVertex& a, const _TVertex& b ) const for( unsigned int i = 1; i < N - 1; ++i ) { TVertices ipath = - this->GetPath( + this->GetAxis( this->m_Collisions[ fpath[ i - 1 ] ][ fpath[ i ] ].first, this->m_Collisions[ fpath[ i + 1 ] ][ fpath[ i ] ].first ); @@ -180,7 +181,7 @@ GetPath( const _TVertex& a, const _TVertex& b ) const // Final path: from last collision to end point TVertices lpath = - this->GetPath( + this->GetAxis( this->m_Collisions[ fpath[ N - 1 ] ][ fpath[ N - 2 ] ].first, b ); for( long id = 0; id < lpath.size( ); ++id )