VTK
dox/Common/vtkWarpTransform.h
Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    vtkWarpTransform.h
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 __vtkWarpTransform_h
00025 #define __vtkWarpTransform_h
00026 
00027 #include "vtkAbstractTransform.h"
00028 
00029 class VTK_COMMON_EXPORT vtkWarpTransform : public vtkAbstractTransform
00030 {
00031 public:
00032 
00033   vtkTypeMacro(vtkWarpTransform,vtkAbstractTransform);
00034   void PrintSelf(ostream& os, vtkIndent indent);
00035 
00040   void Inverse();
00041 
00043 
00046   vtkGetMacro(InverseFlag,int);
00048 
00050 
00051   vtkSetMacro(InverseTolerance,double);
00052   vtkGetMacro(InverseTolerance,double);
00054 
00056 
00060   vtkSetMacro(InverseIterations,int);
00061   vtkGetMacro(InverseIterations,int);
00063 
00065 
00067   void InternalTransformPoint(const float in[3], float out[3]);
00068   void InternalTransformPoint(const double in[3], double out[3]);
00070 
00072 
00074   void InternalTransformDerivative(const float in[3], float out[3],
00075                                    float derivative[3][3]);
00076   void InternalTransformDerivative(const double in[3], double out[3],
00077                                    double derivative[3][3]);
00079 
00081 
00085   void TemplateTransformPoint(const float in[3], float out[3]) {
00086     this->ForwardTransformPoint(in,out); }; 
00087   void TemplateTransformPoint(const double in[3], double out[3]) {
00088     this->ForwardTransformPoint(in,out); }; 
00089   void TemplateTransformPoint(const float in[3], float out[3],
00090                               float derivative[3][3]) {
00091     this->ForwardTransformDerivative(in,out,derivative); }; 
00092   void TemplateTransformPoint(const double in[3], double out[3],
00093                               double derivative[3][3]) {
00094     this->ForwardTransformDerivative(in,out,derivative); }; 
00095   void TemplateTransformInverse(const float in[3], float out[3]) {
00096     this->InverseTransformPoint(in,out); }; 
00097   void TemplateTransformInverse(const double in[3], double out[3]) {
00098     this->InverseTransformPoint(in,out); }; 
00099   void TemplateTransformInverse(const float in[3], float out[3],
00100                                 float derivative[3][3]) {
00101     this->InverseTransformDerivative(in,out,derivative); }; 
00102   void TemplateTransformInverse(const double in[3], double out[3],
00103                                 double derivative[3][3]) {
00104     this->InverseTransformDerivative(in,out,derivative); }; 
00106 
00107 protected:
00108   vtkWarpTransform();
00109   ~vtkWarpTransform();
00110 
00112 
00114   virtual void ForwardTransformPoint(const float in[3], float out[3]) = 0;
00115   virtual void ForwardTransformPoint(const double in[3], double out[3]) = 0;
00117 
00119 
00120   virtual void ForwardTransformDerivative(const float in[3], float out[3],
00121                                           float derivative[3][3]) = 0;
00122   virtual void ForwardTransformDerivative(const double in[3], double out[3],
00123                                           double derivative[3][3]) = 0;
00125 
00127 
00130   virtual void InverseTransformPoint(const float in[3], float out[3]);
00131   virtual void InverseTransformPoint(const double in[3], double out[3]);
00133 
00135 
00138   virtual void InverseTransformDerivative(const float in[3], float out[3],
00139                                           float derivative[3][3]);
00140   virtual void InverseTransformDerivative(const double in[3], double out[3],
00141                                           double derivative[3][3]);
00143 
00144   int InverseFlag;
00145   int InverseIterations;
00146   double InverseTolerance;
00147 private:
00148   vtkWarpTransform(const vtkWarpTransform&);  // Not implemented.
00149   void operator=(const vtkWarpTransform&);  // Not implemented.
00150 };
00151 
00152 #endif
00153 
00154 
00155 
00156 
00157