00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00038 #ifndef __vtkWarpTransform_h
00039 #define __vtkWarpTransform_h
00040
00041 #include "vtkAbstractTransform.h"
00042
00043 class VTK_COMMON_EXPORT vtkWarpTransform : public vtkAbstractTransform
00044 {
00045 public:
00046
00047 vtkTypeRevisionMacro(vtkWarpTransform,vtkAbstractTransform);
00048 void PrintSelf(ostream& os, vtkIndent indent);
00049
00054 void Inverse();
00055
00057
00060 vtkGetMacro(InverseFlag,int);
00062
00064
00065 vtkSetMacro(InverseTolerance,double);
00066 vtkGetMacro(InverseTolerance,double);
00068
00070
00074 vtkSetMacro(InverseIterations,int);
00075 vtkGetMacro(InverseIterations,int);
00077
00079
00081 void InternalTransformPoint(const float in[3], float out[3]);
00082 void InternalTransformPoint(const double in[3], double out[3]);
00084
00086
00088 void InternalTransformDerivative(const float in[3], float out[3],
00089 float derivative[3][3]);
00090 void InternalTransformDerivative(const double in[3], double out[3],
00091 double derivative[3][3]);
00093
00095
00099 void TemplateTransformPoint(const float in[3], float out[3]) {
00100 this->ForwardTransformPoint(in,out); };
00101 void TemplateTransformPoint(const double in[3], double out[3]) {
00102 this->ForwardTransformPoint(in,out); };
00103 void TemplateTransformPoint(const float in[3], float out[3],
00104 float derivative[3][3]) {
00105 this->ForwardTransformDerivative(in,out,derivative); };
00106 void TemplateTransformPoint(const double in[3], double out[3],
00107 double derivative[3][3]) {
00108 this->ForwardTransformDerivative(in,out,derivative); };
00109 void TemplateTransformInverse(const float in[3], float out[3]) {
00110 this->InverseTransformPoint(in,out); };
00111 void TemplateTransformInverse(const double in[3], double out[3]) {
00112 this->InverseTransformPoint(in,out); };
00113 void TemplateTransformInverse(const float in[3], float out[3],
00114 float derivative[3][3]) {
00115 this->InverseTransformDerivative(in,out,derivative); };
00116 void TemplateTransformInverse(const double in[3], double out[3],
00117 double derivative[3][3]) {
00118 this->InverseTransformDerivative(in,out,derivative); };
00120
00121 protected:
00122 vtkWarpTransform();
00123 ~vtkWarpTransform();
00124
00126
00128 virtual void ForwardTransformPoint(const float in[3], float out[3]) = 0;
00129 virtual void ForwardTransformPoint(const double in[3], double out[3]) = 0;
00131
00133
00134 virtual void ForwardTransformDerivative(const float in[3], float out[3],
00135 float derivative[3][3]) = 0;
00136 virtual void ForwardTransformDerivative(const double in[3], double out[3],
00137 double derivative[3][3]) = 0;
00139
00141
00144 virtual void InverseTransformPoint(const float in[3], float out[3]);
00145 virtual void InverseTransformPoint(const double in[3], double out[3]);
00147
00149
00152 virtual void InverseTransformDerivative(const float in[3], float out[3],
00153 float derivative[3][3]);
00154 virtual void InverseTransformDerivative(const double in[3], double out[3],
00155 double derivative[3][3]);
00157
00158 int InverseFlag;
00159 int InverseIterations;
00160 double InverseTolerance;
00161 private:
00162 vtkWarpTransform(const vtkWarpTransform&);
00163 void operator=(const vtkWarpTransform&);
00164 };
00165
00166 #endif
00167
00168
00169
00170
00171