X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcpExtensions%2FDataStructures%2FSimple3DCurve.cxx;fp=lib%2FcpExtensions%2FDataStructures%2FSimple3DCurve.cxx;h=0000000000000000000000000000000000000000;hb=410a1d0bf36fb01148880c034973308e4600ffda;hp=1d1a92e000bcf114c7bd9873aa96b0063aa0f326;hpb=f1747c7248d5eead5ea9d7e57bda0b081bcef065;p=cpPlugins.git diff --git a/lib/cpExtensions/DataStructures/Simple3DCurve.cxx b/lib/cpExtensions/DataStructures/Simple3DCurve.cxx deleted file mode 100644 index 1d1a92e..0000000 --- a/lib/cpExtensions/DataStructures/Simple3DCurve.cxx +++ /dev/null @@ -1,137 +0,0 @@ -#include - -// ------------------------------------------------------------------------- -template< class _TScalar > -void cpExtensions::DataStructures::Simple3DCurve< _TScalar >:: -Modified( ) const -{ - this->Superclass::Modified( ); - this->m_FramesUpdated = false; -} - -// ------------------------------------------------------------------------- -template< class _TScalar > -void cpExtensions::DataStructures::Simple3DCurve< _TScalar >:: -Clear( ) -{ - this->m_Points.clear( ); - this->m_Frames.clear( ); - this->Modified( ); -} - -// ------------------------------------------------------------------------- -template< class _TScalar > -unsigned long cpExtensions::DataStructures::Simple3DCurve< _TScalar >:: -GetNumberOfPoints( ) const -{ - return( this->m_Points.size( ) ); -} - -// ------------------------------------------------------------------------- -template< class _TScalar > -const typename cpExtensions::DataStructures::Simple3DCurve< _TScalar >:: -TMatrix& cpExtensions::DataStructures::Simple3DCurve< _TScalar >:: -GetFrame( unsigned int id ) const -{ - if( !( this->m_FramesUpdated ) ) - { - unsigned long N = this->m_Points.size( ); - - std::vector< TVector > tg( N ); - tg[ 0 ] = this->m_Points[ 1 ] - this->m_Points[ 0 ]; - tg[ N - 1 ] = this->m_Points[ N - 1 ] - this->m_Points[ N - 2 ]; - for( unsigned int i = 1; i < N - 1; ++i ) - tg[ i ] = this->m_Points[ i + 1 ] - this->m_Points[ i - 1 ]; - - std::vector< TVector > no( N ); - std::vector< TVector > bn( N ); - TVector prev_tg( _TScalar( 0 ) ), prev_no( _TScalar( 0 ) ); - prev_tg[ 0 ] = _TScalar( 1 ); - prev_no[ 1 ] = _TScalar( 1 ); - for( unsigned int i = 0; i < N; ++i ) - { - auto ntg = tg[ i ].GetNorm( ); - if( double( ntg ) > double( 0 ) ) - tg[ i ] /= ntg; - - _TScalar ct = prev_tg * tg[ i ]; - TVector a = itk::CrossProduct( prev_tg, tg[ i ] ); - _TScalar st = a.GetNorm( ); - if( st > _TScalar( 0 ) ) - a /= st; - - no[ i ] = - ( prev_no * ct ) + - ( itk::CrossProduct( a, prev_no ) * st ) + - ( a * ( ( a * prev_no ) * ( _TScalar( 1 ) - ct ) ) ); - auto nno = no[ i ].GetNorm( ); - if( double( nno ) > double( 0 ) ) - no[ i ] /= nno; - - bn[ i ] = itk::CrossProduct( tg[ i ], no[ i ] ); - - prev_tg = tg[ i ]; - prev_no = no[ i ]; - - } // rof - - this->m_Frames.clear( ); - for( unsigned int i = 0; i < N; ++i ) - { - TMatrix m; - for( unsigned int d = 0; d < 3; ++d ) - { - m[ d ][ 0 ] = tg[ i ][ d ]; - m[ d ][ 1 ] = no[ i ][ d ]; - m[ d ][ 2 ] = bn[ i ][ d ]; - - } // rof - this->m_Frames.push_back( m ); - - } // rof - - this->m_FramesUpdated = true; - - } // fi - return( this->m_Frames[ id ] ); -} - -// ------------------------------------------------------------------------- -template< class _TScalar > -const typename cpExtensions::DataStructures::Simple3DCurve< _TScalar >:: -TPoint& cpExtensions::DataStructures::Simple3DCurve< _TScalar >:: -GetPoint( unsigned int id ) const -{ - return( this->m_Points[ id ] ); -} - -// ------------------------------------------------------------------------- -template< class _TScalar > -typename cpExtensions::DataStructures::Simple3DCurve< _TScalar >:: -TVector cpExtensions::DataStructures::Simple3DCurve< _TScalar >:: -GetVector( unsigned int id ) const -{ - return( this->m_Points[ id ].GetVectorFromOrigin( ) ); -} - -// ------------------------------------------------------------------------- -template< class _TScalar > -cpExtensions::DataStructures::Simple3DCurve< _TScalar >:: -Simple3DCurve( ) - : Superclass( ), - m_FramesUpdated( false ) -{ -} - -// ------------------------------------------------------------------------- -template< class _TScalar > -cpExtensions::DataStructures::Simple3DCurve< _TScalar >:: -~Simple3DCurve( ) -{ -} - -// ------------------------------------------------------------------------- -template class cpExtensions::DataStructures::Simple3DCurve< float >; -template class cpExtensions::DataStructures::Simple3DCurve< double >; - -// eof - $RCSfile$