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 __vtkLinearTransform_h
00053 #define __vtkLinearTransform_h
00054
00055 #include "vtkHomogeneousTransform.h"
00056
00057 class VTK_EXPORT vtkLinearTransform : public vtkHomogeneousTransform
00058 {
00059 public:
00060
00061 vtkTypeMacro(vtkLinearTransform,vtkHomogeneousTransform);
00062 void PrintSelf(ostream& os, vtkIndent indent);
00063
00066 void TransformNormal(const float in[3], float out[3]) {
00067 this->Update(); this->InternalTransformNormal(in,out); };
00068
00071 void TransformNormal(const double in[3], double out[3]) {
00072 this->Update(); this->InternalTransformNormal(in,out); };
00073
00076 double *TransformNormal(double x, double y, double z) {
00077 return this->TransformDoubleNormal(x,y,z); }
00078 double *TransformNormal(const double normal[3]) {
00079 return this->TransformDoubleNormal(normal[0],normal[1],normal[2]); };
00080
00083 float *TransformFloatNormal(float x, float y, float z) {
00084 this->InternalFloatPoint[0] = x;
00085 this->InternalFloatPoint[1] = y;
00086 this->InternalFloatPoint[2] = z;
00087 this->TransformNormal(this->InternalFloatPoint,this->InternalFloatPoint);
00088 return this->InternalFloatPoint; };
00089 float *TransformFloatNormal(const float normal[3]) {
00090 return this->TransformFloatNormal(normal[0],normal[1],normal[2]); };
00091
00094 double *TransformDoubleNormal(double x, double y, double z) {
00095 this->InternalDoublePoint[0] = x;
00096 this->InternalDoublePoint[1] = y;
00097 this->InternalDoublePoint[2] = z;
00098 this->TransformNormal(this->InternalDoublePoint,this->InternalDoublePoint);
00099 return this->InternalDoublePoint; };
00100 double *TransformDoubleNormal(const double normal[3]) {
00101 return this->TransformDoubleNormal(normal[0],normal[1],normal[2]); };
00102
00105 double *TransformVector(double x, double y, double z) {
00106 return this->TransformDoubleVector(x,y,z); }
00107 double *TransformVector(const double normal[3]) {
00108 return this->TransformDoubleVector(normal[0],normal[1],normal[2]); };
00109
00112 void TransformVector(const float in[3], float out[3]) {
00113 this->Update(); this->InternalTransformVector(in,out); };
00114
00117 void TransformVector(const double in[3], double out[3]) {
00118 this->Update(); this->InternalTransformVector(in,out); };
00119
00122 float *TransformFloatVector(float x, float y, float z) {
00123 this->InternalFloatPoint[0] = x;
00124 this->InternalFloatPoint[1] = y;
00125 this->InternalFloatPoint[2] = z;
00126 this->TransformVector(this->InternalFloatPoint,this->InternalFloatPoint);
00127 return this->InternalFloatPoint; };
00128 float *TransformFloatVector(const float vec[3]) {
00129 return this->TransformFloatVector(vec[0],vec[1],vec[2]); };
00130
00133 double *TransformDoubleVector(double x, double y, double z) {
00134 this->InternalDoublePoint[0] = x;
00135 this->InternalDoublePoint[1] = y;
00136 this->InternalDoublePoint[2] = z;
00137 this->TransformVector(this->InternalDoublePoint,this->InternalDoublePoint);
00138 return this->InternalDoublePoint; };
00139 double *TransformDoubleVector(const double vec[3]) {
00140 return this->TransformDoubleVector(vec[0],vec[1],vec[2]); };
00141
00144 void TransformPoints(vtkPoints *inPts, vtkPoints *outPts);
00145
00148 virtual void TransformNormals(vtkNormals *inNms, vtkNormals *outNms);
00149
00152 virtual void TransformVectors(vtkVectors *inVrs, vtkVectors *outVrs);
00153
00156 void TransformPointsNormalsVectors(vtkPoints *inPts,
00157 vtkPoints *outPts,
00158 vtkNormals *inNms,
00159 vtkNormals *outNms,
00160 vtkVectors *inVrs,
00161 vtkVectors *outVrs);
00162
00165 vtkLinearTransform *GetLinearInverse() {
00166 return (vtkLinearTransform *)this->GetInverse(); };
00167
00170 void InternalTransformPoint(const float in[3], float out[3]);
00171 void InternalTransformPoint(const double in[3], double out[3]);
00172
00175 virtual void InternalTransformNormal(const float in[3], float out[3]);
00176 virtual void InternalTransformNormal(const double in[3], double out[3]);
00177
00180 virtual void InternalTransformVector(const float in[3], float out[3]);
00181 virtual void InternalTransformVector(const double in[3], double out[3]);
00182
00185 void InternalTransformDerivative(const float in[3], float out[3],
00186 float derivative[3][3]);
00187 void InternalTransformDerivative(const double in[3], double out[3],
00188 double derivative[3][3]);
00189
00190 protected:
00191 vtkLinearTransform() {};
00192 ~vtkLinearTransform() {};
00193 vtkLinearTransform(const vtkLinearTransform&) {};
00194 void operator=(const vtkLinearTransform&) {};
00195 };
00196
00197 #endif
00198
00199
00200
00201
00202