+// =========================================================================
+// @author Leonardo Florez Valencia
+// @email florez-l@javeriana.edu.co
+// =========================================================================
+
#ifndef __fpa__Image__MinimumSpanningTree__hxx__
#define __fpa__Image__MinimumSpanningTree__hxx__
TVertex fpa::Image::MinimumSpanningTree< _VDim >::
GetParent( const TVertex& v ) const
{
- TVertex p = v + this->GetPixel( v );
- return( p );
+ return( v + this->GetPixel( v ) );
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
template< unsigned int _VDim >
-typename fpa::Image::MinimumSpanningTree< _VDim >::
-TPoints fpa::Image::MinimumSpanningTree< _VDim >::
-GetEuclideanPath( const TVertex& a ) const
+void fpa::Image::MinimumSpanningTree< _VDim >::
+GetPolyLineParametricPath(
+ typename TPolyLineParametricPath::Pointer& path,
+ const TVertex& a
+ ) const
{
- TVertices path = this->GetPath( a );
- TPoints points;
- for( auto v = path.begin( ); v != path.end( ); ++v )
- {
- TPoint p;
- this->TransformIndexToPhysicalPoint( *v, p );
- points.push_back( p );
-
- } // rof
- return( points );
+ TVertices v = this->GetPath( a );
+ if( path.IsNull( ) )
+ path = TPolyLineParametricPath::New( );
+ path->SetReferenceImage( this );
+ typename TVertices::const_iterator vIt = v.begin( );
+ for( ; vIt != v.end( ); ++vIt )
+ path->AddVertex( *vIt );
}
// -------------------------------------------------------------------------
template< unsigned int _VDim >
-typename fpa::Image::MinimumSpanningTree< _VDim >::
-TPoints fpa::Image::MinimumSpanningTree< _VDim >::
-GetEuclideanPath( const TVertex& a, const TVertex& b ) const
+void fpa::Image::MinimumSpanningTree< _VDim >::
+GetPolyLineParametricPath(
+ typename TPolyLineParametricPath::Pointer& path,
+ const TVertex& a, const TVertex& b
+ ) const
{
- TVertices path = this->GetPath( a, b );
- TPoints points;
- for( auto v = path.begin( ); v != path.end( ); ++v )
- {
- TPoint p;
- this->TransformIndexToPhysicalPoint( *v, p );
- points.push_back( p );
-
- } // rof
- return( points );
+ TVertices v = this->GetPath( a, b );
+ if( path.IsNull( ) )
+ path = TPolyLineParametricPath::New( );
+ path->SetReferenceImage( this );
+ typename TVertices::const_iterator vIt = v.begin( );
+ for( ; vIt != v.end( ); ++vIt )
+ path->AddVertex( *vIt );
}
// -------------------------------------------------------------------------