00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00028 #ifndef __vtkWarpTransform_h
00029 #define __vtkWarpTransform_h
00030
00031 #include "vtkAbstractTransform.h"
00032
00033 class VTK_COMMON_EXPORT vtkWarpTransform : public vtkAbstractTransform
00034 {
00035 public:
00036
00037 vtkTypeRevisionMacro(vtkWarpTransform,vtkAbstractTransform);
00038 void PrintSelf(ostream& os, vtkIndent indent);
00039
00044 void Inverse();
00045
00047
00050 vtkGetMacro(InverseFlag,int);
00052
00054
00055 vtkSetMacro(InverseTolerance,double);
00056 vtkGetMacro(InverseTolerance,double);
00058
00060
00064 vtkSetMacro(InverseIterations,int);
00065 vtkGetMacro(InverseIterations,int);
00067
00069
00071 void InternalTransformPoint(const float in[3], float out[3]);
00072 void InternalTransformPoint(const double in[3], double out[3]);
00074
00076
00078 void InternalTransformDerivative(const float in[3], float out[3],
00079 float derivative[3][3]);
00080 void InternalTransformDerivative(const double in[3], double out[3],
00081 double derivative[3][3]);
00083
00085
00089 void TemplateTransformPoint(const float in[3], float out[3]) {
00090 this->ForwardTransformPoint(in,out); };
00091 void TemplateTransformPoint(const double in[3], double out[3]) {
00092 this->ForwardTransformPoint(in,out); };
00093 void TemplateTransformPoint(const float in[3], float out[3],
00094 float derivative[3][3]) {
00095 this->ForwardTransformDerivative(in,out,derivative); };
00096 void TemplateTransformPoint(const double in[3], double out[3],
00097 double derivative[3][3]) {
00098 this->ForwardTransformDerivative(in,out,derivative); };
00099 void TemplateTransformInverse(const float in[3], float out[3]) {
00100 this->InverseTransformPoint(in,out); };
00101 void TemplateTransformInverse(const double in[3], double out[3]) {
00102 this->InverseTransformPoint(in,out); };
00103 void TemplateTransformInverse(const float in[3], float out[3],
00104 float derivative[3][3]) {
00105 this->InverseTransformDerivative(in,out,derivative); };
00106 void TemplateTransformInverse(const double in[3], double out[3],
00107 double derivative[3][3]) {
00108 this->InverseTransformDerivative(in,out,derivative); };
00110
00111 protected:
00112 vtkWarpTransform();
00113 ~vtkWarpTransform();
00114
00116
00118 virtual void ForwardTransformPoint(const float in[3], float out[3]) = 0;
00119 virtual void ForwardTransformPoint(const double in[3], double out[3]) = 0;
00121
00123
00124 virtual void ForwardTransformDerivative(const float in[3], float out[3],
00125 float derivative[3][3]) = 0;
00126 virtual void ForwardTransformDerivative(const double in[3], double out[3],
00127 double derivative[3][3]) = 0;
00129
00131
00134 virtual void InverseTransformPoint(const float in[3], float out[3]);
00135 virtual void InverseTransformPoint(const double in[3], double out[3]);
00137
00139
00142 virtual void InverseTransformDerivative(const float in[3], float out[3],
00143 float derivative[3][3]);
00144 virtual void InverseTransformDerivative(const double in[3], double out[3],
00145 double derivative[3][3]);
00147
00148 int InverseFlag;
00149 int InverseIterations;
00150 double InverseTolerance;
00151 private:
00152 vtkWarpTransform(const vtkWarpTransform&);
00153 void operator=(const vtkWarpTransform&);
00154 };
00155
00156 #endif
00157
00158
00159
00160
00161