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

vtkLinearTransform.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    $RCSfile: vtkLinearTransform.h,v $
00005 
00006   Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
00007   All rights reserved.
00008   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
00009 
00010      This software is distributed WITHOUT ANY WARRANTY; without even
00011      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
00012      PURPOSE.  See the above copyright notice for more information.
00013 
00014 =========================================================================*/
00024 #ifndef __vtkLinearTransform_h
00025 #define __vtkLinearTransform_h
00026 
00027 #include "vtkHomogeneousTransform.h"
00028 
00029 class VTK_COMMON_EXPORT vtkLinearTransform : public vtkHomogeneousTransform
00030 {
00031 public:
00032 
00033   vtkTypeRevisionMacro(vtkLinearTransform,vtkHomogeneousTransform);
00034   void PrintSelf(ostream& os, vtkIndent indent);
00035 
00037 
00039   void TransformNormal(const float in[3], float out[3]) {
00040     this->Update(); this->InternalTransformNormal(in,out); };
00042 
00044 
00046   void TransformNormal(const double in[3], double out[3]) {
00047     this->Update(); this->InternalTransformNormal(in,out); };
00049 
00051 
00053   double *TransformNormal(double x, double y, double z) {
00054     return this->TransformDoubleNormal(x,y,z); }
00055   double *TransformNormal(const double normal[3]) {
00056     return this->TransformDoubleNormal(normal[0],normal[1],normal[2]); };
00058 
00060 
00062   float *TransformFloatNormal(float x, float y, float z) {
00063     this->InternalFloatPoint[0] = x;
00064     this->InternalFloatPoint[1] = y;
00065     this->InternalFloatPoint[2] = z;
00066     this->TransformNormal(this->InternalFloatPoint,this->InternalFloatPoint);
00067     return this->InternalFloatPoint; };
00068   float *TransformFloatNormal(const float normal[3]) {
00069     return this->TransformFloatNormal(normal[0],normal[1],normal[2]); };
00071 
00073 
00075   double *TransformDoubleNormal(double x, double y, double z) {
00076     this->InternalDoublePoint[0] = x;
00077     this->InternalDoublePoint[1] = y;
00078     this->InternalDoublePoint[2] = z;
00079     this->TransformNormal(this->InternalDoublePoint,this->InternalDoublePoint);
00080     return this->InternalDoublePoint; };
00081   double *TransformDoubleNormal(const double normal[3]) {
00082     return this->TransformDoubleNormal(normal[0],normal[1],normal[2]); };
00084 
00086 
00088   double *TransformVector(double x, double y, double z) {
00089     return this->TransformDoubleVector(x,y,z); }
00090   double *TransformVector(const double normal[3]) {
00091     return this->TransformDoubleVector(normal[0],normal[1],normal[2]); };
00093 
00095 
00097   void TransformVector(const float in[3], float out[3]) {
00098     this->Update(); this->InternalTransformVector(in,out); };
00100 
00102 
00104   void TransformVector(const double in[3], double out[3]) {
00105     this->Update(); this->InternalTransformVector(in,out); };
00107 
00109 
00111   float *TransformFloatVector(float x, float y, float z) {
00112       this->InternalFloatPoint[0] = x;
00113       this->InternalFloatPoint[1] = y;
00114       this->InternalFloatPoint[2] = z;
00115       this->TransformVector(this->InternalFloatPoint,this->InternalFloatPoint);
00116       return this->InternalFloatPoint; };
00117   float *TransformFloatVector(const float vec[3]) {
00118     return this->TransformFloatVector(vec[0],vec[1],vec[2]); };
00120 
00122 
00124   double *TransformDoubleVector(double x, double y, double z) {
00125     this->InternalDoublePoint[0] = x;
00126     this->InternalDoublePoint[1] = y;
00127     this->InternalDoublePoint[2] = z;
00128     this->TransformVector(this->InternalDoublePoint,this->InternalDoublePoint);
00129     return this->InternalDoublePoint; };
00130   double *TransformDoubleVector(const double vec[3]) {
00131     return this->TransformDoubleVector(vec[0],vec[1],vec[2]); };
00133 
00136   void TransformPoints(vtkPoints *inPts, vtkPoints *outPts);
00137 
00140   virtual void TransformNormals(vtkDataArray *inNms, vtkDataArray *outNms);
00141 
00144   virtual void TransformVectors(vtkDataArray *inVrs, vtkDataArray *outVrs);
00145 
00147 
00149   void TransformPointsNormalsVectors(vtkPoints *inPts, 
00150                                      vtkPoints *outPts, 
00151                                      vtkDataArray *inNms, 
00152                                      vtkDataArray *outNms,
00153                                      vtkDataArray *inVrs, 
00154                                      vtkDataArray *outVrs);
00156 
00158 
00160   vtkLinearTransform *GetLinearInverse() { 
00161     return (vtkLinearTransform *)this->GetInverse(); }; 
00163 
00165 
00167   void InternalTransformPoint(const float in[3], float out[3]);
00168   void InternalTransformPoint(const double in[3], double out[3]);
00170 
00172 
00174   virtual void InternalTransformNormal(const float in[3], float out[3]);
00175   virtual void InternalTransformNormal(const double in[3], double out[3]);
00177 
00179 
00181   virtual void InternalTransformVector(const float in[3], float out[3]);
00182   virtual void InternalTransformVector(const double in[3], double out[3]);
00184 
00186 
00188   void InternalTransformDerivative(const float in[3], float out[3],
00189                                    float derivative[3][3]);
00190   void InternalTransformDerivative(const double in[3], double out[3],
00191                                    double derivative[3][3]);
00193 
00194 protected:
00195   vtkLinearTransform() {};
00196   ~vtkLinearTransform() {};
00197 private:
00198   vtkLinearTransform(const vtkLinearTransform&);  // Not implemented.
00199   void operator=(const vtkLinearTransform&);  // Not implemented.
00200 };
00201 
00202 #endif
00203 
00204 
00205 
00206 
00207 

Generated on Mon Jan 21 23:07:17 2008 for VTK by  doxygen 1.4.3-20050530