VTK
vtkCamera.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkCamera.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 =========================================================================*/
34 #ifndef vtkCamera_h
35 #define vtkCamera_h
36 
37 #include "vtkRenderingCoreModule.h" // For export macro
38 #include "vtkObject.h"
39 
41 class vtkMatrix4x4;
43 class vtkRenderer;
44 class vtkTransform;
45 class vtkCallbackCommand;
46 class vtkCameraCallbackCommand;
47 
49 {
50 public:
52  void PrintSelf(ostream& os, vtkIndent indent);
53 
57  static vtkCamera *New();
58 
60 
62  void SetPosition(double x, double y, double z);
63  void SetPosition(const double a[3]) {
64  this->SetPosition(a[0], a[1], a[2]); };
65  vtkGetVector3Macro(Position, double);
67 
69 
71  void SetFocalPoint(double x, double y, double z);
72  void SetFocalPoint(const double a[3]) {
73  this->SetFocalPoint(a[0], a[1], a[2]);};
74  vtkGetVector3Macro(FocalPoint, double);
76 
78 
80  void SetViewUp(double vx, double vy, double vz);
81  void SetViewUp(const double a[3]) {
82  this->SetViewUp(a[0], a[1], a[2]); }
83  vtkGetVector3Macro(ViewUp, double);
85 
90 
93  void SetDistance(double);
94 
96 
98  vtkGetMacro(Distance, double);
100 
102 
105  vtkGetVector3Macro(DirectionOfProjection, double);
107 
112  void Dolly(double value);
113 
115 
116  void SetRoll(double angle);
117  double GetRoll();
119 
122  void Roll(double angle);
123 
128  void Azimuth(double angle);
129 
135  void Yaw(double angle);
136 
141  void Elevation(double angle);
142 
146  void Pitch(double angle);
147 
149 
152  void SetParallelProjection(int flag);
153  vtkGetMacro(ParallelProjection, int);
154  vtkBooleanMacro(ParallelProjection, int);
156 
158 
165  vtkGetMacro(UseHorizontalViewAngle, int);
166  vtkBooleanMacro(UseHorizontalViewAngle, int);
168 
170 
177  void SetViewAngle(double angle);
178  vtkGetMacro(ViewAngle, double);
180 
182 
187  void SetParallelScale(double scale);
188  vtkGetMacro(ParallelScale ,double);
190 
195  void Zoom(double factor);
196 
198 
207  void SetClippingRange(double dNear, double dFar);
208  void SetClippingRange(const double a[2])
209  { this->SetClippingRange(a[0], a[1]); }
210  vtkGetVector2Macro(ClippingRange, double);
212 
214 
217  void SetThickness(double);
218  vtkGetMacro(Thickness, double);
220 
222 
227  void SetWindowCenter(double x, double y);
228  vtkGetVector2Macro(WindowCenter, double);
230 
239  void SetObliqueAngles(double alpha, double beta);
240 
245 
247 
250  vtkGetVector3Macro(ViewPlaneNormal, double);
252 
254 
258  void SetViewShear(double dxdz, double dydz, double center);
259  void SetViewShear(double d[3]);
260  vtkGetVector3Macro(ViewShear, double);
262 
264 
266  vtkSetMacro(EyeAngle, double);
267  vtkGetMacro(EyeAngle, double);
269 
271 
275  vtkSetMacro(FocalDisk, double);
276  vtkGetMacro(FocalDisk, double);
278 
280 
284  vtkSetMacro(UseOffAxisProjection, int);
285  vtkGetMacro(UseOffAxisProjection, int);
286  vtkBooleanMacro(UseOffAxisProjection, int);
288 
290 
292  vtkSetVector3Macro(ScreenBottomLeft, double);
293  vtkGetVector3Macro(ScreenBottomLeft, double);
295 
297 
299  vtkSetVector3Macro(ScreenBottomRight, double);
300  vtkGetVector3Macro(ScreenBottomRight, double);
302 
304 
306  vtkSetVector3Macro(ScreenTopRight, double);
307  vtkGetVector3Macro(ScreenTopRight, double);
309 
311 
313  vtkSetMacro(EyeSeparation, double);
314  vtkGetMacro(EyeSeparation, double);
316 
318 
322  void SetEyePosition(double eyePosition[3]);
323  void GetEyePosition(double eyePosition[3]);
325 
328  void GetEyePlaneNormal(double normal[3]);
329 
331 
335  vtkGetObjectMacro(EyeTransformMatrix, vtkMatrix4x4);
337 
341  void SetEyeTransformMatrix(const double elements[16]);
342 
344 
348  vtkGetObjectMacro(ModelTransformMatrix, vtkMatrix4x4);
350 
354  void SetModelTransformMatrix(const double elements[16]);
355 
358 
361 
368 
375 
377 
384  double nearz,
385  double farz);
387 
389 
396  double nearz,
397  double farz);
399 
401 
409  double nearz,
410  double farz);
412 
418 
420 
427 
429 
436 
440  virtual void Render(vtkRenderer *) {}
441 
444  unsigned long GetViewingRaysMTime();
445 
449 
457  virtual void GetFrustumPlanes(double aspect, double planes[24]);
458 
460 
461  double *GetOrientation();
464 
468 
473 
475  virtual void UpdateViewport(vtkRenderer *vtkNotUsed(ren)) {}
476 
478 
479  vtkSetMacro(LeftEye, int);
480  vtkGetMacro(LeftEye, int);
482 
486 
490 
492 
495  vtkSetMacro(FreezeFocalPoint, bool);
496  vtkGetMacro(FreezeFocalPoint, bool);
498 
499 protected:
502 
504 
506  virtual void ComputeViewTransform();
508 
510 
511  virtual void ComputeProjectionTransform(double aspect,
512  double nearz,
513  double farz);
515 
517 
519  double nearz,
520  double farz);
522 
524 
525 
529 
532 
535 
539 
540  double WindowCenter[2];
541  double ObliqueAngles[2];
542  double FocalPoint[3];
543  double Position[3];
544  double ViewUp[3];
545  double ViewAngle;
546  double ClippingRange[2];
547  double EyeAngle;
550  int Stereo;
551  int LeftEye;
552  double Thickness;
553  double Distance;
554  double DirectionOfProjection[3];
555  double ViewPlaneNormal[3];
556  double ViewShear[3];
558 
560 
561  double ScreenBottomLeft[3];
562  double ScreenBottomRight[3];
563  double ScreenTopRight[3];
564 
566 
569 
571 
573 
576 
581 
583 
584  double FocalDisk;
585  //BTX
586  vtkCameraCallbackCommand *UserViewTransformCallbackCommand;
587  friend class vtkCameraCallbackCommand;
588  //ETX
589 
590  // ViewingRaysMtime keeps track of camera modifications which will
591  // change the calculation of viewing rays for the camera before it is
592  // transformed to the camera's location and orientation.
595 
596 private:
597  vtkCamera(const vtkCamera&); // Not implemented.
598  void operator=(const vtkCamera&); // Not implemented.
599 };
600 
601 #endif
vtkgl::z
GLdouble GLdouble z
Definition: vtkgl.h:11754
vtkCamera::ViewTransform
vtkTransform * ViewTransform
Definition: vtkCamera.h:577
vtkGetObjectMacro
#define vtkGetObjectMacro(name, type)
Definition: vtkSetGet.h:232
vtkCamera::DeepCopy
void DeepCopy(vtkCamera *source)
vtkCamera::CameraLightTransform
vtkTransform * CameraLightTransform
Definition: vtkCamera.h:580
vtkHomogeneousTransform
superclass for homogeneous transformations
Definition: vtkHomogeneousTransform.h:34
vtkCamera::GetViewTransformMatrix
virtual vtkMatrix4x4 * GetViewTransformMatrix()
vtkGetVector2Macro
#define vtkGetVector2Macro(name, type)
Definition: vtkSetGet.h:270
vtkSetVector3Macro
#define vtkSetVector3Macro(name, type)
Definition: vtkSetGet.h:287
vtkCamera::PartialCopy
void PartialCopy(vtkCamera *source)
vtkCamera::GetModelViewTransformMatrix
virtual vtkMatrix4x4 * GetModelViewTransformMatrix()
vtkCamera::GetEyePosition
void GetEyePosition(double eyePosition[3])
vtkCamera::OrthogonalizeViewUp
void OrthogonalizeViewUp()
vtkCamera::ComputeViewPlaneNormal
void ComputeViewPlaneNormal()
vtkTimeStamp
record modification and/or execution time
Definition: vtkTimeStamp.h:35
vtkCamera::SetDistance
void SetDistance(double)
vtkgl::scale
GLenum GLenum GLenum GLenum GLenum scale
Definition: vtkgl.h:15942
vtkCamera::New
static vtkCamera * New()
vtkTypeMacro
#define vtkTypeMacro(thisClass, superclass)
Definition: vtkSetGet.h:642
vtkCamera::ViewingRaysMTime
vtkTimeStamp ViewingRaysMTime
Definition: vtkCamera.h:593
vtkCamera::GetProjectionTransformMatrix
virtual vtkMatrix4x4 * GetProjectionTransformMatrix(double aspect, double nearz, double farz)
vtkCamera::SetViewUp
void SetViewUp(const double a[3])
Definition: vtkCamera.h:81
vtkObject
abstract base class for most VTK objects
Definition: vtkObject.h:62
vtkgl::x
GLint GLint GLint GLint GLint x
Definition: vtkgl.h:11318
vtkCamera::LeftEye
int LeftEye
Definition: vtkCamera.h:551
vtkCamera::SetParallelProjection
void SetParallelProjection(int flag)
vtkX3D::center
@ center
Definition: vtkX3D.h:230
vtkCamera::SetUseHorizontalViewAngle
void SetUseHorizontalViewAngle(int flag)
vtkCamera::SetClippingRange
void SetClippingRange(const double a[2])
Definition: vtkCamera.h:208
vtkCamera::UseHorizontalViewAngle
int UseHorizontalViewAngle
Definition: vtkCamera.h:557
vtkTransform
describes linear transformations via a 4x4 matrix
Definition: vtkTransform.h:60
vtkCamera::SetObliqueAngles
void SetObliqueAngles(double alpha, double beta)
vtkCamera::Stereo
int Stereo
Definition: vtkCamera.h:550
vtkCamera::Transform
vtkPerspectiveTransform * Transform
Definition: vtkCamera.h:579
vtkCamera::GetCameraLightTransformMatrix
vtkMatrix4x4 * GetCameraLightTransformMatrix()
vtkCamera::SetFocalPoint
void SetFocalPoint(double x, double y, double z)
vtkCamera::EyeAngle
double EyeAngle
Definition: vtkCamera.h:547
source
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
Definition: vtkBoostGraphAdapter.h:821
vtkCamera::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent)
vtkCamera::GetViewTransformObject
virtual vtkTransform * GetViewTransformObject()
vtkNotUsed
#define vtkNotUsed(x)
Definition: vtkSetGet.h:557
vtkCamera::ViewingRaysModified
void ViewingRaysModified()
vtkGetVector3Macro
#define vtkGetVector3Macro(name, type)
Definition: vtkSetGet.h:304
vtkCamera::~vtkCamera
~vtkCamera()
vtkgl::value
GLsizei const GLfloat * value
Definition: vtkgl.h:12021
vtkCamera::GetRoll
double GetRoll()
vtkCamera::ComputeCameraLightTransform
void ComputeCameraLightTransform()
vtkCamera::ComputeWorldToScreenMatrix
void ComputeWorldToScreenMatrix()
vtkCamera::SetEyePosition
void SetEyePosition(double eyePosition[3])
vtkCamera::GetProjectionTransformObject
virtual vtkPerspectiveTransform * GetProjectionTransformObject(double aspect, double nearz, double farz)
vtkCamera::UseOffAxisProjection
int UseOffAxisProjection
Definition: vtkCamera.h:559
vtkCamera::ComputeModelViewMatrix
void ComputeModelViewMatrix()
vtkCamera::SetParallelScale
void SetParallelScale(double scale)
vtkCamera::GetModelViewTransformObject
virtual vtkTransform * GetModelViewTransformObject()
vtkCamera::GetOrientationWXYZ
double * GetOrientationWXYZ()
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:39
vtkMatrix4x4
represent and manipulate 4x4 transformation matrices
Definition: vtkMatrix4x4.h:39
vtkRenderingCoreModule.h
vtkCamera::ModelTransformMatrix
vtkMatrix4x4 * ModelTransformMatrix
Definition: vtkCamera.h:572
vtkCamera::SetViewAngle
void SetViewAngle(double angle)
vtkCamera::GetViewingRaysMTime
unsigned long GetViewingRaysMTime()
vtkCamera::GetProjectionTransformMatrix
virtual vtkMatrix4x4 * GetProjectionTransformMatrix(vtkRenderer *ren)
vtkCamera
a virtual camera for 3D rendering
Definition: vtkCamera.h:49
vtkCamera::SetPosition
void SetPosition(const double a[3])
Definition: vtkCamera.h:63
vtkCamera::GetFrustumPlanes
virtual void GetFrustumPlanes(double aspect, double planes[24])
vtkCamera::WorldToScreenMatrixMTime
vtkTimeStamp WorldToScreenMatrixMTime
Definition: vtkCamera.h:568
vtkCamera::SetPosition
void SetPosition(double x, double y, double z)
vtkCamera::ComputeCompositeProjectionTransform
void ComputeCompositeProjectionTransform(double aspect, double nearz, double farz)
vtkCamera::SetEyeTransformMatrix
void SetEyeTransformMatrix(vtkMatrix4x4 *matrix)
vtkCamera::ComputeProjectionTransform
virtual void ComputeProjectionTransform(double aspect, double nearz, double farz)
vtkCamera::ShallowCopy
void ShallowCopy(vtkCamera *source)
vtkGetMacro
#define vtkGetMacro(name, type)
Definition: vtkSetGet.h:93
vtkCamera::ParallelProjection
int ParallelProjection
Definition: vtkCamera.h:548
vtkCamera::UpdateViewport
virtual void UpdateViewport(vtkRenderer *vtkNotUsed(ren))
Definition: vtkCamera.h:475
vtkgl::a
GLboolean GLboolean GLboolean GLboolean a
Definition: vtkgl.h:12312
vtkCamera::SetUserViewTransform
void SetUserViewTransform(vtkHomogeneousTransform *transform)
vtkCamera::SetViewShear
void SetViewShear(double dxdz, double dydz, double center)
vtkCamera::Thickness
double Thickness
Definition: vtkCamera.h:552
vtkPerspectiveTransform
describes a 4x4 matrix transformation
Definition: vtkPerspectiveTransform.h:56
vtkObject.h
vtkCamera::SetEyeTransformMatrix
void SetEyeTransformMatrix(const double elements[16])
vtkCamera::vtkCamera
vtkCamera()
vtkBooleanMacro
vtkBooleanMacro(IgnoreDriverBugs, bool)
vtkSetMacro
vtkSetMacro(IgnoreDriverBugs, bool)
vtkgl::alpha
GLclampf GLclampf GLclampf alpha
Definition: vtkgl.h:11313
vtkCamera::FreezeFocalPoint
bool FreezeFocalPoint
Definition: vtkCamera.h:594
vtkgl::t
GLdouble GLdouble t
Definition: vtkgl.h:11602
vtkCamera::GetCompositeProjectionTransformMatrix
virtual vtkMatrix4x4 * GetCompositeProjectionTransformMatrix(double aspect, double nearz, double farz)
vtkCamera::SetThickness
void SetThickness(double)
vtkCamera::UserTransform
vtkHomogeneousTransform * UserTransform
Definition: vtkCamera.h:574
vtkgl::y
GLint GLint GLint GLint GLint GLint y
Definition: vtkgl.h:11318
vtkCamera::FocalDisk
double FocalDisk
Definition: vtkCamera.h:584
vtkCamera::EyeSeparation
double EyeSeparation
Definition: vtkCamera.h:565
vtkCamera::Render
virtual void Render(vtkRenderer *)
Definition: vtkCamera.h:440
vtkCamera::ComputeOffAxisProjectionFrustum
void ComputeOffAxisProjectionFrustum()
vtkCamera::SetModelTransformMatrix
void SetModelTransformMatrix(const double elements[16])
vtkRenderer
abstract specification for renderers
Definition: vtkRenderer.h:64
vtkCamera::Zoom
void Zoom(double factor)
vtkgl::matrix
GLuint GLenum matrix
Definition: vtkgl.h:16451
vtkCamera::ProjectionTransform
vtkPerspectiveTransform * ProjectionTransform
Definition: vtkCamera.h:578
vtkCamera::SetRoll
void SetRoll(double angle)
vtkCamera::ParallelScale
double ParallelScale
Definition: vtkCamera.h:549
vtkCallbackCommand
supports function callbacks
Definition: vtkCallbackCommand.h:50
vtkCamera::SetViewShear
void SetViewShear(double d[3])
vtkCamera::SetUserTransform
void SetUserTransform(vtkHomogeneousTransform *transform)
vtkgl::angle
GLfloat angle
Definition: vtkgl.h:18174
vtkCamera::SetWindowCenter
void SetWindowCenter(double x, double y)
vtkCamera::SetClippingRange
void SetClippingRange(double dNear, double dFar)
vtkCamera::UserViewTransformCallbackCommand
vtkCameraCallbackCommand * UserViewTransformCallbackCommand
Definition: vtkCamera.h:586
vtkCamera::Roll
void Roll(double angle)
vtkCamera::SetFocalPoint
void SetFocalPoint(const double a[3])
Definition: vtkCamera.h:72
vtkCamera::GetOrientation
double * GetOrientation()
VTKRENDERINGCORE_EXPORT
#define VTKRENDERINGCORE_EXPORT
Definition: vtkRenderingCoreModule.h:15
vtkCamera::ComputeDistance
void ComputeDistance()
vtkCamera::Pitch
void Pitch(double angle)
vtkCamera::Yaw
void Yaw(double angle)
vtkCamera::Elevation
void Elevation(double angle)
vtkCamera::Dolly
void Dolly(double value)
vtkgl::transform
GLuint GLenum GLenum transform
Definition: vtkgl.h:16451
vtkCamera::SetViewUp
void SetViewUp(double vx, double vy, double vz)
vtkCamera::Azimuth
void Azimuth(double angle)
vtkCamera::Distance
double Distance
Definition: vtkCamera.h:553
vtkCamera::UserViewTransform
vtkHomogeneousTransform * UserViewTransform
Definition: vtkCamera.h:575
vtkCamera::ApplyTransform
void ApplyTransform(vtkTransform *t)
vtkCamera::SetModelTransformMatrix
void SetModelTransformMatrix(vtkMatrix4x4 *matrix)
vtkCamera::ModelViewTransform
vtkTransform * ModelViewTransform
Definition: vtkCamera.h:582
vtkCamera::EyeTransformMatrix
vtkMatrix4x4 * EyeTransformMatrix
Definition: vtkCamera.h:570
vtkCamera::GetEyePlaneNormal
void GetEyePlaneNormal(double normal[3])
vtkCamera::ViewAngle
double ViewAngle
Definition: vtkCamera.h:545
vtkCamera::ComputeViewTransform
virtual void ComputeViewTransform()
vtkCamera::WorldToScreenMatrix
vtkMatrix4x4 * WorldToScreenMatrix
Definition: vtkCamera.h:567