VTK  9.3.0
vtkCameraInterpolator.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2// SPDX-License-Identifier: BSD-3-Clause
40#ifndef vtkCameraInterpolator_h
41#define vtkCameraInterpolator_h
42
43#include "vtkObject.h"
44#include "vtkRenderingCoreModule.h" // For export macro
45
46VTK_ABI_NAMESPACE_BEGIN
47class vtkCamera;
48class vtkCameraList;
50class vtkCameraList;
51
52class VTKRENDERINGCORE_EXPORT vtkCameraInterpolator : public vtkObject
53{
54public:
56 void PrintSelf(ostream& os, vtkIndent indent) override;
57
62
67
69
73 double GetMinimumT();
74 double GetMaximumT();
76
80 void Initialize();
81
88 void AddCamera(double t, vtkCamera* camera);
89
94 void RemoveCamera(double t);
95
101 void InterpolateCamera(double t, vtkCamera* camera);
102
106 enum
107 {
108 INTERPOLATION_TYPE_LINEAR = 0,
110 INTERPOLATION_TYPE_MANUAL
111 };
112
114
124 vtkSetClampMacro(InterpolationType, int, INTERPOLATION_TYPE_LINEAR, INTERPOLATION_TYPE_MANUAL);
125 vtkGetMacro(InterpolationType, int);
126 void SetInterpolationTypeToLinear() { this->SetInterpolationType(INTERPOLATION_TYPE_LINEAR); }
127 void SetInterpolationTypeToSpline() { this->SetInterpolationType(INTERPOLATION_TYPE_SPLINE); }
128 void SetInterpolationTypeToManual() { this->SetInterpolationType(INTERPOLATION_TYPE_MANUAL); }
130
132
139 vtkGetObjectMacro(PositionInterpolator, vtkTupleInterpolator);
141
143
150 vtkGetObjectMacro(FocalPointInterpolator, vtkTupleInterpolator);
152
154
161 vtkGetObjectMacro(ViewUpInterpolator, vtkTupleInterpolator);
163
165
172 vtkGetObjectMacro(ViewAngleInterpolator, vtkTupleInterpolator);
174
176
183 vtkGetObjectMacro(ParallelScaleInterpolator, vtkTupleInterpolator);
185
187
194 vtkGetObjectMacro(ClippingRangeInterpolator, vtkTupleInterpolator);
196
202
203protected:
206
207 // Control the interpolation type
209
210 // These perform the interpolation
217
218 // Initialize the interpolating splines
222
223 // Hold the list of cameras. PIMPL'd STL list.
224 vtkCameraList* CameraList;
225
226private:
228 void operator=(const vtkCameraInterpolator&) = delete;
229};
230
231VTK_ABI_NAMESPACE_END
232#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:41
a simple class to control print indentation
Definition vtkIndent.h:29
abstract base class for most VTK objects
Definition vtkObject.h:49
record modification and/or execution time
interpolate a tuple of arbitrary size
vtkTypeUInt32 vtkMTimeType
Definition vtkType.h:270