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

vtkWarpTransform.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    $RCSfile: vtkWarpTransform.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 =========================================================================*/
00034 #ifndef __vtkWarpTransform_h
00035 #define __vtkWarpTransform_h
00036 
00037 #include "vtkAbstractTransform.h"
00038 
00039 class VTK_COMMON_EXPORT vtkWarpTransform : public vtkAbstractTransform
00040 {
00041 public:
00042 
00043   vtkTypeRevisionMacro(vtkWarpTransform,vtkAbstractTransform);
00044   void PrintSelf(ostream& os, vtkIndent indent);
00045 
00050   void Inverse();
00051 
00053 
00056   vtkGetMacro(InverseFlag,int);
00058 
00060 
00061   vtkSetMacro(InverseTolerance,double);
00062   vtkGetMacro(InverseTolerance,double);
00064 
00066 
00070   vtkSetMacro(InverseIterations,int);
00071   vtkGetMacro(InverseIterations,int);
00073 
00075 
00077   void InternalTransformPoint(const float in[3], float out[3]);
00078   void InternalTransformPoint(const double in[3], double out[3]);
00080 
00082 
00084   void InternalTransformDerivative(const float in[3], float out[3],
00085                                    float derivative[3][3]);
00086   void InternalTransformDerivative(const double in[3], double out[3],
00087                                    double derivative[3][3]);
00089 
00091 
00095   void TemplateTransformPoint(const float in[3], float out[3]) {
00096     this->ForwardTransformPoint(in,out); }; 
00097   void TemplateTransformPoint(const double in[3], double out[3]) {
00098     this->ForwardTransformPoint(in,out); }; 
00099   void TemplateTransformPoint(const float in[3], float out[3],
00100                               float derivative[3][3]) {
00101     this->ForwardTransformDerivative(in,out,derivative); }; 
00102   void TemplateTransformPoint(const double in[3], double out[3],
00103                               double derivative[3][3]) {
00104     this->ForwardTransformDerivative(in,out,derivative); }; 
00105   void TemplateTransformInverse(const float in[3], float out[3]) {
00106     this->InverseTransformPoint(in,out); }; 
00107   void TemplateTransformInverse(const double in[3], double out[3]) {
00108     this->InverseTransformPoint(in,out); }; 
00109   void TemplateTransformInverse(const float in[3], float out[3],
00110                                 float derivative[3][3]) {
00111     this->InverseTransformDerivative(in,out,derivative); }; 
00112   void TemplateTransformInverse(const double in[3], double out[3],
00113                                 double derivative[3][3]) {
00114     this->InverseTransformDerivative(in,out,derivative); }; 
00116 
00117 protected:
00118   vtkWarpTransform();
00119   ~vtkWarpTransform();
00120 
00122 
00124   virtual void ForwardTransformPoint(const float in[3], float out[3]) = 0;
00125   virtual void ForwardTransformPoint(const double in[3], double out[3]) = 0;
00127 
00129 
00130   virtual void ForwardTransformDerivative(const float in[3], float out[3],
00131                                           float derivative[3][3]) = 0;
00132   virtual void ForwardTransformDerivative(const double in[3], double out[3],
00133                                           double derivative[3][3]) = 0;
00135 
00137 
00140   virtual void InverseTransformPoint(const float in[3], float out[3]);
00141   virtual void InverseTransformPoint(const double in[3], double out[3]);
00143 
00145 
00148   virtual void InverseTransformDerivative(const float in[3], float out[3],
00149                                           float derivative[3][3]);
00150   virtual void InverseTransformDerivative(const double in[3], double out[3],
00151                                           double derivative[3][3]);
00153 
00154   int InverseFlag;
00155   int InverseIterations;
00156   double InverseTolerance;
00157 private:
00158   vtkWarpTransform(const vtkWarpTransform&);  // Not implemented.
00159   void operator=(const vtkWarpTransform&);  // Not implemented.
00160 };
00161 
00162 #endif
00163 
00164 
00165 
00166 
00167