+++ /dev/null
-/* =======================================================================
- * @author: Leonardo Florez-Valencia
- * @email: florez-l@javeriana.edu.co
- * =======================================================================
- */
-#ifndef __FourierSeries__hxx__
-#define __FourierSeries__hxx__
-
-// -------------------------------------------------------------------------
-template< class S, unsigned int D >
-template< class S2, unsigned int D2 >
-FourierSeries< S, D >::
-FourierSeries( const FourierSeries< S2, D2 >& o )
- : m_RealAxis( D - 2 ),
- m_ImagAxis( D - 1 )
-{
- int q = o.GetNumberOfHarmonics( );
- this->SetNumberOfHarmonics( q );
- for( int l = -q; l <= q; ++l )
- ( *this )[ l ] =
- TComplex( S( std::real( o[ l ] ) ), S( std::imag( o[ l ] ) ) );
-}
-
-// -------------------------------------------------------------------------
-template< class S, unsigned int D >
-template< class _TIt >
-FourierSeries< S, D >::
-FourierSeries( const _TIt& b, const _TIt& e, unsigned int q )
- : m_RealAxis( D - 2 ),
- m_ImagAxis( D - 1 )
-{
- std::vector< TComplex > aux;
- for( _TIt it = b; it != e; ++it )
- aux.push_back( TComplex( S( ( *it )[ 0 ] ), S( ( *it )[ 1 ] ) ) );
- this->_DFT( aux, q );
-}
-
-// -------------------------------------------------------------------------
-template< class S, unsigned int D >
-template< class S2, unsigned int D2 >
-typename FourierSeries< S, D >::
-Self& FourierSeries< S, D >::
-operator=( const FourierSeries< S2, D2 >& o )
-{
- if( D == D2 )
- {
- this->m_RealAxis = o.GetRealAxis( );
- this->m_ImagAxis = o.GetImagAxis( );
- }
- else
- {
- this->m_RealAxis = D - 2;
- this->m_ImagAxis = D - 1;
-
- } // fi
- int q = o.GetNumberOfHarmonics( );
- this->SetNumberOfHarmonics( q );
- for( int l = -q; l <= q; ++l )
- ( *this )[ l ] =
- TComplex( S( std::real( o[ l ] ) ), S( std::imag( o[ l ] ) ) );
- return( *this );
-}
-
-// -------------------------------------------------------------------------
-template< class S, unsigned int D >
-template< class _TOtherScalar >
-void FourierSeries< S, D >::
-SetEllipses( const std::vector< _TOtherScalar >& ellipses )
-{
- int Q = ( ellipses.size( ) - 2 ) >> 2;
- Q = ( Q < 1 )? 1: Q;
- this->SetNumberOfHarmonics( Q );
- auto cIt = ellipses.begin( );
- S cx = ( cIt != ellipses.end( ) )? *cIt: S( 0 );
- if( cIt != ellipses.end( ) )
- ++cIt;
- S cy = ( cIt != ellipses.end( ) )? *cIt: S( 0 );
- if( cIt != ellipses.end( ) )
- ++cIt;
- ( *this )[ 0 ] = TComplex( cx, cy );
- for( int l = 1; l <= Q; ++l )
- {
- S a = ( cIt != ellipses.end( ) )? *cIt: S( 0 );
- if( cIt != ellipses.end( ) )
- ++cIt;
- S b = ( cIt != ellipses.end( ) )? *cIt: S( 0 );
- if( cIt != ellipses.end( ) )
- ++cIt;
- S t = ( cIt != ellipses.end( ) )? *cIt: S( 0 );
- if( cIt != ellipses.end( ) )
- ++cIt;
- S p = ( cIt != ellipses.end( ) )? *cIt: S( 0 );
- if( cIt != ellipses.end( ) )
- ++cIt;
- this->SetEllipse( l, a, b, t, p );
-
- } // rof
-}
-
-#endif // __FourierSeries__hxx__
-
-// eof - $RCSfile$