VTK
vtkProp3D.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkProp3D.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 =========================================================================*/
32 #ifndef vtkProp3D_h
33 #define vtkProp3D_h
34 
35 #include "vtkRenderingCoreModule.h" // For export macro
36 #include "vtkProp.h"
37 
38 class vtkRenderer;
39 class vtkTransform;
40 class vtkLinearTransform;
41 
43 {
44 public:
46  void PrintSelf(ostream& os, vtkIndent indent);
47 
49  void ShallowCopy(vtkProp *prop);
50 
52 
53  virtual void SetPosition(double x, double y, double z)
54  {
55  vtkDebugMacro(<< this->GetClassName() << " (" << this <<
56  "): setting Position to (" << x << "," << y << "," <<
57  z << ")");
58  if ((this->Position[0] != x)||
59  (this->Position[1] != y)||
60  (this->Position[2] != z))
61  {
62  this->Position[0] = x;
63  this->Position[1] = y;
64  this->Position[2] = z;
65  this->Modified();
66  this->IsIdentity = 0;
67  }
68  };
70 
71  virtual void SetPosition(double pos[3])
72  { this->SetPosition(pos[0], pos[1], pos[2]); }
73  vtkGetVectorMacro(Position, double, 3);
74  void AddPosition(double deltaPosition[3]);
75  void AddPosition(double deltaX, double deltaY, double deltaZ);
76 
78 
80  virtual void SetOrigin(double x, double y, double z)
81  {
82  vtkDebugMacro(<< this->GetClassName() << " (" << this <<
83  "): setting Origin to (" << x << "," << y << "," <<
84  z << ")");
85  if ((this->Origin[0] != x)||
86  (this->Origin[1] != y)||
87  (this->Origin[2] != z))
88  {
89  this->Origin[0] = x;
90  this->Origin[1] = y;
91  this->Origin[2] = z;
92  this->Modified();
93  this->IsIdentity = 0;
94  }
95  };
96  virtual void SetOrigin(const double pos[3])
97  { this->SetOrigin(pos[0], pos[1], pos[2]); }
98  vtkGetVectorMacro(Origin, double, 3);
100 
102 
105  virtual void SetScale(double x, double y, double z)
106  {
107  vtkDebugMacro(<< this->GetClassName() << " (" << this <<
108  "): setting Scale to (" << x << "," << y << "," <<
109  z << ")");
110  if (this->Scale[0] != x ||
111  this->Scale[1] != y ||
112  this->Scale[2] != z )
113  {
114  this->Scale[0] = x;
115  this->Scale[1] = y;
116  this->Scale[2] = z;
117  this->Modified();
118  this->IsIdentity = 0;
119  }
120  };
121  virtual void SetScale(double scale[3])
122  { this->SetScale(scale[0], scale[1], scale[2]); }
123  vtkGetVectorMacro(Scale, double, 3);
125 
127 
128  void SetScale(double s)
129  { this->SetScale(s, s, s); }
131 
133 
145 
147 
151 
153 
156  virtual void GetMatrix(vtkMatrix4x4 *m);
157  virtual void GetMatrix(double m[16]);
159 
164  void GetBounds(double bounds[6]);
165  virtual double *GetBounds() = 0;
167 
169  double *GetCenter();
170 
172  double *GetXRange();
173 
175  double *GetYRange();
176 
178  double *GetZRange();
179 
181  double GetLength();
182 
188  void RotateX(double);
189 
195  void RotateY(double);
196 
202  void RotateZ(double);
203 
207  void RotateWXYZ(double w, double x, double y, double z);
208 
212  void SetOrientation(double x, double y, double z);
213 
217  void SetOrientation(double orientation[3]);
218 
220 
224  double *GetOrientation();
225  void GetOrientation(double orentation[3]);
227 
230 
234  void AddOrientation(double x, double y, double z);
235 
239  void AddOrientation(double orentation[3]);
240 
250 
254 
256  unsigned long int GetMTime();
257 
259  unsigned long int GetUserTransformMatrixMTime();
260 
262  virtual void ComputeMatrix();
263 
265 
267  {
268  this->ComputeMatrix();
269  return this->Matrix;
270  }
272 
274 
275  vtkGetMacro(IsIdentity, int);
277 
278 protected:
281 
286  double Origin[3];
287  double Position[3];
288  double Orientation[3];
289  double Scale[3];
290  double Center[3];
292  double Bounds[6];
293  vtkProp3D *CachedProp3D; //support the PokeMatrix() method
295 private:
296  vtkProp3D(const vtkProp3D&); // Not implemented.
297  void operator=(const vtkProp3D&); // Not implemented.
298 };
299 
300 #endif
vtkProp3D::~vtkProp3D
~vtkProp3D()
vtkProp3D::AddPosition
void AddPosition(double deltaX, double deltaY, double deltaZ)
vtkgl::z
GLdouble GLdouble z
Definition: vtkgl.h:11754
vtkGetObjectMacro
#define vtkGetObjectMacro(name, type)
Definition: vtkSetGet.h:232
vtkProp3D::SetPosition
virtual void SetPosition(double pos[3])
Definition: vtkProp3D.h:71
vtkProp3D::GetZRange
double * GetZRange()
vtkProp3D::SetUserTransform
void SetUserTransform(vtkLinearTransform *transform)
vtkProp3D::GetMatrix
virtual void GetMatrix(double m[16])
vtkProp3D::PokeMatrix
void PokeMatrix(vtkMatrix4x4 *matrix)
vtkProp3D::IsIdentity
int IsIdentity
Definition: vtkProp3D.h:294
vtkgl::m
const GLfloat * m
Definition: vtkgl.h:18169
vtkProp3D::RotateX
void RotateX(double)
vtkProp3D::SetUserMatrix
void SetUserMatrix(vtkMatrix4x4 *matrix)
vtkProp3D::GetMTime
unsigned long int GetMTime()
vtkProp3D
represents an 3D object for placement in a rendered scene
Definition: vtkProp3D.h:43
vtkProp3D::RotateWXYZ
void RotateWXYZ(double w, double x, double y, double z)
vtkProp3D::GetMatrix
virtual void GetMatrix(vtkMatrix4x4 *m)
vtkTimeStamp
record modification and/or execution time
Definition: vtkTimeStamp.h:35
vtkDebugMacro
#define vtkDebugMacro(x)
Definition: vtkSetGet.h:464
vtkgl::scale
GLenum GLenum GLenum GLenum GLenum scale
Definition: vtkgl.h:15942
vtkgl::s
GLdouble s
Definition: vtkgl.h:11594
vtkTypeMacro
#define vtkTypeMacro(thisClass, superclass)
Definition: vtkSetGet.h:642
vtkProp3D::GetOrientation
double * GetOrientation()
vtkObject::Modified
virtual void Modified()
vtkProp3D::SetPosition
virtual void SetPosition(double x, double y, double z)
Definition: vtkProp3D.h:53
vtkProp3D::SetScale
virtual void SetScale(double scale[3])
Definition: vtkProp3D.h:121
vtkProp3D::CachedProp3D
vtkProp3D * CachedProp3D
Definition: vtkProp3D.h:293
vtkgl::x
GLint GLint GLint GLint GLint x
Definition: vtkgl.h:11318
vtkTransform
describes linear transformations via a 4x4 matrix
Definition: vtkTransform.h:60
vtkGetVectorMacro
#define vtkGetVectorMacro(name, type, count)
Definition: vtkSetGet.h:424
vtkProp3D::SetOrientation
void SetOrientation(double x, double y, double z)
vtkProp.h
vtkProp3D::vtkProp3D
vtkProp3D()
vtkProp3D::GetYRange
double * GetYRange()
vtkProp3D::AddOrientation
void AddOrientation(double orentation[3])
vtkLinearTransform
abstract superclass for linear transformations
Definition: vtkLinearTransform.h:34
vtkProp3D::GetCenter
double * GetCenter()
vtkProp3D::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent)
vtkProp3D::GetOrientationWXYZ
double * GetOrientationWXYZ()
vtkObjectBase::GetClassName
const char * GetClassName() const
vtkProp3D::InitPathTraversal
void InitPathTraversal()
vtkProp3D::Transform
vtkTransform * Transform
Definition: vtkProp3D.h:291
vtkProp3D::GetUserTransformMatrixMTime
unsigned long int GetUserTransformMatrixMTime()
vtkProp3D::SetOrigin
virtual void SetOrigin(double x, double y, double z)
Definition: vtkProp3D.h:80
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
vtkProp3D::GetBounds
void GetBounds(double bounds[6])
vtkProp3D::ComputeMatrix
virtual void ComputeMatrix()
vtkProp3D::GetUserMatrix
vtkMatrix4x4 * GetUserMatrix()
vtkProp3D::UserMatrix
vtkMatrix4x4 * UserMatrix
Definition: vtkProp3D.h:283
vtkProp3D::GetOrientation
void GetOrientation(double orentation[3])
vtkGetMacro
#define vtkGetMacro(name, type)
Definition: vtkSetGet.h:93
vtkProp3D::SetScale
virtual void SetScale(double x, double y, double z)
Definition: vtkProp3D.h:105
vtkProp3D::RotateZ
void RotateZ(double)
vtkProp3D::SetOrientation
void SetOrientation(double orientation[3])
vtkProp3D::AddOrientation
void AddOrientation(double x, double y, double z)
vtkProp3D::GetMatrix
vtkMatrix4x4 * GetMatrix()
Definition: vtkProp3D.h:266
vtkProp
abstract superclass for all actors, volumes and annotations
Definition: vtkProp.h:50
vtkProp3D::RotateY
void RotateY(double)
vtkProp3D::ShallowCopy
void ShallowCopy(vtkProp *prop)
vtkX3D::orientation
@ orientation
Definition: vtkX3D.h:262
vtkgl::y
GLint GLint GLint GLint GLint GLint y
Definition: vtkgl.h:11318
vtkProp3D::GetLength
double GetLength()
vtkRenderer
abstract specification for renderers
Definition: vtkRenderer.h:64
vtkgl::matrix
GLuint GLenum matrix
Definition: vtkgl.h:16451
vtkProp3D::Matrix
vtkMatrix4x4 * Matrix
Definition: vtkProp3D.h:284
vtkProp3D::AddPosition
void AddPosition(double deltaPosition[3])
vtkProp3D::SetOrigin
virtual void SetOrigin(const double pos[3])
Definition: vtkProp3D.h:96
VTKRENDERINGCORE_EXPORT
#define VTKRENDERINGCORE_EXPORT
Definition: vtkRenderingCoreModule.h:15
vtkgl::w
GLubyte GLubyte GLubyte GLubyte w
Definition: vtkgl.h:12054
vtkProp3D::UserTransform
vtkLinearTransform * UserTransform
Definition: vtkProp3D.h:282
vtkgl::transform
GLuint GLenum GLenum transform
Definition: vtkgl.h:16451
vtkProp3D::MatrixMTime
vtkTimeStamp MatrixMTime
Definition: vtkProp3D.h:285
vtkProp3D::GetXRange
double * GetXRange()
vtkProp3D::SetScale
void SetScale(double s)
Definition: vtkProp3D.h:128
vtkProp3D::GetBounds
virtual double * GetBounds()=0