/usr/include/vtk-7.1/vtkTupleInterpolator.h is in libvtk7-dev 7.1.1+dfsg1-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 | /*=========================================================================
Program: Visualization Toolkit
Module: vtkTupleInterpolator.h
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
/**
* @class vtkTupleInterpolator
* @brief interpolate a tuple of arbitray size
*
* This class is used to interpolate a tuple which may have an arbitrary
* number of components (but at least one component). The interpolation may
* be linear in form, or via a subclasses of vtkSpline.
*
* To use this class, begin by specifying the number of components of the
* tuple and the interpolation function to use. Then specify at least one
* pair of (t,tuple) with the AddTuple() method. Next interpolate the
* tuples with the InterpolateTuple(t,tuple) method, where "t" must be in the
* range of (t_min,t_max) parameter values specified by the AddTuple() method
* (if not then t is clamped), and tuple[] is filled in by the method (make
* sure that tuple [] is long enough to hold the interpolated data).
*
* You can control the type of interpolation to use. By default, the
* interpolation is based on a Kochanek spline. However, other types of
* splines can be specified. You can also set the interpolation method
* to linear, in which case the specified spline has no effect on the
* interpolation.
*
* @warning
* Setting the number of components or changing the type of interpolation
* causes the list of tuples to be reset, so any data inserted up to that
* point is lost. Bisection methods are used to speed up the search for the
* interpolation interval.
*/
#ifndef vtkTupleInterpolator_h
#define vtkTupleInterpolator_h
#include "vtkRenderingCoreModule.h" // For export macro
#include "vtkObject.h"
class vtkSpline;
class vtkPiecewiseFunction;
class VTKRENDERINGCORE_EXPORT vtkTupleInterpolator : public vtkObject
{
public:
vtkTypeMacro(vtkTupleInterpolator, vtkObject);
void PrintSelf(ostream& os, vtkIndent indent);
/**
* Instantiate the class.
*/
static vtkTupleInterpolator* New();
//@{
/**
* Specify the number of tuple components to interpolate. Note that setting
* this value discards any previously inserted data.
*/
void SetNumberOfComponents(int numComp);
vtkGetMacro(NumberOfComponents,int);
//@}
/**
* Return the number of tuples in the list of tuples to be
* interpolated.
*/
int GetNumberOfTuples();
//@{
/**
* Obtain some information about the interpolation range. The numbers
* returned (corresponding to parameter t, usually thought of as time)
* are undefined if the list of transforms is empty. This is a convenience
* method for interpolation.
*/
double GetMinimumT();
double GetMaximumT();
//@}
/**
* Reset the class so that it contains no (t,tuple) information.
*/
void Initialize();
/**
* Add another tuple to the list of tuples to be interpolated. Note that
* using the same time t value more than once replaces the previous tuple
* value at t. At least two tuples must be added to define an
* interpolation function.
*/
void AddTuple(double t, double tuple[]);
/**
* Delete the tuple at a particular parameter t. If there is no
* tuple defined at t, then the method does nothing.
*/
void RemoveTuple(double t);
/**
* Interpolate the list of tuples and determine a new tuple (i.e.,
* fill in the tuple provided). If t is outside the range of
* (min,max) values, then t is clamped. Note that each component
* of tuple[] is interpolated independently.
*/
void InterpolateTuple(double t, double tuple[]);
/**
* Enums to control the type of interpolation to use.
*/
enum {INTERPOLATION_TYPE_LINEAR=0,
INTERPOLATION_TYPE_SPLINE
};
//@{
/**
* Specify which type of function to use for interpolation. By default
* spline interpolation (SetInterpolationFunctionToSpline()) is used
* (i.e., a Kochanek spline) and the InterpolatingSpline instance variable
* is used to birth the actual interpolation splines via a combination of
* NewInstance() and DeepCopy(). You may also choose to use linear
* interpolation by invoking SetInterpolationFunctionToLinear(). Note that
* changing the type of interpolation causes previously inserted data
* to be discarded.
*/
void SetInterpolationType(int type);
vtkGetMacro(InterpolationType,int);
void SetInterpolationTypeToLinear()
{this->SetInterpolationType(INTERPOLATION_TYPE_LINEAR);}
void SetInterpolationTypeToSpline()
{this->SetInterpolationType(INTERPOLATION_TYPE_SPLINE);}
//@}
//@{
/**
* If the InterpolationType is set to spline, then this method applies. By
* default Kochanek interpolation is used, but you can specify any instance
* of vtkSpline to use. Note that the actual interpolating splines are
* created by invoking NewInstance() followed by DeepCopy() on the
* interpolating spline specified here, for each tuple component to
* interpolate.
*/
void SetInterpolatingSpline(vtkSpline*);
vtkGetObjectMacro(InterpolatingSpline,vtkSpline);
//@}
protected:
vtkTupleInterpolator();
virtual ~vtkTupleInterpolator();
// The number of components being interpolated
int NumberOfComponents;
// Specify the type of interpolation to use
int InterpolationType;
// This is the default 1D spline to use
vtkSpline *InterpolatingSpline;
// Internal variables for interpolation functions
void InitializeInterpolation();
vtkPiecewiseFunction **Linear;
vtkSpline **Spline;
private:
vtkTupleInterpolator(const vtkTupleInterpolator&) VTK_DELETE_FUNCTION;
void operator=(const vtkTupleInterpolator&) VTK_DELETE_FUNCTION;
};
#endif
|