VTK
vtkGeoCamera.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkGeoCamera.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 /*-------------------------------------------------------------------------
16  Copyright 2008 Sandia Corporation.
17  Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
18  the U.S. Government retains certain rights in this software.
19 -------------------------------------------------------------------------*/
72 #ifndef vtkGeoCamera_h
73 #define vtkGeoCamera_h
74 
75 #include "vtkGeovisCoreModule.h" // For export macro
76 #include "vtkObject.h"
77 #include "vtkSmartPointer.h" // for SP
78 
79 class vtkCamera;
80 class vtkGeoTerrainNode;
81 class vtkTransform;
82 
83 class VTKGEOVISCORE_EXPORT vtkGeoCamera : public vtkObject
84 {
85 public:
86  static vtkGeoCamera *New();
87  vtkTypeMacro(vtkGeoCamera, vtkObject);
88  void PrintSelf(ostream& os, vtkIndent indent) VTK_OVERRIDE;
89 
91 
94  vtkGetVector3Macro(Position, double);
96 
98 
103  void SetLongitude(double longitude);
104  vtkGetMacro(Longitude,double);
106 
108 
113  void SetLatitude(double latitude);
114  vtkGetMacro(Latitude,double);
116 
118 
124  void SetDistance(double Distance);
125  vtkGetMacro(Distance,double);
127 
129 
138  void SetHeading(double heading);
139  vtkGetMacro(Heading,double);
141 
143 
149  void SetTilt(double tilt);
150  vtkGetMacro(Tilt,double);
152 
157  vtkCamera* GetVTKCamera();
158 
164  void InitializeNodeAnalysis(int rendererSize[2]);
165 
170  double GetNodeCoverage(vtkGeoTerrainNode* node);
171 
173 
178  vtkGetMacro(LockHeading, bool);
179  vtkSetMacro(LockHeading, bool);
180  vtkBooleanMacro(LockHeading, bool);
182 
184 
187  void SetOriginLatitude(double oLat);
188  vtkGetMacro(OriginLatitude, double);
189  void SetOriginLongitude(double oLat);
190  vtkGetMacro(OriginLongitude, double);
192 
194 
198  vtkGetVector3Macro(Origin, double);
199  void SetOrigin( double ox, double oy, double oz ) {
200  this->Origin[0] = ox; this->Origin[1] = oy; this->Origin[2] = oz;
201  this->UpdateVTKCamera();
202  }
204 
205 protected:
206  vtkGeoCamera();
207  ~vtkGeoCamera() VTK_OVERRIDE;
208 
209  void UpdateVTKCamera();
210  void UpdateAngleRanges();
211 
214 
215  // This point is shifted to 0,0,0 to avoid openGL issues.
216  double OriginLatitude;
217  double OriginLongitude;
218  double Origin[3];
219  void ComputeRectilinearOrigin();
220 
221  double Longitude;
222  double Latitude;
223  double Distance;
224  double Heading;
225  double Tilt;
226  bool LockHeading;
227 
228  // Values precomputed to make updating terrain mode efficient.
229  // The vislibility of many terrain nodes is analyzed every render.
230  double ForwardNormal[3];
231  double RightNormal[3];
232  double UpNormal[3];
233  double Aspect[2];
234 
235  // Frustum planes is better than other options for culling spheres.
236  double LeftPlaneNormal[3];
237  double RightPlaneNormal[3];
238  double DownPlaneNormal[3];
239  double UpPlaneNormal[3];
240 
241  double Position[3];
242 
243 private:
244  vtkGeoCamera(const vtkGeoCamera&) VTK_DELETE_FUNCTION;
245  void operator=(const vtkGeoCamera&) VTK_DELETE_FUNCTION;
246 };
247 
248 #endif
abstract base class for most VTK objects
Definition: vtkObject.h:53
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void SetOrigin(double ox, double oy, double oz)
Get the rectilinear cooridinate location of the origin.
Definition: vtkGeoCamera.h:199
describes linear transformations via a 4x4 matrix
Definition: vtkTransform.h:54
Hold a reference to a vtkObjectBase instance.
a simple class to control print indentation
Definition: vtkIndent.h:33
a virtual camera for 3D rendering
Definition: vtkCamera.h:44
vtkSetMacro(IgnoreDriverBugs, bool)
When set known driver bugs are ignored during driver feature detection.
vtkBooleanMacro(IgnoreDriverBugs, bool)
When set known driver bugs are ignored during driver feature detection.
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on...
Geo interface to a camera.
Definition: vtkGeoCamera.h:83
Transform
Definition: ADIOSDefs.h:39