VTK
vtkGeneralTransform.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkGeneralTransform.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 =========================================================================*/
31 #ifndef vtkGeneralTransform_h
32 #define vtkGeneralTransform_h
33 
34 #include "vtkCommonTransformsModule.h" // For export macro
35 #include "vtkAbstractTransform.h"
36 
37 #include "vtkMatrix4x4.h" // Needed for inline methods
38 
40 {
41 public:
43 
45  void PrintSelf(ostream& os, vtkIndent indent);
46 
50  void Identity() { this->Concatenation->Identity(); this->Modified(); };
51 
55  void Inverse() { this->Concatenation->Inverse(); this->Modified(); };
56 
58 
60  void Translate(double x, double y, double z) {
61  this->Concatenation->Translate(x,y,z); };
62  void Translate(const double x[3]) { this->Translate(x[0], x[1], x[2]); };
63  void Translate(const float x[3]) { this->Translate(x[0], x[1], x[2]); };
65 
67 
71  void RotateWXYZ(double angle, double x, double y, double z) {
72  this->Concatenation->Rotate(angle,x,y,z); };
73  void RotateWXYZ(double angle, const double axis[3]) {
74  this->RotateWXYZ(angle, axis[0], axis[1], axis[2]); };
75  void RotateWXYZ(double angle, const float axis[3]) {
76  this->RotateWXYZ(angle, axis[0], axis[1], axis[2]); };
78 
80 
83  void RotateX(double angle) { this->RotateWXYZ(angle, 1, 0, 0); };
84  void RotateY(double angle) { this->RotateWXYZ(angle, 0, 1, 0); };
85  void RotateZ(double angle) { this->RotateWXYZ(angle, 0, 0, 1); };
87 
89 
92  void Scale(double x, double y, double z) {
93  this->Concatenation->Scale(x,y,z); };
94  void Scale(const double s[3]) { this->Scale(s[0], s[1], s[2]); };
95  void Scale(const float s[3]) { this->Scale(s[0], s[1], s[2]); };
97 
99 
102  this->Concatenate(*matrix->Element); };
103  void Concatenate(const double elements[16]) {
104  this->Concatenation->Concatenate(elements); };
106 
113 
115 
120  void PreMultiply() {
121  if (this->Concatenation->GetPreMultiplyFlag()) { return; }
122  this->Concatenation->SetPreMultiplyFlag(1); this->Modified(); };
124 
126 
131  void PostMultiply() {
132  if (!this->Concatenation->GetPreMultiplyFlag()) { return; }
133  this->Concatenation->SetPreMultiplyFlag(0); this->Modified(); };
135 
137 
140  return this->Concatenation->GetNumberOfTransforms() +
141  (this->Input == NULL ? 0 : 1); };
143 
145 
151  if (this->Input == NULL) {
152  return this->Concatenation->GetTransform(i); }
153  else if (i < this->Concatenation->GetNumberOfPreTransforms()) {
154  return this->Concatenation->GetTransform(i); }
155  else if (i > this->Concatenation->GetNumberOfPreTransforms()) {
156  return this->Concatenation->GetTransform(i-1); }
157  else if (this->GetInverseFlag()) {
158  return this->Input->GetInverse(); }
159  else {
160  return this->Input; } };
162 
164 
171  vtkAbstractTransform *GetInput() { return this->Input; };
173 
175 
180  return this->Concatenation->GetInverseFlag(); };
182 
184 
185  void Push() { if (this->Stack == NULL) {
186  this->Stack = vtkTransformConcatenationStack::New(); }
187  this->Stack->Push(&this->Concatenation);
188  this->Modified(); };
190 
192 
194  void Pop() { if (this->Stack == NULL) { return; }
195  this->Stack->Pop(&this->Concatenation);
196  this->Modified(); };
198 
200 
202  void InternalTransformPoint(const float in[3], float out[3]);
203  void InternalTransformPoint(const double in[3], double out[3]);
205 
207 
209  void InternalTransformDerivative(const float in[3], float out[3],
210  float derivative[3][3]);
211  void InternalTransformDerivative(const double in[3], double out[3],
212  double derivative[3][3]);
214 
222 
225 
227  unsigned long GetMTime();
228 
229 protected:
232 
235 
239 private:
240  vtkGeneralTransform(const vtkGeneralTransform&); // Not implemented.
241  void operator=(const vtkGeneralTransform&); // Not implemented.
242 };
243 
244 
245 #endif
246 
247 
248 
249 
250 
vtkgl::z
GLdouble GLdouble z
Definition: vtkgl.h:11754
vtkGeneralTransform::Scale
void Scale(double x, double y, double z)
Definition: vtkGeneralTransform.h:92
vtkGeneralTransform::MakeTransform
vtkAbstractTransform * MakeTransform()
vtkGeneralTransform::RotateWXYZ
void RotateWXYZ(double angle, double x, double y, double z)
Definition: vtkGeneralTransform.h:71
vtkAbstractTransform
superclass for all geometric transformations
Definition: vtkAbstractTransform.h:50
vtkGeneralTransform::Identity
void Identity()
Definition: vtkGeneralTransform.h:50
vtkTransformConcatenationStack
Definition: vtkAbstractTransform.h:395
vtkAbstractTransform.h
vtkGeneralTransform::Translate
void Translate(const double x[3])
Definition: vtkGeneralTransform.h:62
vtkGeneralTransform::InternalTransformDerivative
void InternalTransformDerivative(const float in[3], float out[3], float derivative[3][3])
vtkgl::s
GLdouble s
Definition: vtkgl.h:11594
vtkTypeMacro
#define vtkTypeMacro(thisClass, superclass)
Definition: vtkSetGet.h:642
vtkObject::Modified
virtual void Modified()
vtkGeneralTransform::Translate
void Translate(const float x[3])
Definition: vtkGeneralTransform.h:63
vtkGeneralTransform::GetConcatenatedTransform
vtkAbstractTransform * GetConcatenatedTransform(int i)
Definition: vtkGeneralTransform.h:150
vtkGeneralTransform::vtkGeneralTransform
vtkGeneralTransform()
vtkgl::x
GLint GLint GLint GLint GLint x
Definition: vtkgl.h:11318
vtkGeneralTransform::Input
vtkAbstractTransform * Input
Definition: vtkGeneralTransform.h:236
vtkgl::input
GLenum GLenum GLenum input
Definition: vtkgl.h:15941
vtkgl::in
GLuint in
Definition: vtkgl.h:16905
vtkGeneralTransform::InternalDeepCopy
void InternalDeepCopy(vtkAbstractTransform *t)
vtkAbstractTransform::GetInverse
vtkAbstractTransform * GetInverse()
vtkGeneralTransform::GetInput
vtkAbstractTransform * GetInput()
Definition: vtkGeneralTransform.h:171
vtkCommonTransformsModule.h
VTKCOMMONTRANSFORMS_EXPORT
#define VTKCOMMONTRANSFORMS_EXPORT
Definition: vtkCommonTransformsModule.h:15
vtkGeneralTransform::RotateX
void RotateX(double angle)
Definition: vtkGeneralTransform.h:83
vtkGeneralTransform::PreMultiply
void PreMultiply()
Definition: vtkGeneralTransform.h:120
vtkGeneralTransform::Stack
vtkTransformConcatenationStack * Stack
Definition: vtkGeneralTransform.h:238
vtkGeneralTransform::Translate
void Translate(double x, double y, double z)
Definition: vtkGeneralTransform.h:60
vtkGeneralTransform::~vtkGeneralTransform
~vtkGeneralTransform()
vtkMatrix4x4.h
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:39
vtkMatrix4x4
represent and manipulate 4x4 transformation matrices
Definition: vtkMatrix4x4.h:39
vtkGeneralTransform::Pop
void Pop()
Definition: vtkGeneralTransform.h:194
vtkGeneralTransform
allows operations on any transforms
Definition: vtkGeneralTransform.h:40
vtkGeneralTransform::InternalTransformPoint
void InternalTransformPoint(const float in[3], float out[3])
vtkGeneralTransform::RotateY
void RotateY(double angle)
Definition: vtkGeneralTransform.h:84
vtkGeneralTransform::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent)
vtkTransformConcatenationStack::New
static vtkTransformConcatenationStack * New()
Definition: vtkAbstractTransform.h:397
vtkGeneralTransform::RotateWXYZ
void RotateWXYZ(double angle, const double axis[3])
Definition: vtkGeneralTransform.h:73
vtkgl::t
GLdouble GLdouble t
Definition: vtkgl.h:11602
vtkGeneralTransform::RotateZ
void RotateZ(double angle)
Definition: vtkGeneralTransform.h:85
vtkGeneralTransform::GetMTime
unsigned long GetMTime()
vtkgl::y
GLint GLint GLint GLint GLint GLint y
Definition: vtkgl.h:11318
vtkGeneralTransform::Concatenate
void Concatenate(const double elements[16])
Definition: vtkGeneralTransform.h:103
vtkGeneralTransform::CircuitCheck
int CircuitCheck(vtkAbstractTransform *transform)
vtkGeneralTransform::Scale
void Scale(const double s[3])
Definition: vtkGeneralTransform.h:94
vtkGeneralTransform::GetInverseFlag
int GetInverseFlag()
Definition: vtkGeneralTransform.h:179
vtkGeneralTransform::Concatenate
void Concatenate(vtkMatrix4x4 *matrix)
Definition: vtkGeneralTransform.h:101
vtkGeneralTransform::Inverse
void Inverse()
Definition: vtkGeneralTransform.h:55
vtkgl::matrix
GLuint GLenum matrix
Definition: vtkgl.h:16451
vtkGeneralTransform::InternalTransformPoint
void InternalTransformPoint(const double in[3], double out[3])
vtkGeneralTransform::Scale
void Scale(const float s[3])
Definition: vtkGeneralTransform.h:95
vtkgl::angle
GLfloat angle
Definition: vtkgl.h:18174
vtkGeneralTransform::InternalTransformDerivative
void InternalTransformDerivative(const double in[3], double out[3], double derivative[3][3])
vtkGeneralTransform::Concatenation
vtkTransformConcatenation * Concatenation
Definition: vtkGeneralTransform.h:237
vtkGeneralTransform::Push
void Push()
Definition: vtkGeneralTransform.h:185
vtkGeneralTransform::PostMultiply
void PostMultiply()
Definition: vtkGeneralTransform.h:131
vtkgl::transform
GLuint GLenum GLenum transform
Definition: vtkgl.h:16451
vtkTransformConcatenation
Definition: vtkAbstractTransform.h:313
vtkGeneralTransform::GetNumberOfConcatenatedTransforms
int GetNumberOfConcatenatedTransforms()
Definition: vtkGeneralTransform.h:139
vtkGeneralTransform::Concatenate
void Concatenate(vtkAbstractTransform *transform)
vtkGeneralTransform::New
static vtkGeneralTransform * New()
vtkGeneralTransform::InternalUpdate
void InternalUpdate()
vtkGeneralTransform::RotateWXYZ
void RotateWXYZ(double angle, const float axis[3])
Definition: vtkGeneralTransform.h:75
vtkGeneralTransform::SetInput
void SetInput(vtkAbstractTransform *input)