VTK  9.1.0
vtkCameraInterpolator.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Visualization Toolkit
4 Module: vtkCameraInterpolator.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=========================================================================*/
68#ifndef vtkCameraInterpolator_h
69#define vtkCameraInterpolator_h
70
71#include "vtkObject.h"
72#include "vtkRenderingCoreModule.h" // For export macro
73
74class vtkCamera;
75class vtkCameraList;
77class vtkCameraList;
78
79class VTKRENDERINGCORE_EXPORT vtkCameraInterpolator : public vtkObject
80{
81public:
83 void PrintSelf(ostream& os, vtkIndent indent) override;
84
89
94
96
100 double GetMinimumT();
101 double GetMaximumT();
103
108
115 void AddCamera(double t, vtkCamera* camera);
116
121 void RemoveCamera(double t);
122
128 void InterpolateCamera(double t, vtkCamera* camera);
129
133 enum
134 {
135 INTERPOLATION_TYPE_LINEAR = 0,
137 INTERPOLATION_TYPE_MANUAL
138 };
139
141
151 vtkSetClampMacro(InterpolationType, int, INTERPOLATION_TYPE_LINEAR, INTERPOLATION_TYPE_MANUAL);
152 vtkGetMacro(InterpolationType, int);
153 void SetInterpolationTypeToLinear() { this->SetInterpolationType(INTERPOLATION_TYPE_LINEAR); }
154 void SetInterpolationTypeToSpline() { this->SetInterpolationType(INTERPOLATION_TYPE_SPLINE); }
155 void SetInterpolationTypeToManual() { this->SetInterpolationType(INTERPOLATION_TYPE_MANUAL); }
157
159
168
170
177 vtkGetObjectMacro(FocalPointInterpolator, vtkTupleInterpolator);
179
181
188 vtkGetObjectMacro(ViewUpInterpolator, vtkTupleInterpolator);
190
192
199 vtkGetObjectMacro(ViewAngleInterpolator, vtkTupleInterpolator);
201
203
210 vtkGetObjectMacro(ParallelScaleInterpolator, vtkTupleInterpolator);
212
214
221 vtkGetObjectMacro(ClippingRangeInterpolator, vtkTupleInterpolator);
223
229
230protected:
233
234 // Control the interpolation type
236
237 // These perform the interpolation
244
245 // Initialize the interpolating splines
249
250 // Hold the list of cameras. PIMPL'd STL list.
251 vtkCameraList* CameraList;
252
253private:
255 void operator=(const vtkCameraInterpolator&) = delete;
256};
257
258#endif
interpolate a series of cameras to update a new camera
virtual void SetParallelScaleInterpolator(vtkTupleInterpolator *)
Set/Get the tuple interpolator used to interpolate the parallel scale portion of the camera.
vtkTupleInterpolator * ClippingRangeInterpolator
vtkTupleInterpolator * ParallelScaleInterpolator
void SetInterpolationTypeToLinear()
These are convenience methods to switch between linear and spline interpolation.
void SetInterpolationTypeToSpline()
These are convenience methods to switch between linear and spline interpolation.
void Initialize()
Clear the list of cameras.
virtual void SetClippingRangeInterpolator(vtkTupleInterpolator *)
Set/Get the tuple interpolator used to interpolate the clipping range portion of the camera.
virtual void SetPositionInterpolator(vtkTupleInterpolator *)
Set/Get the tuple interpolator used to interpolate the position portion of the camera.
virtual void SetFocalPointInterpolator(vtkTupleInterpolator *)
Set/Get the tuple interpolator used to interpolate the focal point portion of the camera.
static vtkCameraInterpolator * New()
Instantiate the class.
vtkTupleInterpolator * ViewUpInterpolator
vtkTupleInterpolator * ViewAngleInterpolator
vtkMTimeType GetMTime() override
Override GetMTime() because we depend on the interpolators which may be modified outside of this clas...
int GetNumberOfCameras()
Return the number of cameras in the list of cameras.
vtkTupleInterpolator * FocalPointInterpolator
vtkTupleInterpolator * PositionInterpolator
void RemoveCamera(double t)
Delete the camera at a particular parameter t.
~vtkCameraInterpolator() override
virtual void SetViewUpInterpolator(vtkTupleInterpolator *)
Set/Get the tuple interpolator used to interpolate the view up portion of the camera.
void AddCamera(double t, vtkCamera *camera)
Add another camera to the list of cameras defining the camera function.
virtual void SetViewAngleInterpolator(vtkTupleInterpolator *)
Set/Get the tuple interpolator used to interpolate the view angle portion of the camera.
double GetMinimumT()
Obtain some information about the interpolation range.
void InterpolateCamera(double t, vtkCamera *camera)
Interpolate the list of cameras and determine a new camera (i.e., fill in the camera provided).
void SetInterpolationTypeToManual()
These are convenience methods to switch between linear and spline interpolation.
double GetMaximumT()
Obtain some information about the interpolation range.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
a virtual camera for 3D rendering
Definition: vtkCamera.h:155
a simple class to control print indentation
Definition: vtkIndent.h:113
abstract base class for most VTK objects
Definition: vtkObject.h:73
record modification and/or execution time
Definition: vtkTimeStamp.h:52
interpolate a tuple of arbitrary size
@ PositionInterpolator
Definition: vtkX3D.h:151
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:287