Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

dox/Common/vtkLinearTransform.h

Go to the documentation of this file.
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkLinearTransform.h,v $ 00005 Language: C++ 00006 00007 Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen 00008 All rights reserved. 00009 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00010 00011 This software is distributed WITHOUT ANY WARRANTY; without even 00012 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00013 PURPOSE. See the above copyright notice for more information. 00014 00015 =========================================================================*/ 00028 #ifndef __vtkLinearTransform_h 00029 #define __vtkLinearTransform_h 00030 00031 #include "vtkHomogeneousTransform.h" 00032 00033 class VTK_COMMON_EXPORT vtkLinearTransform : public vtkHomogeneousTransform 00034 { 00035 public: 00036 00037 vtkTypeRevisionMacro(vtkLinearTransform,vtkHomogeneousTransform); 00038 void PrintSelf(ostream& os, vtkIndent indent); 00039 00041 00043 void TransformNormal(const float in[3], float out[3]) { 00044 this->Update(); this->InternalTransformNormal(in,out); }; 00046 00048 00050 void TransformNormal(const double in[3], double out[3]) { 00051 this->Update(); this->InternalTransformNormal(in,out); }; 00053 00055 00057 double *TransformNormal(double x, double y, double z) { 00058 return this->TransformDoubleNormal(x,y,z); } 00059 double *TransformNormal(const double normal[3]) { 00060 return this->TransformDoubleNormal(normal[0],normal[1],normal[2]); }; 00062 00064 00066 float *TransformFloatNormal(float x, float y, float z) { 00067 this->InternalFloatPoint[0] = x; 00068 this->InternalFloatPoint[1] = y; 00069 this->InternalFloatPoint[2] = z; 00070 this->TransformNormal(this->InternalFloatPoint,this->InternalFloatPoint); 00071 return this->InternalFloatPoint; }; 00072 float *TransformFloatNormal(const float normal[3]) { 00073 return this->TransformFloatNormal(normal[0],normal[1],normal[2]); }; 00075 00077 00079 double *TransformDoubleNormal(double x, double y, double z) { 00080 this->InternalDoublePoint[0] = x; 00081 this->InternalDoublePoint[1] = y; 00082 this->InternalDoublePoint[2] = z; 00083 this->TransformNormal(this->InternalDoublePoint,this->InternalDoublePoint); 00084 return this->InternalDoublePoint; }; 00085 double *TransformDoubleNormal(const double normal[3]) { 00086 return this->TransformDoubleNormal(normal[0],normal[1],normal[2]); }; 00088 00090 00092 double *TransformVector(double x, double y, double z) { 00093 return this->TransformDoubleVector(x,y,z); } 00094 double *TransformVector(const double normal[3]) { 00095 return this->TransformDoubleVector(normal[0],normal[1],normal[2]); }; 00097 00099 00101 void TransformVector(const float in[3], float out[3]) { 00102 this->Update(); this->InternalTransformVector(in,out); }; 00104 00106 00108 void TransformVector(const double in[3], double out[3]) { 00109 this->Update(); this->InternalTransformVector(in,out); }; 00111 00113 00115 float *TransformFloatVector(float x, float y, float z) { 00116 this->InternalFloatPoint[0] = x; 00117 this->InternalFloatPoint[1] = y; 00118 this->InternalFloatPoint[2] = z; 00119 this->TransformVector(this->InternalFloatPoint,this->InternalFloatPoint); 00120 return this->InternalFloatPoint; }; 00121 float *TransformFloatVector(const float vec[3]) { 00122 return this->TransformFloatVector(vec[0],vec[1],vec[2]); }; 00124 00126 00128 double *TransformDoubleVector(double x, double y, double z) { 00129 this->InternalDoublePoint[0] = x; 00130 this->InternalDoublePoint[1] = y; 00131 this->InternalDoublePoint[2] = z; 00132 this->TransformVector(this->InternalDoublePoint,this->InternalDoublePoint); 00133 return this->InternalDoublePoint; }; 00134 double *TransformDoubleVector(const double vec[3]) { 00135 return this->TransformDoubleVector(vec[0],vec[1],vec[2]); }; 00137 00140 void TransformPoints(vtkPoints *inPts, vtkPoints *outPts); 00141 00144 virtual void TransformNormals(vtkDataArray *inNms, vtkDataArray *outNms); 00145 00148 virtual void TransformVectors(vtkDataArray *inVrs, vtkDataArray *outVrs); 00149 00151 00153 void TransformPointsNormalsVectors(vtkPoints *inPts, 00154 vtkPoints *outPts, 00155 vtkDataArray *inNms, 00156 vtkDataArray *outNms, 00157 vtkDataArray *inVrs, 00158 vtkDataArray *outVrs); 00160 00162 00164 vtkLinearTransform *GetLinearInverse() { 00165 return (vtkLinearTransform *)this->GetInverse(); }; 00167 00169 00171 void InternalTransformPoint(const float in[3], float out[3]); 00172 void InternalTransformPoint(const double in[3], double out[3]); 00174 00176 00178 virtual void InternalTransformNormal(const float in[3], float out[3]); 00179 virtual void InternalTransformNormal(const double in[3], double out[3]); 00181 00183 00185 virtual void InternalTransformVector(const float in[3], float out[3]); 00186 virtual void InternalTransformVector(const double in[3], double out[3]); 00188 00190 00192 void InternalTransformDerivative(const float in[3], float out[3], 00193 float derivative[3][3]); 00194 void InternalTransformDerivative(const double in[3], double out[3], 00195 double derivative[3][3]); 00197 00198 protected: 00199 vtkLinearTransform() {}; 00200 ~vtkLinearTransform() {}; 00201 private: 00202 vtkLinearTransform(const vtkLinearTransform&); // Not implemented. 00203 void operator=(const vtkLinearTransform&); // Not implemented. 00204 }; 00205 00206 #endif 00207 00208 00209 00210 00211