Changeset 1759 for trunk/MagicSoft/Cosy/base/timer.cc
- Timestamp:
- 02/14/03 23:21:35 (22 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/MagicSoft/Cosy/base/timer.cc
r926 r1759 4 4 #include <iostream.h> 5 5 6 #include "math.h"// modf6 #include <math.h> // modf 7 7 #include "sys/time.h" // struct timeval 8 8 #include "slalib/slalib.h" // slacldj … … 22 22 tv_sec /= 24; 23 23 24 fDay = tv_sec%365; 25 tv_sec /= 365; 24 Set(tv_sec + 40587); 26 25 27 fYea = tv_sec+1970; 26 fDiv = fmod((fMs+fSecs)/(60*60*24), 1.0); 27 } 28 28 29 fDay -= (fYea-1972)/4; 29 void Timer::Set(const long mjd) 30 { 31 // 32 // Express day in Gregorian calendar 33 // (taken from slalib slaDjcl) 34 // 35 fMjd = mjd; 30 36 31 int days = fDay; 37 const long jd = mjd + 2400001; 38 const long n4 = (((((jd*4-17918)/146097)*6)/4+1)/2+jd-37)*4; 39 const long nd10 = (((n4-237)%1461)/4)*10+5; 32 40 33 fMon=0; 34 do fDay -= fDays[fMon++]; 35 while (fDay>0); 36 37 int i=1; 38 while (i<fMon) 39 days -= fDays[i++]; 40 41 fDay = days; 42 43 double dummy; 44 fDiv = modf((fMs+fSecs)/(60*60*24), &dummy); 41 fYea = n4/1461 - 4712; 42 fMon = ((nd10/306+2)%12) + 1; 43 fDay = (nd10%306)/10 + 1; 45 44 } 46 45 … … 73 72 fMon = t.fMon; 74 73 fYea = t.fYea; 74 fMjd = t.fMjd; 75 } 76 77 void Timer::SetMjd(double mjd) 78 { 79 Set((long)mjd); 80 81 fDiv = fmod(mjd, 1.0); 82 83 mjd -= 40587; 84 85 mjd *= 24; 86 fHor = (int)mjd; 87 88 mjd *= 60; 89 fMin = (int)mjd; 90 91 mjd *= 60; 92 fSec = (int)mjd; 93 94 fMs = mjd * 1000; 75 95 } 76 96 … … 83 103 84 104 return fMs+fSecs; 85 }86 87 double Timer::CalcMjd()88 {89 int status;90 double mjd=0;91 slaCldj(fYea, fMon, fDay, &mjd, &status);92 93 if (status)94 cout << "Warning: slaCldj returned " << status << endl;95 96 return mjd + fDiv;97 105 } 98 106 … … 115 123 } 116 124 117 const int Timer::fDays[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
Note:
See TracChangeset
for help on using the changeset viewer.