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 
46 VTK_ABI_NAMESPACE_BEGIN
47 class vtkCamera;
48 class vtkCameraList;
50 class vtkCameraList;
51 
52 class VTKRENDERINGCORE_EXPORT vtkCameraInterpolator : public vtkObject
53 {
54 public:
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 
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 
201  vtkMTimeType GetMTime() override;
202 
203 protected:
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 
226 private:
228  void operator=(const vtkCameraInterpolator&) = delete;
229 };
230 
231 VTK_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.
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:41
a simple class to control print indentation
Definition: vtkIndent.h:29
abstract base class for most VTK objects
Definition: vtkObject.h:52
record modification and/or execution time
Definition: vtkTimeStamp.h:25
interpolate a tuple of arbitrary size
@ PositionInterpolator
Definition: vtkX3D.h:145
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:270