00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00028
#ifndef __vtkLinearTransform_h
00029
#define __vtkLinearTransform_h
00030
00031
#include "vtkHomogeneousTransform.h"
00032
00033 class VTK_COMMON_EXPORT vtkLinearTransform :
public vtkHomogeneousTransform
00034 {
00035
public:
00036
00037 vtkTypeRevisionMacro(vtkLinearTransform,
vtkHomogeneousTransform);
00038
void PrintSelf(ostream& os,
vtkIndent indent);
00039
00041
00043 void TransformNormal(
const float in[3],
float out[3]) {
00044 this->
Update(); this->InternalTransformNormal(in,out); };
00046
00048
00050 void TransformNormal(
const double in[3],
double out[3]) {
00051 this->
Update(); this->InternalTransformNormal(in,out); };
00053
00055
00057 double *TransformNormal(
double x,
double y,
double z) {
00058
return this->TransformDoubleNormal(x,y,z); }
00059 double *TransformNormal(
const double normal[3]) {
00060
return this->TransformDoubleNormal(normal[0],normal[1],normal[2]); };
00062
00064
00066 float *TransformFloatNormal(
float x,
float y,
float z) {
00067 this->InternalFloatPoint[0] = x;
00068 this->InternalFloatPoint[1] = y;
00069 this->InternalFloatPoint[2] = z;
00070 this->TransformNormal(this->InternalFloatPoint,this->InternalFloatPoint);
00071
return this->InternalFloatPoint; };
00072 float *TransformFloatNormal(
const float normal[3]) {
00073
return this->TransformFloatNormal(normal[0],normal[1],normal[2]); };
00075
00077
00079 double *TransformDoubleNormal(
double x,
double y,
double z) {
00080 this->InternalDoublePoint[0] = x;
00081 this->InternalDoublePoint[1] = y;
00082 this->InternalDoublePoint[2] = z;
00083 this->TransformNormal(this->InternalDoublePoint,this->InternalDoublePoint);
00084
return this->InternalDoublePoint; };
00085 double *TransformDoubleNormal(
const double normal[3]) {
00086
return this->TransformDoubleNormal(normal[0],normal[1],normal[2]); };
00088
00090
00092 double *TransformVector(
double x,
double y,
double z) {
00093
return this->TransformDoubleVector(x,y,z); }
00094 double *TransformVector(
const double normal[3]) {
00095
return this->TransformDoubleVector(normal[0],normal[1],normal[2]); };
00097
00099
00101 void TransformVector(
const float in[3],
float out[3]) {
00102 this->
Update(); this->InternalTransformVector(in,out); };
00104
00106
00108 void TransformVector(
const double in[3],
double out[3]) {
00109 this->
Update(); this->InternalTransformVector(in,out); };
00111
00113
00115 float *TransformFloatVector(
float x,
float y,
float z) {
00116 this->InternalFloatPoint[0] = x;
00117 this->InternalFloatPoint[1] = y;
00118 this->InternalFloatPoint[2] = z;
00119 this->TransformVector(this->InternalFloatPoint,this->InternalFloatPoint);
00120
return this->InternalFloatPoint; };
00121 float *TransformFloatVector(
const float vec[3]) {
00122
return this->TransformFloatVector(vec[0],vec[1],vec[2]); };
00124
00126
00128 double *TransformDoubleVector(
double x,
double y,
double z) {
00129 this->InternalDoublePoint[0] = x;
00130 this->InternalDoublePoint[1] = y;
00131 this->InternalDoublePoint[2] = z;
00132 this->TransformVector(this->InternalDoublePoint,this->InternalDoublePoint);
00133
return this->InternalDoublePoint; };
00134 double *TransformDoubleVector(
const double vec[3]) {
00135
return this->TransformDoubleVector(vec[0],vec[1],vec[2]); };
00137
00140
void TransformPoints(
vtkPoints *inPts,
vtkPoints *outPts);
00141
00144
virtual void TransformNormals(
vtkDataArray *inNms,
vtkDataArray *outNms);
00145
00148
virtual void TransformVectors(
vtkDataArray *inVrs,
vtkDataArray *outVrs);
00149
00151
00153
void TransformPointsNormalsVectors(
vtkPoints *inPts,
00154
vtkPoints *outPts,
00155
vtkDataArray *inNms,
00156
vtkDataArray *outNms,
00157
vtkDataArray *inVrs,
00158
vtkDataArray *outVrs);
00160
00162
00164 vtkLinearTransform *GetLinearInverse() {
00165
return (vtkLinearTransform *)this->
GetInverse(); };
00167
00169
00171
void InternalTransformPoint(
const float in[3],
float out[3]);
00172
void InternalTransformPoint(
const double in[3],
double out[3]);
00174
00176
00178
virtual void InternalTransformNormal(
const float in[3],
float out[3]);
00179
virtual void InternalTransformNormal(
const double in[3],
double out[3]);
00181
00183
00185
virtual void InternalTransformVector(
const float in[3],
float out[3]);
00186
virtual void InternalTransformVector(
const double in[3],
double out[3]);
00188
00190
00192
void InternalTransformDerivative(
const float in[3],
float out[3],
00193
float derivative[3][3]);
00194
void InternalTransformDerivative(
const double in[3],
double out[3],
00195
double derivative[3][3]);
00197
00198
protected:
00199 vtkLinearTransform() {};
00200 ~vtkLinearTransform() {};
00201
private:
00202 vtkLinearTransform(
const vtkLinearTransform&);
00203
void operator=(
const vtkLinearTransform&);
00204 };
00205
00206
#endif
00207
00208
00209
00210
00211