18#ifndef itkHilbertPath_h
19#define itkHilbertPath_h
53template <
typename TIndexValue =
unsigned int,
unsigned int VDimension = 3>
54class ITK_TEMPLATE_EXPORT
HilbertPath :
public Path<TIndexValue, Index<VDimension>, VDimension>
72 static constexpr unsigned int Dimension = VDimension;
75 using typename Superclass::OutputType;
76 using typename Superclass::InputType;
84 using typename Superclass::OffsetType;
92 return this->m_HilbertPath[input];
98 return this->m_HilbertPath[input];
105 return this->TransformMultiDimensionalIndexToPathIndex(input);
112 return static_cast<InputType>(this->NumberOfSteps());
121 itkExceptionMacro(
"Not implemented.");
128 this->m_HilbertPath.clear();
134 virtual inline HilbertPathSizeType
137 return m_HilbertPath.size();
145 this->ConstructHilbertPath();
212#ifndef ITK_MANUAL_INSTANTIATION
213# include "itkHilbertPath.hxx"
Base class for all data objects in ITK.
Represent an n-dimensional Hilbert path for a given order.
virtual HilbertPathSizeType NumberOfSteps() const
OutputType Evaluate(const PathIndexType &input) const override
PathIndexType SetBit(const PathIndexType, const PathIndexType, const PathIndexType, const PathIndexType)
PathIndexType GetLeftBitRotation(PathIndexType, PathIndexType, const PathIndexType)
std::vector< IndexType > HilbertPathType
typename HilbertPathType::size_type HilbertPathSizeType
PathIndexType GetGrayCode(const PathIndexType)
PathIndexType GetEntry(const PathIndexType)
void PrintSelf(std::ostream &os, Indent indent) const override
void Initialize() override
PathIndexType GetRightBitRotation(PathIndexType, PathIndexType, const PathIndexType)
PathIndexType GetInverseGrayCode(const PathIndexType)
PathIndexType GetTransform(const PathIndexType, const PathIndexType, const PathIndexType, const PathIndexType)
OutputType EvaluateToIndex(const PathIndexType &input) const override
OffsetType IncrementInput(InputType &) const override
virtual InputType EvaluateInverse(const IndexType &input)
PathIndexType GetDirection(const PathIndexType, const PathIndexType)
PathIndexType GetTrailingSetBits(const PathIndexType, const PathIndexType)
InputType EndOfInput() const override
IndexType TransformPathIndexToMultiDimensionalIndex(const PathIndexType id)
void ConstructHilbertPath()
PathIndexType GetBitRange(const PathIndexType, const PathIndexType, const PathIndexType, const PathIndexType)
PathIndexType TransformMultiDimensionalIndexToPathIndex(const IndexType &index)
unsigned int HilbertOrderType
~HilbertPath() override=default
PathIndexType GetInverseTransform(const PathIndexType, const PathIndexType, const PathIndexType, const PathIndexType)
Control indentation during Print() invocation.
Define additional traits for native types such as int or float.
Base class for most ITK classes.
Represent a path through ND Space.
constexpr unsigned int Dimension
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
Represent a n-dimensional index in a n-dimensional image.