00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00025 #ifndef __vtkHomogeneousTransform_h
00026 #define __vtkHomogeneousTransform_h
00027
00028 #include "vtkAbstractTransform.h"
00029
00030 class vtkMatrix4x4;
00031
00032 class VTK_COMMON_EXPORT vtkHomogeneousTransform : public vtkAbstractTransform
00033 {
00034 public:
00035
00036 vtkTypeRevisionMacro(vtkHomogeneousTransform,vtkAbstractTransform);
00037 void PrintSelf(ostream& os, vtkIndent indent);
00038
00041 void TransformPoints(vtkPoints *inPts, vtkPoints *outPts);
00042
00044
00046 virtual void TransformPointsNormalsVectors(vtkPoints *inPts,
00047 vtkPoints *outPts,
00048 vtkDataArray *inNms,
00049 vtkDataArray *outNms,
00050 vtkDataArray *inVrs,
00051 vtkDataArray *outVrs);
00053
00056 void GetMatrix(vtkMatrix4x4 *m);
00057
00062 vtkMatrix4x4 *GetMatrix() { this->Update(); return this->Matrix; };
00063
00065
00067 vtkHomogeneousTransform *GetHomogeneousInverse() {
00068 return (vtkHomogeneousTransform *)this->GetInverse(); };
00070
00072
00074 void InternalTransformPoint(const float in[3], float out[3]);
00075 void InternalTransformPoint(const double in[3], double out[3]);
00077
00079
00081 void InternalTransformDerivative(const float in[3], float out[3],
00082 float derivative[3][3]);
00083 void InternalTransformDerivative(const double in[3], double out[3],
00084 double derivative[3][3]);
00086
00087 protected:
00088 vtkHomogeneousTransform();
00089 ~vtkHomogeneousTransform();
00090
00091 void InternalDeepCopy(vtkAbstractTransform *transform);
00092
00093 vtkMatrix4x4 *Matrix;
00094
00095 private:
00096 vtkHomogeneousTransform(const vtkHomogeneousTransform&);
00097 void operator=(const vtkHomogeneousTransform&);
00098 };
00099
00100 #endif
00101
00102
00103
00104
00105