00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
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&);
00149 void operator=(const vtkWarpTransform&);
00150 };
00151
00152 #endif
00153
00154
00155
00156
00157