Rendering/vtkInteractorStyleFlight.h
Go to the documentation of this file.00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00041 #ifndef __vtkInteractorStyleFlight_h
00042 #define __vtkInteractorStyleFlight_h
00043 
00044 #include "vtkInteractorStyle.h"
00045 class vtkCamera;
00046 class vtkPerspectiveTransform;
00047 
00048 class CPIDControl;
00049 
00050 
00051 class VTK_RENDERING_EXPORT vtkInteractorStyleFlight : public vtkInteractorStyle
00052 {
00053 public:
00054   static vtkInteractorStyleFlight *New();
00055   vtkTypeRevisionMacro(vtkInteractorStyleFlight,vtkInteractorStyle);
00056   void PrintSelf(ostream& os, vtkIndent indent);
00057 
00060   void JumpTo(double campos[3], double focpos[3]);
00061 
00063 
00064   vtkSetMacro(MotionStepSize,double);
00065   vtkGetMacro(MotionStepSize,double);
00067 
00069 
00070   vtkSetMacro(MotionAccelerationFactor,double);
00071   vtkGetMacro(MotionAccelerationFactor,double);
00073 
00075 
00076   vtkSetMacro(AngleStepSize,double);
00077   vtkGetMacro(AngleStepSize,double);
00079 
00081 
00082   vtkSetMacro(AngleAccelerationFactor,double);
00083   vtkGetMacro(AngleAccelerationFactor,double);
00085 
00087 
00088   vtkSetMacro(DisableMotion,int);
00089   vtkGetMacro(DisableMotion,int);
00090   vtkBooleanMacro(DisableMotion,int);
00092 
00094 
00099   vtkSetMacro(RestoreUpVector,int);
00100   vtkGetMacro(RestoreUpVector,int);
00101   vtkBooleanMacro(RestoreUpVector,int);
00103 
00104   
00105   vtkGetVectorMacro(DefaultUpVector,double,3);
00106   vtkSetVectorMacro(DefaultUpVector,double,3);
00107 
00109 
00110   virtual void OnMouseMove();
00111   virtual void OnLeftButtonDown();
00112   virtual void OnLeftButtonUp();
00113   virtual void OnMiddleButtonDown();
00114   virtual void OnMiddleButtonUp();
00115   virtual void OnRightButtonDown();
00116   virtual void OnRightButtonUp();
00118 
00120 
00121   virtual void OnChar();
00122   virtual void OnKeyDown();
00123   virtual void OnKeyUp();
00124   virtual void OnTimer();
00125   
00126   virtual void ForwardFly();
00127   virtual void ReverseFly();
00128   
00129   virtual void StartForwardFly();
00130   virtual void EndForwardFly();
00131   virtual void StartReverseFly();
00132   virtual void EndReverseFly();
00134 
00135 protected:
00136    vtkInteractorStyleFlight();
00137   ~vtkInteractorStyleFlight();
00138 
00140 
00141   void UpdateSteering(vtkCamera *cam);
00142   void UpdateMouseSteering(vtkCamera *cam);
00143   void FlyByMouse(vtkCamera* cam);
00144   void FlyByKey(vtkCamera* cam);
00145   void GetLRVector(double vector[3], vtkCamera* cam);
00146   void MotionAlongVector(double vector[3], double amount, vtkCamera* cam);
00147   void SetupMotionVars(vtkCamera *cam);
00148   void FinishCamera(vtkCamera* cam);
00149   
00150   
00151   unsigned char KeysDown;
00152   int           DisableMotion;
00153   int           RestoreUpVector;
00154   double        DiagonalLength;
00155   double        MotionStepSize;
00156   double        MotionUserScale;
00157   double        MotionAccelerationFactor;
00158   double        AngleStepSize;
00159   double        AngleAccelerationFactor;
00160   double        DefaultUpVector[3];
00161   double        AzimuthStepSize;
00162   double        IdealFocalPoint[3];
00163   vtkPerspectiveTransform *Transform;
00164   double        DeltaYaw;
00165   double        lYaw;
00166   double        DeltaPitch;
00167   double        lPitch;
00169 
00170   CPIDControl  *PID_Yaw;
00171   CPIDControl  *PID_Pitch;
00172 
00173 private:
00174   vtkInteractorStyleFlight(const vtkInteractorStyleFlight&);  
00175   void operator=(const vtkInteractorStyleFlight&);  
00176 };
00177 
00178 #endif