00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00030 #ifndef __vtkGeoTransform_h
00031 #define __vtkGeoTransform_h
00032
00033 #include "vtkAbstractTransform.h"
00034
00035 class vtkGeoProjection;
00036
00037 class VTK_GEOVIS_EXPORT vtkGeoTransform : public vtkAbstractTransform
00038 {
00039 public:
00040 static vtkGeoTransform* New();
00041 virtual void PrintSelf( ostream& os, vtkIndent indent );
00042 vtkTypeMacro(vtkGeoTransform,vtkAbstractTransform);
00043
00045
00046 void SetSourceProjection(vtkGeoProjection* source);
00047 vtkGetObjectMacro(SourceProjection,vtkGeoProjection);
00049
00051
00052 void SetDestinationProjection(vtkGeoProjection* dest);
00053 vtkGetObjectMacro(DestinationProjection,vtkGeoProjection);
00055
00057 virtual void TransformPoints( vtkPoints* src, vtkPoints* dst );
00058
00060 virtual void Inverse();
00061
00063
00065 virtual void InternalTransformPoint( const float in[3], float out[3] );
00066 virtual void InternalTransformPoint( const double in[3], double out[3] );
00068
00070
00074 virtual void InternalTransformDerivative( const float in[3], float out[3], float derivative[3][3] );
00075 virtual void InternalTransformDerivative( const double in[3], double out[3], double derivative[3][3] );
00077
00079 virtual vtkAbstractTransform* MakeTransform();
00080
00081 protected:
00082 vtkGeoTransform();
00083 virtual ~vtkGeoTransform();
00084
00085 void InternalTransformPoints( double* ptsInOut, vtkIdType numPts, int stride );
00086
00087 vtkGeoProjection* SourceProjection;
00088 vtkGeoProjection* DestinationProjection;
00089
00090 private:
00091 vtkGeoTransform( const vtkGeoTransform& );
00092 void operator = ( const vtkGeoTransform& );
00093 };
00094
00095 #endif // __vtkGeoTransform_h