33 #ifndef vtkAbstractImageInterpolator_h 
   34 #define vtkAbstractImageInterpolator_h 
   36 #include "vtkImagingCoreModule.h"  
   39 #define VTK_IMAGE_BORDER_CLAMP 0 
   40 #define VTK_IMAGE_BORDER_REPEAT 1 
   41 #define VTK_IMAGE_BORDER_MIRROR 2 
   63   virtual void ReleaseData();
 
   85   double Interpolate(
double x, 
double y, 
double z, 
int component);
 
   94   bool Interpolate(
const double point[3], 
double *
value);
 
   99   void SetOutValue(
double outValue);
 
  107   void SetTolerance(
double tol);
 
  116   void SetComponentOffset(
int offset);
 
  125   void SetComponentCount(
int count);
 
  132   int ComputeNumberOfComponents(
int inputComponents);
 
  139   int GetNumberOfComponents();
 
  147   void InterpolateIJK(
const double point[3], 
double *
value);
 
  148   void InterpolateIJK(
const float point[3], 
float *
value);
 
  158   bool CheckBoundsIJK(
const double x[3]);
 
  159   bool CheckBoundsIJK(
const float x[3]);
 
  170   void SetBorderMode(
int mode);
 
  178   const char *GetBorderModeAsString();
 
  187   virtual void ComputeSupportSize(
const double matrix[16], 
int support[3]) = 0;
 
  195   virtual bool IsSeparable() = 0;
 
  208   virtual void PrecomputeWeightsForExtent(
 
  209     const double matrix[16], 
const int extent[6], 
int checkExtent[6],
 
  211   virtual void PrecomputeWeightsForExtent(
 
  212     const float matrix[16], 
const int extent[6], 
int checkExtent[6],
 
  230     double *
value, 
int n);
 
  233     float *
value, 
int n);
 
  240   vtkGetVector3Macro(Spacing, 
double);
 
  247   vtkGetVector3Macro(Origin, 
double);
 
  254   vtkGetVector6Macro(Extent, 
int);
 
  262   VTK_LEGACY(
int *GetWholeExtent());
 
  263   VTK_LEGACY(
void GetWholeExtent(
int extent[6]));
 
  273   virtual void InternalUpdate() = 0;
 
  284   virtual void GetInterpolationFunc(
 
  287   virtual void GetInterpolationFunc(
 
  296   virtual void GetRowInterpolationFunc(
 
  299   virtual void GetRowInterpolationFunc(
 
  305   double StructuredBoundsDouble[6];
 
  306   float StructuredBoundsFloat[6];
 
  319   void (*InterpolationFuncDouble)(
 
  321   void (*InterpolationFuncFloat)(
 
  324   void (*RowInterpolationFuncDouble)(
 
  326     double *outPtr, 
int n);
 
  327   void (*RowInterpolationFuncFloat)(
 
  329     float *outPtr, 
int n);
 
  338   const 
double point[3], 
double *
value)
 
  340   this->InterpolationFuncDouble(this->InterpolationInfo, point, value);
 
  344   const float point[3], 
float *
value)
 
  346   this->InterpolationFuncFloat(this->InterpolationInfo, point, value);
 
  351   double *bounds = this->StructuredBoundsDouble;
 
  352   return !((x[0] < bounds[0]) | (x[0] > bounds[1]) |
 
  353            (x[1] < bounds[2]) | (x[1] > bounds[3]) |
 
  354            (x[2] < bounds[4]) | (x[2] > bounds[5]));
 
  359   float *bounds = this->StructuredBoundsFloat;
 
  360   return !((x[0] < bounds[0]) | (x[0] > bounds[1]) |
 
  361            (x[1] < bounds[2]) | (x[1] > bounds[3]) |
 
  362            (x[2] < bounds[4]) | (x[2] > bounds[5]));
 
  367   double *
value, 
int n)
 
  369   this->RowInterpolationFuncDouble(weights, xIdx, yIdx, zIdx, value, n);
 
  376   this->RowInterpolationFuncFloat(weights, xIdx, yIdx, zIdx, value, n);
 
interpolate data values from images 
 
abstract base class for most VTK objects 
 
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses. 
 
void SetBorderModeToRepeat()
The border mode (default: clamp). 
 
void DeepCopy(vtkPistonReference *self, vtkPistonReference *other)
 
virtual void Update()
Updates the extensions string. 
 
#define VTK_IMAGE_BORDER_REPEAT
 
#define VTK_IMAGE_BORDER_CLAMP
 
void InterpolateIJK(const double point[3], double *value)
A version of Interpolate that takes structured coords instead of data coords. 
 
vtkInterpolationInfo * InterpolationInfo
 
a simple class to control print indentation 
 
topologically and geometrically regular array of data 
 
abstract superclass for arrays of numeric data 
 
int GetBorderMode()
The border mode (default: clamp). 
 
#define VTK_IMAGE_BORDER_MIRROR
 
bool CheckBoundsIJK(const double x[3])
Check an x,y,z point to see if it is within the bounds for the structured coords of the image...
 
general representation of visualization data 
 
void SetBorderModeToClamp()
The border mode (default: clamp). 
 
void InterpolateRow(vtkInterpolationWeights *&weights, int xIdx, int yIdx, int zIdx, double *value, int n)
Get a row of samples, using the weights that were precomputed by PrecomputeWeightsForExtent. 
 
void SetBorderModeToMirror()
The border mode (default: clamp).