1 //*******************************************************************
2 //
3 // License:  See top level LICENSE.txt file.
4 //
5 // Author: Garrett Potts
6 //
7 // Description:
8 //
9 // SevenParamDatum. This is a base class for all
10 // seven param datums.
11 //*******************************************************************
12 //  $Id: ossimSevenParamDatum.h 19795 2011-06-30 15:04:48Z gpotts $
13 
14 #ifndef ossimSevenParamDatum_HEADER
15 #define ossimSevenParamDatum_HEADER
16 #include <ossim/base/ossimDatum.h>
17 
18 class ossimEllipsoid;
19 
20 class OSSIM_DLL ossimSevenParamDatum : public ossimDatum
21 {
22 public:
23    /**
24     *   @param code           new datum code.                               (input)
25     *   @param name           Name of the new datum                         (input)
26     *   @param SigmaX         Standard error in X in meters                 (input)
27     *   @param SigmaY         Standard error in Y in meters                 (input)
28     *   @param SigmaZ         Standard error in Z in meters                 (input)
29     *   @param southLatitude  Southern edge of validity rectangle in radians(input)
30     *   @param northLatitude  Northern edge of validity rectangle in radians(input)
31     *   @param westLongitude  Western edge of validity rectangle in radians (input)
32     *   @param eastLongitude  Eastern edge of validity rectangle in radians (input)
33     *   @param param1         X translation
34     *   @param param2         Y translation
35     *   @param param3         Z translation
36     *   @param param4         X Rotation
37     *   @param param5         Y Rotation
38     *   @param param6         Z Rotation
39     *   @param param7         x,y,z Scale
40     */
ossimSevenParamDatum(const ossimString & code,const ossimString & name,const ossimEllipsoid * anEllipsoid,ossim_float64 sigmaX,ossim_float64 sigmaY,ossim_float64 sigmaZ,ossim_float64 westLongitude,ossim_float64 eastLongitude,ossim_float64 southLatitude,ossim_float64 northLatitude,ossim_float64 aParam1,ossim_float64 aParam2,ossim_float64 aParam3,ossim_float64 aParam4,ossim_float64 aParam5,ossim_float64 aParam6,ossim_float64 aParam7)41    ossimSevenParamDatum(const ossimString &code, const ossimString &name,
42                         const ossimEllipsoid* anEllipsoid,
43                         ossim_float64 sigmaX,
44                         ossim_float64 sigmaY,
45                         ossim_float64 sigmaZ,
46                         ossim_float64 westLongitude,
47                         ossim_float64 eastLongitude,
48                         ossim_float64 southLatitude,
49                         ossim_float64 northLatitude,
50                         ossim_float64 aParam1,
51                         ossim_float64 aParam2,
52                         ossim_float64 aParam3,
53                         ossim_float64 aParam4,
54                         ossim_float64 aParam5,
55                         ossim_float64 aParam6,
56                         ossim_float64 aParam7)
57       : ossimDatum(code, name, anEllipsoid,
58                    sigmaX, sigmaY, sigmaZ,
59                    westLongitude, eastLongitude,
60                    southLatitude, northLatitude),
61         theParam1(aParam1),
62         theParam2(aParam2),
63         theParam3(aParam3),
64         theParam4(aParam4),
65         theParam5(aParam5),
66         theParam6(aParam6),
67         theParam7(aParam7)
68       {}
69 
70 
71    /*!
72     * Will shift the ground point relative to this datum.
73     */
74    ossimGpt         shift(const ossimGpt    &aPt)const;
75    virtual ossimGpt shiftToWgs84(const ossimGpt &aPt)const;
76    virtual ossimGpt shiftFromWgs84(const ossimGpt &aPt)const;
77 
param1()78    virtual ossim_float64 param1()const{return theParam1;}
param2()79    virtual ossim_float64 param2()const{return theParam2;}
param3()80    virtual ossim_float64 param3()const{return theParam3;}
param4()81    virtual ossim_float64 param4()const{return theParam4;}
param5()82    virtual ossim_float64 param5()const{return theParam5;}
param6()83    virtual ossim_float64 param6()const{return theParam6;}
param7()84    virtual ossim_float64 param7()const{return theParam7;}
85    virtual bool isEqualTo(const ossimObject& obj, ossimCompareType compareType=OSSIM_COMPARE_FULL)const;
86 
87 private:
88    ossim_float64 theParam1;
89    ossim_float64 theParam2;
90    ossim_float64 theParam3;
91    ossim_float64 theParam4;
92    ossim_float64 theParam5;
93    ossim_float64 theParam6;
94    ossim_float64 theParam7;
95 
96    TYPE_DATA;
97 };
98 
99 #endif
100