1 //*******************************************************************
2 //
3 // License:  See top level LICENSE.txt file.
4 //
5 // Author: Garrett Potts (gpotts@imagelinks.com)
6 //
7 // Description:
8 //
9 // ossimThreeParamDatum. This is a base class for all
10 // three param datums.
11 //*******************************************************************
12 //  $Id: ossimThreeParamDatum.h 19795 2011-06-30 15:04:48Z gpotts $
13 
14 #ifndef ossimThreeParamDatum_HEADER
15 #define ossimThreeParamDatum_HEADER
16 #include <ossim/base/ossimDatum.h>
17 
18 class OSSIMDLLEXPORT ossimThreeParamDatum : public ossimDatum
19 {
20 public:
21    /**
22     *   @param code           new datum code.                               (input)
23     *   @param name           Name of the new datum                         (input)
24     *   @param SigmaX         Standard error in X in meters                 (input)
25     *   @param SigmaY         Standard error in Y in meters                 (input)
26     *   @param SigmaZ         Standard error in Z in meters                 (input)
27     *   @param southLatitude  Southern edge of validity rectangle in radians(input)
28     *   @param northLatitude  Northern edge of validity rectangle in radians(input)
29     *   @param westLongitude  Western edge of validity rectangle in radians (input)
30     *   @param eastLongitude  Eastern edge of validity rectangle in radians (input)
31     *   @param param1         X translation
32     *   @param param2         Y translation
33     *   @param param3         Z translation
34     */
35    ossimThreeParamDatum(const ossimString &code, const ossimString &name,
36                         const ossimEllipsoid* anEllipsoid,
37                         ossim_float64 sigmaX,
38                         ossim_float64 sigmaY,
39                         ossim_float64 sigmaZ,
40                         ossim_float64 westLongitude,
41                         ossim_float64 eastLongitude,
42                         ossim_float64 southLatitude,
43                         ossim_float64 northLatitude,
44                         ossim_float64 param1,
45                         ossim_float64 param2,
46                         ossim_float64 param3)
47       : ossimDatum(code, name, anEllipsoid,
48               sigmaX, sigmaY, sigmaZ,
49               westLongitude, eastLongitude,
50               southLatitude, northLatitude),
51         theParam1(param1),
52         theParam2(param2),
53         theParam3(param3)
54       {}
55    virtual ~ossimThreeParamDatum(){}
56 
57    /*!
58     * Will shift a ground point to this datum.  If they are the same
59     * datum then nothing happens.
60     */
61    virtual ossimGpt    shift(const ossimGpt    &aPt)const;
62 
63    virtual ossimGpt    shiftToWgs84(const ossimGpt &aPt)const;
64    virtual ossimGpt    shiftFromWgs84(const ossimGpt &aPt)const;
65    virtual ossim_float64 param1()const{return theParam1;}
66    virtual ossim_float64 param2()const{return theParam2;}
67    virtual ossim_float64 param3()const{return theParam3;}
68    virtual ossim_float64 param4()const{return 0.0;}
~ossimThinPlateSpline()69    virtual ossim_float64 param5()const{return 0.0;}
70    virtual ossim_float64 param6()const{return 0.0;}
71    virtual ossim_float64 param7()const{return 1.0;}
72 
73    virtual bool isEqualTo(const ossimObject& obj, ossimCompareType compareType=OSSIM_COMPARE_FULL)const;
74 
75 protected:
76 
77    ossim_float64 theParam1;
78    ossim_float64 theParam2;
79    ossim_float64 theParam3;
80 
getNumberOfPoints()81    TYPE_DATA;
82 };
83 
84 
setToler(double tx,double ty)85 #endif
86