Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef __itkBSplineInterpolationDerivativeWeightFunction_h
00015 #define __itkBSplineInterpolationDerivativeWeightFunction_h
00016
00017 #include "itkBSplineInterpolationWeightFunctionBase.h"
00018
00019 namespace itk
00020 {
00021
00039 template < class TCoordRep = float,
00040 unsigned int VSpaceDimension = 2,
00041 unsigned int VSplineOrder = 3 >
00042 class ITK_EXPORT BSplineInterpolationDerivativeWeightFunction :
00043 public BSplineInterpolationWeightFunctionBase<
00044 TCoordRep, VSpaceDimension, VSplineOrder >
00045 {
00046 public:
00048 typedef BSplineInterpolationDerivativeWeightFunction Self;
00049 typedef BSplineInterpolationWeightFunctionBase<
00050 TCoordRep, VSpaceDimension, VSplineOrder > Superclass;
00051 typedef SmartPointer<Self> Pointer;
00052 typedef SmartPointer<const Self> ConstPointer;
00053
00055 itkNewMacro( Self );
00056
00058 itkTypeMacro( BSplineInterpolationDerivativeWeightFunction,
00059 BSplineInterpolationWeightFunctionBase );
00060
00062 itkStaticConstMacro( SpaceDimension, unsigned int, VSpaceDimension );
00063
00065 itkStaticConstMacro( SplineOrder, unsigned int, VSplineOrder );
00066
00068 typedef typename Superclass::WeightsType WeightsType;
00069 typedef typename Superclass::IndexType IndexType;
00070 typedef typename Superclass::SizeType SizeType;
00071 typedef typename Superclass::ContinuousIndexType ContinuousIndexType;
00072
00074 virtual void SetDerivativeDirection( unsigned int dir );
00075
00076 protected:
00077 BSplineInterpolationDerivativeWeightFunction();
00078 ~BSplineInterpolationDerivativeWeightFunction() {}
00079
00081 typedef typename Superclass::KernelType KernelType;
00082 typedef typename Superclass::DerivativeKernelType DerivativeKernelType;
00083 typedef typename Superclass
00084 ::SecondOrderDerivativeKernelType SecondOrderDerivativeKernelType;
00085 typedef typename Superclass::TableType TableType;
00086 typedef typename Superclass::OneDWeightsType OneDWeightsType;
00087
00095 virtual void Compute1DWeights(
00096 const ContinuousIndexType & index,
00097 const IndexType & startIndex,
00098 OneDWeightsType & weights1D ) const;
00099
00101 virtual void PrintSelf( std::ostream & os, Indent indent ) const;
00102
00103 private:
00104 BSplineInterpolationDerivativeWeightFunction(const Self&);
00105 void operator=(const Self&);
00106
00108 unsigned int m_DerivativeDirection;
00109
00110 };
00111
00112 }
00113
00114
00115 #define ITK_TEMPLATE_BSplineInterpolationDerivativeWeightFunction(_, EXPORT, x, y) namespace itk { \
00116 _(3(class EXPORT BSplineInterpolationDerivativeWeightFunction< ITK_TEMPLATE_3 x >)) \
00117 namespace Templates { typedef BSplineInterpolationDerivativeWeightFunction< ITK_TEMPLATE_3 x > BSplineInterpolationDerivativeWeightFunction##y; } \
00118 }
00119
00120 #if ITK_TEMPLATE_EXPLICIT
00121 # include "Templates/itkBSplineInterpolationDerivativeWeightFunction+-.h"
00122 #endif
00123
00124 #if ITK_TEMPLATE_TXX
00125 # include "itkBSplineInterpolationDerivativeWeightFunction.txx"
00126 #endif
00127
00128
00129 #endif