00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00028
#ifndef __vtkWarpTransform_h
00029
#define __vtkWarpTransform_h
00030
00031
#include "vtkAbstractTransform.h"
00032
00033 class VTK_COMMON_EXPORT vtkWarpTransform :
public vtkAbstractTransform
00034 {
00035
public:
00036
00037 vtkTypeRevisionMacro(vtkWarpTransform,
vtkAbstractTransform);
00038
void PrintSelf(ostream& os,
vtkIndent indent);
00039
00044
void Inverse();
00045
00047
00050 vtkGetMacro(InverseFlag,
int);
00052
00054
00055 vtkSetMacro(InverseTolerance,
double);
00056 vtkGetMacro(InverseTolerance,
double);
00058
00060
00064 vtkSetMacro(InverseIterations,
int);
00065 vtkGetMacro(InverseIterations,
int);
00067
00069
00071
void InternalTransformPoint(
const float in[3],
float out[3]);
00072
void InternalTransformPoint(
const double in[3],
double out[3]);
00074
00076
00078
void InternalTransformDerivative(
const float in[3],
float out[3],
00079
float derivative[3][3]);
00080
void InternalTransformDerivative(
const double in[3],
double out[3],
00081
double derivative[3][3]);
00083
00085
00089 void TemplateTransformPoint(
const float in[3],
float out[3]) {
00090 this->ForwardTransformPoint(in,out); };
00091 void TemplateTransformPoint(
const double in[3],
double out[3]) {
00092 this->ForwardTransformPoint(in,out); };
00093 void TemplateTransformPoint(
const float in[3],
float out[3],
00094
float derivative[3][3]) {
00095 this->ForwardTransformDerivative(in,out,derivative); };
00096 void TemplateTransformPoint(
const double in[3],
double out[3],
00097
double derivative[3][3]) {
00098 this->ForwardTransformDerivative(in,out,derivative); };
00099 void TemplateTransformInverse(
const float in[3],
float out[3]) {
00100 this->InverseTransformPoint(in,out); };
00101 void TemplateTransformInverse(
const double in[3],
double out[3]) {
00102 this->InverseTransformPoint(in,out); };
00103 void TemplateTransformInverse(
const float in[3],
float out[3],
00104
float derivative[3][3]) {
00105 this->InverseTransformDerivative(in,out,derivative); };
00106 void TemplateTransformInverse(
const double in[3],
double out[3],
00107
double derivative[3][3]) {
00108 this->InverseTransformDerivative(in,out,derivative); };
00110
00111
protected:
00112 vtkWarpTransform();
00113 ~vtkWarpTransform();
00114
00116
00118
virtual void ForwardTransformPoint(
const float in[3],
float out[3]) = 0;
00119
virtual void ForwardTransformPoint(
const double in[3],
double out[3]) = 0;
00121
00123
00124
virtual void ForwardTransformDerivative(
const float in[3],
float out[3],
00125
float derivative[3][3]) = 0;
00126
virtual void ForwardTransformDerivative(
const double in[3],
double out[3],
00127
double derivative[3][3]) = 0;
00129
00131
00134
virtual void InverseTransformPoint(
const float in[3],
float out[3]);
00135
virtual void InverseTransformPoint(
const double in[3],
double out[3]);
00137
00139
00142
virtual void InverseTransformDerivative(
const float in[3],
float out[3],
00143
float derivative[3][3]);
00144
virtual void InverseTransformDerivative(
const double in[3],
double out[3],
00145
double derivative[3][3]);
00147
00148 int InverseFlag;
00149 int InverseIterations;
00150 double InverseTolerance;
00151
private:
00152 vtkWarpTransform(
const vtkWarpTransform&);
00153
void operator=(
const vtkWarpTransform&);
00154 };
00155
00156
#endif
00157
00158
00159
00160
00161