VTK  9.1.0
vtkTransformInterpolator.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Visualization Toolkit
4 Module: vtkTransformInterpolator.h
5
6 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7 All rights reserved.
8 See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9
10 This software is distributed WITHOUT ANY WARRANTY; without even
11 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12 PURPOSE. See the above copyright notice for more information.
13
14=========================================================================*/
50#ifndef vtkTransformInterpolator_h
51#define vtkTransformInterpolator_h
52
53#include "vtkObject.h"
54#include "vtkRenderingCoreModule.h" // For export macro
55
56class vtkTransform;
57class vtkMatrix4x4;
58class vtkProp3D;
61class vtkTransformList;
62
63class VTKRENDERINGCORE_EXPORT vtkTransformInterpolator : public vtkObject
64{
65public:
67 void PrintSelf(ostream& os, vtkIndent indent) override;
68
73
78
80
85 double GetMinimumT();
86 double GetMaximumT();
88
92 void Initialize();
93
95
103 void AddTransform(double t, vtkTransform* xform);
104 void AddTransform(double t, vtkMatrix4x4* matrix);
105 void AddTransform(double t, vtkProp3D* prop3D);
107
112 void RemoveTransform(double t);
113
119 void InterpolateTransform(double t, vtkTransform* xform);
120
124 enum
125 {
126 INTERPOLATION_TYPE_LINEAR = 0,
128 INTERPOLATION_TYPE_MANUAL
129 };
130
132
141 vtkSetClampMacro(InterpolationType, int, INTERPOLATION_TYPE_LINEAR, INTERPOLATION_TYPE_MANUAL);
142 vtkGetMacro(InterpolationType, int);
143 void SetInterpolationTypeToLinear() { this->SetInterpolationType(INTERPOLATION_TYPE_LINEAR); }
144 void SetInterpolationTypeToSpline() { this->SetInterpolationType(INTERPOLATION_TYPE_SPLINE); }
145 void SetInterpolationTypeToManual() { this->SetInterpolationType(INTERPOLATION_TYPE_MANUAL); }
147
149
156 vtkGetObjectMacro(PositionInterpolator, vtkTupleInterpolator);
158
160
167 vtkGetObjectMacro(ScaleInterpolator, vtkTupleInterpolator);
169
171
178 vtkGetObjectMacro(RotationInterpolator, vtkQuaternionInterpolator);
180
186
187protected:
190
191 // Control the interpolation type
193
194 // Interpolators
198
199 // Initialize the interpolating splines
203
204 // Keep track of inserted data
205 vtkTransformList* TransformList;
206
207private:
209 void operator=(const vtkTransformInterpolator&) = delete;
210};
211
212#endif
a simple class to control print indentation
Definition: vtkIndent.h:113
represent and manipulate 4x4 transformation matrices
Definition: vtkMatrix4x4.h:145
abstract base class for most VTK objects
Definition: vtkObject.h:82
represents an 3D object for placement in a rendered scene
Definition: vtkProp3D.h:93
record modification and/or execution time
Definition: vtkTimeStamp.h:52
interpolate a series of transformation matrices
void SetInterpolationTypeToSpline()
These are convenience methods to switch between linear and spline interpolation.
virtual void SetRotationInterpolator(vtkQuaternionInterpolator *)
Set/Get the tuple interpolator used to interpolate the orientation portion of the transformation matr...
void Initialize()
Clear the list of transforms.
void AddTransform(double t, vtkTransform *xform)
Add another transform to the list of transformations defining the transform function.
void RemoveTransform(double t)
Delete the transform at a particular parameter t.
void InterpolateTransform(double t, vtkTransform *xform)
Interpolate the list of transforms and determine a new transform (i.e., fill in the transformation pr...
int GetNumberOfTransforms()
Return the number of transforms in the list of transforms.
vtkQuaternionInterpolator * RotationInterpolator
vtkTupleInterpolator * ScaleInterpolator
void SetInterpolationTypeToManual()
These are convenience methods to switch between linear and spline interpolation.
void AddTransform(double t, vtkMatrix4x4 *matrix)
Add another transform to the list of transformations defining the transform function.
void SetInterpolationTypeToLinear()
These are convenience methods to switch between linear and spline interpolation.
void AddTransform(double t, vtkProp3D *prop3D)
Add another transform to the list of transformations defining the transform function.
double GetMinimumT()
Obtain some information about the interpolation range.
static vtkTransformInterpolator * New()
Instantiate the class.
vtkMTimeType GetMTime() override
Override GetMTime() because we depend on the interpolators which may be modified outside of this clas...
virtual void SetPositionInterpolator(vtkTupleInterpolator *)
Set/Get the tuple interpolator used to interpolate the position portion of the transformation matrix.
double GetMaximumT()
Obtain some information about the interpolation range.
~vtkTransformInterpolator() override
virtual void SetScaleInterpolator(vtkTupleInterpolator *)
Set/Get the tuple interpolator used to interpolate the scale portion of the transformation matrix.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkTupleInterpolator * PositionInterpolator
describes linear transformations via a 4x4 matrix
Definition: vtkTransform.h:164
interpolate a tuple of arbitrary size
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:287