00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00034 #ifndef __vtkWarpTransform_h
00035 #define __vtkWarpTransform_h
00036
00037 #include "vtkAbstractTransform.h"
00038
00039 class VTK_COMMON_EXPORT vtkWarpTransform : public vtkAbstractTransform
00040 {
00041 public:
00042
00043 vtkTypeRevisionMacro(vtkWarpTransform,vtkAbstractTransform);
00044 void PrintSelf(ostream& os, vtkIndent indent);
00045
00050 void Inverse();
00051
00053
00056 vtkGetMacro(InverseFlag,int);
00058
00060
00061 vtkSetMacro(InverseTolerance,double);
00062 vtkGetMacro(InverseTolerance,double);
00064
00066
00070 vtkSetMacro(InverseIterations,int);
00071 vtkGetMacro(InverseIterations,int);
00073
00075
00077 void InternalTransformPoint(const float in[3], float out[3]);
00078 void InternalTransformPoint(const double in[3], double out[3]);
00080
00082
00084 void InternalTransformDerivative(const float in[3], float out[3],
00085 float derivative[3][3]);
00086 void InternalTransformDerivative(const double in[3], double out[3],
00087 double derivative[3][3]);
00089
00091
00095 void TemplateTransformPoint(const float in[3], float out[3]) {
00096 this->ForwardTransformPoint(in,out); };
00097 void TemplateTransformPoint(const double in[3], double out[3]) {
00098 this->ForwardTransformPoint(in,out); };
00099 void TemplateTransformPoint(const float in[3], float out[3],
00100 float derivative[3][3]) {
00101 this->ForwardTransformDerivative(in,out,derivative); };
00102 void TemplateTransformPoint(const double in[3], double out[3],
00103 double derivative[3][3]) {
00104 this->ForwardTransformDerivative(in,out,derivative); };
00105 void TemplateTransformInverse(const float in[3], float out[3]) {
00106 this->InverseTransformPoint(in,out); };
00107 void TemplateTransformInverse(const double in[3], double out[3]) {
00108 this->InverseTransformPoint(in,out); };
00109 void TemplateTransformInverse(const float in[3], float out[3],
00110 float derivative[3][3]) {
00111 this->InverseTransformDerivative(in,out,derivative); };
00112 void TemplateTransformInverse(const double in[3], double out[3],
00113 double derivative[3][3]) {
00114 this->InverseTransformDerivative(in,out,derivative); };
00116
00117 protected:
00118 vtkWarpTransform();
00119 ~vtkWarpTransform();
00120
00122
00124 virtual void ForwardTransformPoint(const float in[3], float out[3]) = 0;
00125 virtual void ForwardTransformPoint(const double in[3], double out[3]) = 0;
00127
00129
00130 virtual void ForwardTransformDerivative(const float in[3], float out[3],
00131 float derivative[3][3]) = 0;
00132 virtual void ForwardTransformDerivative(const double in[3], double out[3],
00133 double derivative[3][3]) = 0;
00135
00137
00140 virtual void InverseTransformPoint(const float in[3], float out[3]);
00141 virtual void InverseTransformPoint(const double in[3], double out[3]);
00143
00145
00148 virtual void InverseTransformDerivative(const float in[3], float out[3],
00149 float derivative[3][3]);
00150 virtual void InverseTransformDerivative(const double in[3], double out[3],
00151 double derivative[3][3]);
00153
00154 int InverseFlag;
00155 int InverseIterations;
00156 double InverseTolerance;
00157 private:
00158 vtkWarpTransform(const vtkWarpTransform&);
00159 void operator=(const vtkWarpTransform&);
00160 };
00161
00162 #endif
00163
00164
00165
00166
00167