CARMA C++
DecAngle.h
1 #ifndef SZA_UTIL_DECANGLE_H
2 #define SZA_UTIL_DECANGLE_H
3 
11 #include "carma/szautil/Angle.h"
12 
13 namespace sza {
14  namespace util {
15 
16  class DecAngle : public Angle {
17  public:
18 
22  DecAngle() {
23  initialize();
24  };
25 
29  virtual ~DecAngle() {};
30 
31  inline double arcMinutes() {
32  return radians_ * arcMinPerRad_;
33  }
34 
35  inline double arcSeconds() {
36  return radians_ * arcSecPerRad_;
37  }
38 
42  DecAngle operator+(DecAngle& angle) {
43  DecAngle sum;
44  sum.setRadians(radians_);
45  sum.addRadians(angle.radians());
46  return sum;
47  }
48 
52  DecAngle operator-(DecAngle& angle) {
53  DecAngle diff;
54  diff.setRadians(radians_);
55  diff.addRadians(-angle.radians());
56  return diff;
57  }
58 
59  inline int getIntegerDegrees() {
60  bool neg = radians_ < 0.0;
61  double arad = fabs(radians_);
62  unsigned degs = (unsigned)(arad * degPerRad_);
63 
64  return (neg ? -1 : 1)*degs;
65  }
66 
67  inline unsigned getIntegerArcMinutes() {
68  double arad = fabs(radians_);
69  unsigned degs = (unsigned)(arad * degPerRad_);
70  unsigned mins = (unsigned)((arad * degPerRad_ - degs)*60);
71  return mins;
72  }
73 
74  inline unsigned getIntegerArcSeconds() {
75  double arad = fabs(radians_);
76  unsigned degs = (unsigned)(arad * degPerRad_);
77  unsigned mins = (unsigned)((arad * degPerRad_ - degs)*60);
78  unsigned secs = (unsigned)(((arad * degPerRad_ - degs)*60 - mins)*60);
79  return secs;
80  }
81 
82  inline unsigned getIntegerMilliArcSeconds() {
83  double arad = fabs(radians_);
84  unsigned degs = (unsigned)(arad * degPerRad_);
85  unsigned mins = (unsigned)((arad * degPerRad_ - degs)*60);
86  unsigned secs = (unsigned)(((arad * degPerRad_ - degs)*60 - mins)*60);
87  return (unsigned)((((arad * degPerRad_ - degs)*60 - mins)*60 - secs) * 1000);
88  }
89 
90  private:
91 
92  static const double arcSecPerRad_ = 206265;
93  static const double arcMinPerRad_ = 206265.0 / 60;
94 
95  }; // End class DecAngle
96 
97  } // End namespace util
98 } // End namespace sza
99 
100 
101 
102 #endif // End #ifndef SZA_UTIL_DECANGLE_H