18 #ifndef itkBSplineInterpolationWeightFunction_h
19 #define itkBSplineInterpolationWeightFunction_h
47 template <
typename TCoordRep =
float,
unsigned int VSpaceDimension = 2,
unsigned int VSplineOrder = 3>
49 :
public FunctionBase<ContinuousIndex<TCoordRep, VSpaceDimension>,
50 FixedArray<double, Math::UnsignedPower(VSplineOrder + 1, VSpaceDimension)>>
70 static constexpr
unsigned int SpaceDimension = VSpaceDimension;
73 static constexpr
unsigned int SplineOrder = VSplineOrder;
79 static constexpr
unsigned int NumberOfWeights{ WeightsType::Length };
89 static constexpr
SizeType SupportSize{ SizeType::Filled(VSplineOrder + 1) };
95 Evaluate(
const ContinuousIndexType & index)
const override;
106 Evaluate(
const ContinuousIndexType & index, WeightsType & weights,
IndexType & startIndex)
const;
108 #if !defined(ITK_LEGACY_REMOVE)
110 itkLegacyMacro(
SizeType GetSupportSize()
const) {
return Self::SupportSize; };
113 itkLegacyMacro(
unsigned int GetNumberOfWeights()
const) {
return Self::NumberOfWeights; }
117 BSplineInterpolationWeightFunction() =
default;
118 ~BSplineInterpolationWeightFunction()
override =
default;
130 const auto supportSize = SupportSize;
138 #ifndef ITK_MANUAL_INSTANTIATION
139 # include "itkBSplineInterpolationWeightFunction.hxx"