VTK  9.1.0
vtkInteractorStyleFlight.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Visualization Toolkit
4 Module: vtkInteractorStyleFlight.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=========================================================================*/
15
36#ifndef vtkInteractorStyleFlight_h
37#define vtkInteractorStyleFlight_h
38
39#include "vtkInteractionStyleModule.h" // For export macro
40#include "vtkInteractorStyle.h"
41class vtkCamera;
43
44class CPIDControl;
45
46class VTKINTERACTIONSTYLE_EXPORT vtkInteractorStyleFlight : public vtkInteractorStyle
47{
48public:
51 void PrintSelf(ostream& os, vtkIndent indent) override;
52
57 void JumpTo(double campos[3], double focpos[3]);
58
60
63 vtkSetMacro(MotionStepSize, double);
64 vtkGetMacro(MotionStepSize, double);
66
68
71 vtkSetMacro(MotionAccelerationFactor, double);
72 vtkGetMacro(MotionAccelerationFactor, double);
74
76
79 vtkSetMacro(AngleStepSize, double);
80 vtkGetMacro(AngleStepSize, double);
82
84
87 vtkSetMacro(AngleAccelerationFactor, double);
88 vtkGetMacro(AngleAccelerationFactor, double);
90
92
95 vtkSetMacro(DisableMotion, vtkTypeBool);
96 vtkGetMacro(DisableMotion, vtkTypeBool);
97 vtkBooleanMacro(DisableMotion, vtkTypeBool);
99
101
108 vtkSetMacro(RestoreUpVector, vtkTypeBool);
109 vtkGetMacro(RestoreUpVector, vtkTypeBool);
110 vtkBooleanMacro(RestoreUpVector, vtkTypeBool);
112
113 // Specify "up" (by default {0,0,1} but can be changed)
114 vtkGetVectorMacro(DefaultUpVector, double, 3);
115 vtkSetVectorMacro(DefaultUpVector, double, 3);
116
118
121 void OnMouseMove() override;
122 void OnLeftButtonDown() override;
123 void OnLeftButtonUp() override;
124 void OnMiddleButtonDown() override;
125 void OnMiddleButtonUp() override;
126 void OnRightButtonDown() override;
127 void OnRightButtonUp() override;
129
131
134 void OnChar() override;
135 void OnKeyDown() override;
136 void OnKeyUp() override;
137 void OnTimer() override;
138 //
139 virtual void ForwardFly();
140 virtual void ReverseFly();
141 //
142 virtual void StartForwardFly();
143 virtual void EndForwardFly();
144 virtual void StartReverseFly();
145 virtual void EndReverseFly();
147
148protected:
151
153
159 void FlyByKey(vtkCamera* cam);
160 void GetLRVector(double vector[3], vtkCamera* cam);
161 void MotionAlongVector(double vector[3], double amount, vtkCamera* cam);
164 //
165 //
166 unsigned char KeysDown;
175 double DefaultUpVector[3];
177 double IdealFocalPoint[3];
179 double DeltaYaw;
180 double lYaw;
182 double lPitch;
184
185 CPIDControl* PID_Yaw;
186 CPIDControl* PID_Pitch;
187
188private:
190 void operator=(const vtkInteractorStyleFlight&) = delete;
191};
192
193#endif
a virtual camera for 3D rendering
Definition: vtkCamera.h:155
a simple class to control print indentation
Definition: vtkIndent.h:113
provides flight motion routines
void OnLeftButtonDown() override
Concrete implementation of Mouse event bindings for flight.
unsigned char KeysDown
Routines used internally for computing motion and steering.
double AzimuthStepSize
Routines used internally for computing motion and steering.
double MotionStepSize
Routines used internally for computing motion and steering.
void OnRightButtonDown() override
Concrete implementation of Mouse event bindings for flight.
void OnRightButtonUp() override
Concrete implementation of Mouse event bindings for flight.
void OnMiddleButtonDown() override
Concrete implementation of Mouse event bindings for flight.
~vtkInteractorStyleFlight() override
void MotionAlongVector(double vector[3], double amount, vtkCamera *cam)
Routines used internally for computing motion and steering.
void GetLRVector(double vector[3], vtkCamera *cam)
Routines used internally for computing motion and steering.
void UpdateSteering(vtkCamera *cam)
Routines used internally for computing motion and steering.
double DeltaYaw
Routines used internally for computing motion and steering.
double DeltaPitch
Routines used internally for computing motion and steering.
void SetupMotionVars(vtkCamera *cam)
Routines used internally for computing motion and steering.
double DiagonalLength
Routines used internally for computing motion and steering.
virtual void ReverseFly()
Concrete implementation of Keyboard event bindings for flight.
double MotionUserScale
Routines used internally for computing motion and steering.
double AngleAccelerationFactor
Routines used internally for computing motion and steering.
void OnMouseMove() override
Concrete implementation of Mouse event bindings for flight.
vtkPerspectiveTransform * Transform
Routines used internally for computing motion and steering.
void FlyByMouse(vtkCamera *cam)
Routines used internally for computing motion and steering.
double MotionAccelerationFactor
Routines used internally for computing motion and steering.
void FinishCamera(vtkCamera *cam)
Routines used internally for computing motion and steering.
double lYaw
Routines used internally for computing motion and steering.
void OnKeyUp() override
Concrete implementation of Keyboard event bindings for flight.
void OnMiddleButtonUp() override
Concrete implementation of Mouse event bindings for flight.
static vtkInteractorStyleFlight * New()
virtual void StartForwardFly()
Concrete implementation of Keyboard event bindings for flight.
void OnLeftButtonUp() override
Concrete implementation of Mouse event bindings for flight.
virtual void StartReverseFly()
Concrete implementation of Keyboard event bindings for flight.
void JumpTo(double campos[3], double focpos[3])
Move the Eye/Camera to a specific location (no intermediate steps are taken.
virtual void EndReverseFly()
Concrete implementation of Keyboard event bindings for flight.
virtual void ForwardFly()
Concrete implementation of Keyboard event bindings for flight.
void OnChar() override
Concrete implementation of Keyboard event bindings for flight.
double lPitch
Routines used internally for computing motion and steering.
vtkTypeBool DisableMotion
Routines used internally for computing motion and steering.
vtkTypeBool RestoreUpVector
Routines used internally for computing motion and steering.
void OnKeyDown() override
Concrete implementation of Keyboard event bindings for flight.
void OnTimer() override
Concrete implementation of Keyboard event bindings for flight.
void UpdateMouseSteering(vtkCamera *cam)
Routines used internally for computing motion and steering.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
double AngleStepSize
Routines used internally for computing motion and steering.
virtual void EndForwardFly()
Concrete implementation of Keyboard event bindings for flight.
void FlyByKey(vtkCamera *cam)
Routines used internally for computing motion and steering.
provide event-driven interface to the rendering window (defines trackball mode)
describes a 4x4 matrix transformation
@ vector
Definition: vtkX3D.h:243
int vtkTypeBool
Definition: vtkABI.h:69