VTK
|
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