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 vtkTypeRevisionMacro(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