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
49 #ifndef vtkCameraInterpolator_h
50 #define vtkCameraInterpolator_h
51 
52 #include "vtkObject.h"
53 #include "vtkRenderingCoreModule.h" // For export macro
54 
55 VTK_ABI_NAMESPACE_BEGIN
56 class vtkCamera;
57 class vtkCameraList;
59 class vtkCameraList;
60 
61 class VTKRENDERINGCORE_EXPORT vtkCameraInterpolator : public vtkObject
62 {
63 public:
65  void PrintSelf(ostream& os, vtkIndent indent) override;
66 
71 
76 
78 
82  double GetMinimumT();
83  double GetMaximumT();
85 
89  void Initialize();
90 
97  void AddCamera(double t, vtkCamera* camera);
98 
103  void RemoveCamera(double t);
104 
110  void InterpolateCamera(double t, vtkCamera* camera);
111 
115  enum
116  {
117  INTERPOLATION_TYPE_LINEAR = 0,
119  INTERPOLATION_TYPE_MANUAL
120  };
121 
123 
133  vtkSetClampMacro(InterpolationType, int, INTERPOLATION_TYPE_LINEAR, INTERPOLATION_TYPE_MANUAL);
134  vtkGetMacro(InterpolationType, int);
135  void SetInterpolationTypeToLinear() { this->SetInterpolationType(INTERPOLATION_TYPE_LINEAR); }
136  void SetInterpolationTypeToSpline() { this->SetInterpolationType(INTERPOLATION_TYPE_SPLINE); }
137  void SetInterpolationTypeToManual() { this->SetInterpolationType(INTERPOLATION_TYPE_MANUAL); }
139 
141 
150 
152 
159  vtkGetObjectMacro(FocalPointInterpolator, vtkTupleInterpolator);
161 
163 
170  vtkGetObjectMacro(ViewUpInterpolator, vtkTupleInterpolator);
172 
174 
181  vtkGetObjectMacro(ViewAngleInterpolator, vtkTupleInterpolator);
183 
185 
192  vtkGetObjectMacro(ParallelScaleInterpolator, vtkTupleInterpolator);
194 
196 
203  vtkGetObjectMacro(ClippingRangeInterpolator, vtkTupleInterpolator);
205 
210  vtkMTimeType GetMTime() override;
211 
212 protected:
215 
216  // Control the interpolation type
218 
219  // These perform the interpolation
226 
227  // Initialize the interpolating splines
231 
232  // Hold the list of cameras. PIMPL'd STL list.
233  vtkCameraList* CameraList;
234 
235 private:
237  void operator=(const vtkCameraInterpolator&) = delete;
238 };
239 
240 VTK_ABI_NAMESPACE_END
241 #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.
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.
static vtkCameraInterpolator * New()
Instantiate the class.
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:50
a simple class to control print indentation
Definition: vtkIndent.h:38
abstract base class for most VTK objects
Definition: vtkObject.h:61
record modification and/or execution time
Definition: vtkTimeStamp.h:34
interpolate a tuple of arbitrary size
@ PositionInterpolator
Definition: vtkX3D.h:145
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:270