14 #ifndef __itkBSplineInterpolationWeightFunctionBase_h
15 #define __itkBSplineInterpolationWeightFunctionBase_h
17 #include "itkFunctionBase.h"
18 #include "itkContinuousIndex.h"
20 #include "itkArray2D.h"
21 #include "itkMatrix.h"
31 template <
unsigned int SplineOrder,
unsigned int Dimension>
32 class GetConstNumberOfWeightsHack
35 typedef GetConstNumberOfWeightsHack<SplineOrder, Dimension-1> OneDimensionLess;
36 itkStaticConstMacro( Value,
unsigned long, (SplineOrder+1) * OneDimensionLess::Value );
40 template <
unsigned int SplineOrder>
41 class GetConstNumberOfWeightsHack<SplineOrder, 0>
44 itkStaticConstMacro( Value,
unsigned long, 1 );
63 template <
class TCoordRep =
float,
64 unsigned int VSpaceDimension = 2,
65 unsigned int VSplineOrder = 3 >
67 public FunctionBase< ContinuousIndex<TCoordRep,VSpaceDimension>, Array<double> >
73 ContinuousIndex< TCoordRep, VSpaceDimension >,
82 itkStaticConstMacro( SpaceDimension,
unsigned int, VSpaceDimension );
85 itkStaticConstMacro( SplineOrder,
unsigned int, VSplineOrder );
88 typedef GetConstNumberOfWeightsHack<
89 itkGetStaticConstMacro(SplineOrder),
90 itkGetStaticConstMacro(SpaceDimension) > GetConstNumberOfWeightsHackType;
91 itkStaticConstMacro( NumberOfWeights,
unsigned long, GetConstNumberOfWeightsHackType::Value );
121 itkGetConstReferenceMacro( SupportSize,
SizeType );
124 itkGetConstMacro( NumberOfWeights,
unsigned long );
132 itkGetStaticConstMacro( SplineOrder ) > KernelType;
147 itkGetStaticConstMacro( SpaceDimension ),
151 virtual void Compute1DWeights(
157 virtual void PrintSelf( std::ostream & os, Indent indent )
const;
172 void operator=(
const Self&);
175 void InitializeSupport(
void );
181 void InitializeOffsetToIndexTable(
void );
188 #define ITK_TEMPLATE_BSplineInterpolationWeightFunctionBase(_, EXPORT, x, y) namespace itk { \
189 _(3(class EXPORT BSplineInterpolationWeightFunctionBase< ITK_TEMPLATE_3 x >)) \
190 namespace Templates { typedef BSplineInterpolationWeightFunctionBase< ITK_TEMPLATE_3 x > BSplineInterpolationWeightFunctionBase##y; } \
193 #if ITK_TEMPLATE_EXPLICIT
194 # include "Templates/itkBSplineInterpolationWeightFunctionBase+-.h"
198 # include "itkBSplineInterpolationWeightFunctionBase.txx"