25 #include "midiGlobal.h"
66 const char routine[] =
"computeUVW";
67 double GST, LST, T0, T, UTdate, UTtime, julianDate, hourAngle, dx, dy, dz,
68 ihar, decr, cha, sha, cdec, sdec, clat, slat;
72 if (diagnostic > 4)cpl_msg_info(cpl_func,
"Invoking routine '%s' \n", routine);
73 if (diagnostic > 4) fprintf(midiReportPtr,
"Invoking routine '%s' \n", routine);
80 julianDate = time + 2400000.5;
82 if ((julianDate - floor (julianDate)) > 0.5)
83 UTdate = floor (julianDate) + 0.5;
85 UTdate = floor (julianDate) - 0.5;
88 UTtime = 24.0 * (julianDate - UTdate);
90 T = (UTdate - 2451545.0) / 36525.0;
91 T0 = 6.697374558 + (2400.051336 * T) + (0.000025862 * T * T) + (UTtime * 1.0027379093);
92 GST = 24 * (T0 / 24.0 - floor (T0 / 24.0));
95 LST = GST - LONGITUDE_PARANAL * (12.0 / MIDI_PI);
96 if (LST < 0) LST = LST + 24.0;
97 LST = 24 * (LST / 24.0 - floor (LST / 24.0));
100 hourAngle = LST - RA * 12.0 / 180.0;
106 ihar = hourAngle * MIDI_PI / 12.0;
107 decr = Dec * MIDI_PI / 180.0;
112 clat = cos (LATITUDE_PARANAL);
113 slat = sin (LATITUDE_PARANAL);
115 uvw->uCoord = dx * cha - dy * (slat * sha) + dz * (clat * sha);
116 uvw->vCoord = dx * (sha * sdec) + dy * (slat * cha * sdec + clat * cdec) - dz * (clat * cha * sdec - slat * cdec);