00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00053 #ifndef __vtkWarpTransform_h
00054 #define __vtkWarpTransform_h
00055
00056 #include "vtkAbstractTransform.h"
00057
00058 class VTK_COMMON_EXPORT vtkWarpTransform : public vtkAbstractTransform
00059 {
00060 public:
00061
00062 vtkTypeMacro(vtkWarpTransform,vtkAbstractTransform);
00063 void PrintSelf(ostream& os, vtkIndent indent);
00064
00069 void Inverse();
00070
00072
00075 vtkGetMacro(InverseFlag,int);
00077
00079
00080 vtkSetMacro(InverseTolerance,double);
00081 vtkGetMacro(InverseTolerance,double);
00083
00085
00089 vtkSetMacro(InverseIterations,int);
00090 vtkGetMacro(InverseIterations,int);
00092
00094
00096 void InternalTransformPoint(const float in[3], float out[3]);
00097 void InternalTransformPoint(const double in[3], double out[3]);
00099
00101
00103 void InternalTransformDerivative(const float in[3], float out[3],
00104 float derivative[3][3]);
00105 void InternalTransformDerivative(const double in[3], double out[3],
00106 double derivative[3][3]);
00108
00110
00114 void TemplateTransformPoint(const float in[3], float out[3]) {
00115 this->ForwardTransformPoint(in,out); };
00116 void TemplateTransformPoint(const double in[3], double out[3]) {
00117 this->ForwardTransformPoint(in,out); };
00118 void TemplateTransformPoint(const float in[3], float out[3],
00119 float derivative[3][3]) {
00120 this->ForwardTransformDerivative(in,out,derivative); };
00121 void TemplateTransformPoint(const double in[3], double out[3],
00122 double derivative[3][3]) {
00123 this->ForwardTransformDerivative(in,out,derivative); };
00124 void TemplateTransformInverse(const float in[3], float out[3]) {
00125 this->InverseTransformPoint(in,out); };
00126 void TemplateTransformInverse(const double in[3], double out[3]) {
00127 this->InverseTransformPoint(in,out); };
00128 void TemplateTransformInverse(const float in[3], float out[3],
00129 float derivative[3][3]) {
00130 this->InverseTransformDerivative(in,out,derivative); };
00131 void TemplateTransformInverse(const double in[3], double out[3],
00132 double derivative[3][3]) {
00133 this->InverseTransformDerivative(in,out,derivative); };
00135
00136 protected:
00137 vtkWarpTransform();
00138 ~vtkWarpTransform();
00139
00141
00143 virtual void ForwardTransformPoint(const float in[3], float out[3]) = 0;
00144 virtual void ForwardTransformPoint(const double in[3], double out[3]) = 0;
00146
00148
00149 virtual void ForwardTransformDerivative(const float in[3], float out[3],
00150 float derivative[3][3]) = 0;
00151 virtual void ForwardTransformDerivative(const double in[3], double out[3],
00152 double derivative[3][3]) = 0;
00154
00156
00159 virtual void InverseTransformPoint(const float in[3], float out[3]);
00160 virtual void InverseTransformPoint(const double in[3], double out[3]);
00162
00164
00167 virtual void InverseTransformDerivative(const float in[3], float out[3],
00168 float derivative[3][3]);
00169 virtual void InverseTransformDerivative(const double in[3], double out[3],
00170 double derivative[3][3]);
00172
00173 int InverseFlag;
00174 int InverseIterations;
00175 double InverseTolerance;
00176 private:
00177 vtkWarpTransform(const vtkWarpTransform&);
00178 void operator=(const vtkWarpTransform&);
00179 };
00180
00181 #endif
00182
00183
00184
00185
00186