1 #ifndef SZA_UTIL_DECANGLE_H
2 #define SZA_UTIL_DECANGLE_H
11 #include "carma/szautil/Angle.h"
16 class DecAngle :
public Angle {
29 virtual ~DecAngle() {};
31 inline double arcMinutes() {
32 return radians_ * arcMinPerRad_;
35 inline double arcSeconds() {
36 return radians_ * arcSecPerRad_;
42 DecAngle operator+(DecAngle& angle) {
44 sum.setRadians(radians_);
45 sum.addRadians(angle.radians());
52 DecAngle operator-(DecAngle& angle) {
54 diff.setRadians(radians_);
55 diff.addRadians(-angle.radians());
59 inline int getIntegerDegrees() {
60 bool neg = radians_ < 0.0;
61 double arad = fabs(radians_);
62 unsigned degs = (unsigned)(arad * degPerRad_);
64 return (neg ? -1 : 1)*degs;
67 inline unsigned getIntegerArcMinutes() {
68 double arad = fabs(radians_);
69 unsigned degs = (unsigned)(arad * degPerRad_);
70 unsigned mins = (unsigned)((arad * degPerRad_ - degs)*60);
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);
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);
92 static const double arcSecPerRad_ = 206265;
93 static const double arcMinPerRad_ = 206265.0 / 60;
102 #endif // End #ifndef SZA_UTIL_DECANGLE_H