CARMA C++
Ellipsoid.h
Go to the documentation of this file.
1 #ifndef SZA_UTIL_ELLIPSOID_H
2 #define SZA_UTIL_ELLIPSOID_H
3 
11 #include "carma/szautil/Angle.h"
12 #include "carma/szautil/Length.h"
13 
14 namespace sza {
15  namespace util {
16 
17  class Ellipsoid {
18  public:
19 
23  Ellipsoid();
24  Ellipsoid(Length majorAxis, Length minorAxis);
25  Ellipsoid(Length majorAxis, double flattening);
26 
30  virtual ~Ellipsoid();
31 
32  void setMajorAxisAndFlattening(Length majorAxis, double flattening);
33  void setMajorMinorAxis(Length majorAxis, Length minorAxis);
34 
39  virtual double flattening();
40  Length majorAxis();
41  Length minorAxis();
42 
46  virtual double firstEccentricity();
47  virtual double firstEccentricitySquared();
48  virtual double secondEccentricity();
49  virtual double secondEccentricitySquared();
50 
55  Length radius(Angle latitude);
56 
57  private:
58 
59  bool initialized_;
60 
61  // The semi-major and semi-minor axes of this ellipsoid
62 
63  Length a_;
64  Length b_;
65 
66  void checkInitialization();
67 
68  }; // End class Ellipsoid
69 
70  } // End namespace util
71 } // End namespace sza
72 
73 
74 
75 #endif // End #ifndef SZA_UTIL_ELLIPSOID_H