X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2Ffpa%2FFilters%2FMarksWithCollisionsInterface.hxx;fp=lib%2Ffpa%2FFilters%2FMarksWithCollisionsInterface.hxx;h=0000000000000000000000000000000000000000;hb=a8ac405fe1422bc0792a810f7f0693096a22c20e;hp=9a9852c34cd2a0b9200ca65158f1228a672390af;hpb=8abe87eaa0d29ba667d5cbf35f4ca1ca2e38c6c4;p=FrontAlgorithms.git diff --git a/lib/fpa/Filters/MarksWithCollisionsInterface.hxx b/lib/fpa/Filters/MarksWithCollisionsInterface.hxx deleted file mode 100644 index 9a9852c..0000000 --- a/lib/fpa/Filters/MarksWithCollisionsInterface.hxx +++ /dev/null @@ -1,131 +0,0 @@ -// ========================================================================= -// @author Leonardo Florez Valencia -// @email florez-l@javeriana.edu.co -// ========================================================================= -#ifndef __fpa__Filters__MarksWithCollisionsInterface__hxx__ -#define __fpa__Filters__MarksWithCollisionsInterface__hxx__ - -#include - -// ------------------------------------------------------------------------- -template< class _TTraits > -fpa::Filters::MarksWithCollisionsInterface< _TTraits >:: -MarksWithCollisionsInterface( itk::ProcessObject* f ) - : Superclass( f ), - m_StopAtOneFront( false ), - m_NumberOfFronts( 0 ), - m_NumberOfSeeds( 0 ) -{ -} - -// ------------------------------------------------------------------------- -template< class _TTraits > -fpa::Filters::MarksWithCollisionsInterface< _TTraits >:: -~MarksWithCollisionsInterface( ) -{ -} - -// ------------------------------------------------------------------------- -template< class _TTraits > -bool fpa::Filters::MarksWithCollisionsInterface< _TTraits >:: -StopAtOneFront( ) const -{ - return( this->m_StopAtOneFront ); -} - -// ------------------------------------------------------------------------- -template< class _TTraits > -void fpa::Filters::MarksWithCollisionsInterface< _TTraits >:: -StopAtOneFrontOn( ) -{ - this->SetStopAtOneFront( true ); -} - -// ------------------------------------------------------------------------- -template< class _TTraits > -void fpa::Filters::MarksWithCollisionsInterface< _TTraits >:: -StopAtOneFrontOff( ) -{ - this->SetStopAtOneFront( false ); -} - -// ------------------------------------------------------------------------- -template< class _TTraits > -void fpa::Filters::MarksWithCollisionsInterface< _TTraits >:: -SetStopAtOneFront( bool v ) -{ - if( this->m_StopAtOneFront != v ) - { - this->m_StopAtOneFront = v; - if( this->m_Filter != NULL ) - this->m_Filter->Modified( ); - - } // fi -} - -// ------------------------------------------------------------------------- -template< class _TTraits > -void fpa::Filters::MarksWithCollisionsInterface< _TTraits >:: -_InitCollisions( unsigned long nSeeds ) -{ - this->m_NumberOfFronts = this->m_NumberOfSeeds = nSeeds; - TCollision coll( TVertex( ), false ); - TCollisionsRow row( this->m_NumberOfFronts, coll ); - this->m_Collisions.clear( ); - this->m_Collisions.resize( this->m_NumberOfFronts, row ); -} - -// ------------------------------------------------------------------------- -template< class _TTraits > -bool fpa::Filters::MarksWithCollisionsInterface< _TTraits >:: -_Collisions( const TVertex& a, const TVertex& b ) -{ - unsigned long ma = this->_GetMark( a ); - unsigned long mb = this->_GetMark( b ); - if( ma == mb || ma == 0 || mb == 0 ) - return( false ); - - // Mark collision, if it is new - ma--; mb--; - bool ret = false; - bool exists = this->m_Collisions[ ma ][ mb ].second; - exists &= this->m_Collisions[ mb ][ ma ].second; - if( !exists ) - { - this->m_Collisions[ ma ][ mb ].first = a; - this->m_Collisions[ ma ][ mb ].second = true; - this->m_Collisions[ mb ][ ma ].first = b; - this->m_Collisions[ mb ][ ma ].second = true; - - // Update number of fronts - unsigned long count = 0; - std::vector< bool > m( this->m_NumberOfSeeds, false ); - std::queue< unsigned long > q; - q.push( 0 ); - while( !q.empty( ) ) - { - unsigned long f = q.front( ); - q.pop( ); - - if( m[ f ] ) - continue; - m[ f ] = true; - count++; - - for( unsigned int n = 0; n < this->m_NumberOfSeeds; ++n ) - if( this->m_Collisions[ f ][ n ].second && !m[ n ] ) - q.push( n ); - - } // elihw - this->m_NumberOfFronts = this->m_NumberOfSeeds - count + 1; - - } // fi - return( - this->m_StopAtOneFront && - this->m_NumberOfSeeds > 1 && - this->m_NumberOfFronts == 1 - ); -} - -#endif // __fpa__Filters__MarksWithCollisionsInterface__hxx__ -// eof - $RCSfile$