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

Common/vtkWarpTransform.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    $RCSfile: vtkWarpTransform.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 =========================================================================*/
00038 #ifndef __vtkWarpTransform_h
00039 #define __vtkWarpTransform_h
00040 
00041 #include "vtkAbstractTransform.h"
00042 
00043 class VTK_COMMON_EXPORT vtkWarpTransform : public vtkAbstractTransform
00044 {
00045 public:
00046 
00047   vtkTypeRevisionMacro(vtkWarpTransform,vtkAbstractTransform);
00048   void PrintSelf(ostream& os, vtkIndent indent);
00049 
00054   void Inverse();
00055 
00057 
00060   vtkGetMacro(InverseFlag,int);
00062 
00064 
00065   vtkSetMacro(InverseTolerance,double);
00066   vtkGetMacro(InverseTolerance,double);
00068 
00070 
00074   vtkSetMacro(InverseIterations,int);
00075   vtkGetMacro(InverseIterations,int);
00077 
00079 
00081   void InternalTransformPoint(const float in[3], float out[3]);
00082   void InternalTransformPoint(const double in[3], double out[3]);
00084 
00086 
00088   void InternalTransformDerivative(const float in[3], float out[3],
00089                                    float derivative[3][3]);
00090   void InternalTransformDerivative(const double in[3], double out[3],
00091                                    double derivative[3][3]);
00093 
00095 
00099   void TemplateTransformPoint(const float in[3], float out[3]) {
00100     this->ForwardTransformPoint(in,out); }; 
00101   void TemplateTransformPoint(const double in[3], double out[3]) {
00102     this->ForwardTransformPoint(in,out); }; 
00103   void TemplateTransformPoint(const float in[3], float out[3],
00104                               float derivative[3][3]) {
00105     this->ForwardTransformDerivative(in,out,derivative); }; 
00106   void TemplateTransformPoint(const double in[3], double out[3],
00107                               double derivative[3][3]) {
00108     this->ForwardTransformDerivative(in,out,derivative); }; 
00109   void TemplateTransformInverse(const float in[3], float out[3]) {
00110     this->InverseTransformPoint(in,out); }; 
00111   void TemplateTransformInverse(const double in[3], double out[3]) {
00112     this->InverseTransformPoint(in,out); }; 
00113   void TemplateTransformInverse(const float in[3], float out[3],
00114                                 float derivative[3][3]) {
00115     this->InverseTransformDerivative(in,out,derivative); }; 
00116   void TemplateTransformInverse(const double in[3], double out[3],
00117                                 double derivative[3][3]) {
00118     this->InverseTransformDerivative(in,out,derivative); }; 
00120 
00121 protected:
00122   vtkWarpTransform();
00123   ~vtkWarpTransform();
00124 
00126 
00128   virtual void ForwardTransformPoint(const float in[3], float out[3]) = 0;
00129   virtual void ForwardTransformPoint(const double in[3], double out[3]) = 0;
00131 
00133 
00134   virtual void ForwardTransformDerivative(const float in[3], float out[3],
00135                                           float derivative[3][3]) = 0;
00136   virtual void ForwardTransformDerivative(const double in[3], double out[3],
00137                                           double derivative[3][3]) = 0;
00139 
00141 
00144   virtual void InverseTransformPoint(const float in[3], float out[3]);
00145   virtual void InverseTransformPoint(const double in[3], double out[3]);
00147 
00149 
00152   virtual void InverseTransformDerivative(const float in[3], float out[3],
00153                                           float derivative[3][3]);
00154   virtual void InverseTransformDerivative(const double in[3], double out[3],
00155                                           double derivative[3][3]);
00157 
00158   int InverseFlag;
00159   int InverseIterations;
00160   double InverseTolerance;
00161 private:
00162   vtkWarpTransform(const vtkWarpTransform&);  // Not implemented.
00163   void operator=(const vtkWarpTransform&);  // Not implemented.
00164 };
00165 
00166 #endif
00167 
00168 
00169 
00170 
00171