CARMA C++
HourAngle.h
1 #ifndef SZA_UTIL_HOURANGLE_H
2 #define SZA_UTIL_HOURANGLE_H
3 
11 #include "carma/szautil/Angle.h"
12 #include "carma/szautil/Debug.h"
13 
14 namespace sza {
15  namespace util {
16 
17  class HourAngle : public Angle {
18  public:
19 
23  HourAngle() : Angle(true) {};
24 
28  void setHours(double hours);
29  void setHours(std::string hours);
30  void setHours(double hour, double min, double sec);
31 
35  virtual ~HourAngle();
36 
40  inline double hours() {
41  return radians_ * hourPerRad_;
42  }
43 
47  inline double seconds() {
48  return radians_ * arcSecPerRad_;
49  }
50 
51  inline unsigned getIntegerHours() {
52  unsigned hours = (unsigned)(radians_ * hourPerRad_);
53  return hours;
54  }
55 
56  inline unsigned getIntegerMinutes() {
57  unsigned hours = (unsigned)(radians_ * hourPerRad_);
58  unsigned mins = (unsigned)((radians_ * hourPerRad_ - hours)*60);
59  return mins;
60  }
61 
62 
63  inline unsigned getIntegerSeconds() {
64  unsigned hours = (unsigned)(radians_ * hourPerRad_);
65  unsigned mins = (unsigned)((radians_ * hourPerRad_ - hours)*60);
66  unsigned secs = (unsigned)(((radians_ * hourPerRad_ - hours)*60 - mins)*60);
67  return secs;
68  }
69 
70  inline unsigned getIntegerMilliSeconds() {
71  unsigned hours = (unsigned)(radians_ * hourPerRad_);
72  unsigned mins = (unsigned)((radians_ * hourPerRad_ - hours)*60);
73  unsigned secs = (unsigned)(((radians_ * hourPerRad_ - hours)*60 - mins)*60);
74  return (unsigned)((((radians_ * hourPerRad_ - hours)*60 - mins)*60 - secs) * 1000);
75  }
76 
80  friend std::ostream& operator<<(std::ostream& os, HourAngle& hour);
81 
85  HourAngle operator+(HourAngle& angle);
86 
90  HourAngle operator-(HourAngle& angle);
91 
92  static const double hourPerRad_;
93  static const double arcSecPerRad_;
94  static const double arcSecPerSec_;
95 
96  }; // End class HourAngle
97 
98  } // End namespace util
99 } // End namespace sza
100 
101 #endif // End #ifndef SZA_UTIL_HOURANGLE_H
Started: Wed Jan 14 11:00:24 PST 2004.