X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcpExtensions%2FDataStructures%2FPolyLineParametricPath.h;h=7f122000948b60793d6f995152980e75939efd55;hb=80ac2c55630c2a345a2102f0be86843147a398cc;hp=77828ee46140efc3a5bd7154e53fb362807f6f61;hpb=e8aa06dcf9c9fe4391ece860ffd2d4e9c80e289d;p=cpPlugins.git diff --git a/lib/cpExtensions/DataStructures/PolyLineParametricPath.h b/lib/cpExtensions/DataStructures/PolyLineParametricPath.h index 77828ee..7f12200 100644 --- a/lib/cpExtensions/DataStructures/PolyLineParametricPath.h +++ b/lib/cpExtensions/DataStructures/PolyLineParametricPath.h @@ -1,8 +1,9 @@ -#ifndef __CPEXTENSIONS__DATASTRUCTURES__POLYLINEPARAMETRICPATH__H__ -#define __CPEXTENSIONS__DATASTRUCTURES__POLYLINEPARAMETRICPATH__H__ +#ifndef __cpExtensions__DataStructures__PolyLineParametricPath__h__ +#define __cpExtensions__DataStructures__PolyLineParametricPath__h__ #include #include +#include namespace cpExtensions { @@ -10,39 +11,65 @@ namespace cpExtensions { /** */ - template< unsigned int _NDim > + template< unsigned int _VDim > class PolyLineParametricPath - : public itk::PolyLineParametricPath< _NDim > + : public itk::PolyLineParametricPath< _VDim > { public: typedef PolyLineParametricPath Self; - typedef itk::PolyLineParametricPath< _NDim > Superclass; + typedef itk::PolyLineParametricPath< _VDim > Superclass; typedef itk::SmartPointer< Self > Pointer; typedef itk::SmartPointer< const Self > ConstPointer; - typedef itk::ImageBase< _NDim > TImageBase; + typedef itk::ImageBase< _VDim > TImageBase; + typedef typename TImageBase::SpacingType TSpacing; + typedef typename TImageBase::PointType TPoint; + typedef typename TImageBase::DirectionType TDirection; + typedef typename Superclass::ContinuousIndexType TContinuousIndex; + typedef typename TContinuousIndex::IndexType TIndex; + + typedef typename TPoint::VectorType TVector; + typedef cpExtensions::Algorithms::BezierCurveFunction< TVector > TBezier; public: itkNewMacro( Self ); itkTypeMacro( PolyLineParametricPath, itk::PolyLineParametricPath ); + itkGetConstReferenceMacro( Spacing, TSpacing ); + itkGetConstReferenceMacro( Origin, TPoint ); + itkGetConstReferenceMacro( Direction, TDirection ); + itkGetConstReferenceMacro( InverseDirection, TDirection ); + + itkSetMacro( Origin, TPoint ); + public: - TImageBase* GetReferenceImage( ) - { return( this->m_ReferenceImage ); } - const TImageBase* GetReferenceImage( ) const - { return( this->m_ReferenceImage ); } - void SetReferenceImage( const TImageBase* image ) + void AddVertex( const TContinuousIndex& vertex ); + unsigned long GetSize( ) const; + TContinuousIndex GetContinuousVertex( unsigned long i ) const; + TIndex GetVertex( unsigned long i ) const; + TPoint GetPoint( unsigned long i ) const; + TPoint GetSmoothPoint( double u ) const; + + virtual void SetSpacing( const TSpacing& spac ); + virtual void SetSpacing( const double spac[ _VDim ] ); + virtual void SetSpacing( const float spac[ _VDim ] ); + virtual void SetOrigin( const double ori[ _VDim ] ); + virtual void SetOrigin( const float ori[ _VDim ] ); + virtual void SetDirection( const TDirection& dir ); + + template< class _TRefImage > + inline void SetReferenceImage( const _TRefImage* image ) { - this->m_ReferenceImage = TImageBase::New( ); - this->m_ReferenceImage->SetDirection( image->GetDirection( ) ); - this->m_ReferenceImage->SetOrigin( image->GetOrigin( ) ); - this->m_ReferenceImage->SetSpacing( image->GetSpacing( ) ); - this->Modified( ); + this->SetSpacing( image->GetSpacing( ) ); + this->SetOrigin( image->GetOrigin( ) ); + this->SetDirection( image->GetDirection( ) ); } protected: - PolyLineParametricPath( ) { } - virtual ~PolyLineParametricPath( ) { } + PolyLineParametricPath( ); + virtual ~PolyLineParametricPath( ); + + virtual void _ComputeIndexToPhysicalPointMatrices( ); private: // Purposely not implemented @@ -50,13 +77,24 @@ namespace cpExtensions Self& operator=( const Self& other ); protected: - typename TImageBase::Pointer m_ReferenceImage; + typename TBezier::Pointer m_Bezier; + + TSpacing m_Spacing; + TPoint m_Origin; + TDirection m_Direction; + TDirection m_InverseDirection; + TDirection m_IndexToPhysicalPoint; + TDirection m_PhysicalPointToIndex; }; } // ecapseman } // ecapseman -#endif // __CPEXTENSIONS__DATASTRUCTURES__POLYLINEPARAMETRICPATH__H__ +#ifndef ITK_MANUAL_INSTANTIATION +# include +#endif // ITK_MANUAL_INSTANTIATION + +#endif // __cpExtensions__DataStructures__PolyLineParametricPath__h__ // eof - $RCSfile$