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
00052 #ifndef __vtkWarpTransform_h
00053 #define __vtkWarpTransform_h
00054
00055 #include "vtkAbstractTransform.h"
00056
00057 class VTK_EXPORT vtkWarpTransform : public vtkAbstractTransform
00058 {
00059 public:
00060
00061 vtkTypeMacro(vtkWarpTransform,vtkAbstractTransform);
00062 void PrintSelf(ostream& os, vtkIndent indent);
00063
00068 void Inverse();
00069
00071 vtkSetMacro(InverseTolerance,double);
00072 vtkGetMacro(InverseTolerance,double);
00073
00078 vtkSetMacro(InverseIterations,int);
00079 vtkGetMacro(InverseIterations,int);
00080
00083 void InternalTransformPoint(const float in[3], float out[3]);
00084 void InternalTransformPoint(const double in[3], double out[3]);
00085
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]);
00092
00093
00098 void TemplateTransformPoint(const float in[3], float out[3]) {
00099 this->ForwardTransformPoint(in,out); };
00100 void TemplateTransformPoint(const double in[3], double out[3]) {
00101 this->ForwardTransformPoint(in,out); };
00102 void TemplateTransformPoint(const float in[3], float out[3],
00103 float derivative[3][3]) {
00104 this->ForwardTransformDerivative(in,out,derivative); };
00105 void TemplateTransformPoint(const double in[3], double out[3],
00106 double derivative[3][3]) {
00107 this->ForwardTransformDerivative(in,out,derivative); };
00108 void TemplateTransformInverse(const float in[3], float out[3]) {
00109 this->InverseTransformPoint(in,out); };
00110 void TemplateTransformInverse(const double in[3], double out[3]) {
00111 this->InverseTransformPoint(in,out); };
00112 void TemplateTransformInverse(const float in[3], float out[3],
00113 float derivative[3][3]) {
00114 this->InverseTransformDerivative(in,out,derivative); };
00115 void TemplateTransformInverse(const double in[3], double out[3],
00116 double derivative[3][3]) {
00117 this->InverseTransformDerivative(in,out,derivative); };
00118
00119
00120 protected:
00121 vtkWarpTransform();
00122 ~vtkWarpTransform();
00123 vtkWarpTransform(const vtkWarpTransform&) {};
00124 void operator=(const vtkWarpTransform&) {};
00125
00128 virtual void ForwardTransformPoint(const float in[3], float out[3]) = 0;
00129 virtual void ForwardTransformPoint(const double in[3], double out[3]) = 0;
00130
00132 virtual void ForwardTransformDerivative(const float in[3], float out[3],
00133 float derivative[3][3]) = 0;
00134 virtual void ForwardTransformDerivative(const double in[3], double out[3],
00135 double derivative[3][3]) = 0;
00136
00140 virtual void InverseTransformPoint(const float in[3], float out[3]);
00141 virtual void InverseTransformPoint(const double in[3], double out[3]);
00142
00146 virtual void InverseTransformDerivative(const float in[3], float out[3],
00147 float derivative[3][3]);
00148 virtual void InverseTransformDerivative(const double in[3], double out[3],
00149 double derivative[3][3]);
00150
00151 int InverseFlag;
00152 int InverseIterations;
00153 double InverseTolerance;
00154 };
00155
00156 #endif
00157
00158
00159
00160
00161