![]() |
ATC
Advanced Trip Computer
|
00001 00006 #define EST 1 00007 #define WEST -1 00008 00012 class Longitude { 00013 00014 private: 00015 00016 int orientation; // -1 => W, +1 => E 00017 unsigned int degree; // gradi 00018 unsigned int minute; // primi 00019 unsigned int second; // secondi 00020 00021 public: 00022 00031 Longitude(unsigned int d=0, unsigned int m=0, unsigned int s=0, int o=1) 00032 { 00033 degree = 0; 00034 minute = 0; 00035 second = 0; 00036 orientation = 1; 00037 if (d<=179 && m<=59 && s<=59) 00038 { 00039 degree = d; minute = m; second = s; 00040 } 00041 else 00042 { 00043 if (d==180 && m==0 && s==0) 00044 { 00045 degree = d; minute = 0; second = 0; 00046 } 00047 else 00048 return; 00049 } 00050 if (o>=0) 00051 orientation = +1; 00052 else 00053 orientation = -1; 00054 } 00058 int getOrientation(void) 00059 { 00060 return orientation; 00061 } 00065 unsigned int getDegree(void) 00066 { 00067 return degree; 00068 } 00072 unsigned int getMinute(void) 00073 { 00074 return minute; 00075 } 00079 unsigned int getSecond(void) 00080 { 00081 return second; 00082 } 00086 double getLongitude(void) 00087 { 00088 double longitude = (double)degree + (double)minute/60. + (double)second/3600.; 00089 00090 if (orientation < 0) 00091 return (-longitude); 00092 else 00093 return longitude; 00094 } 00095 };