105 REM longitude 93°, the most recent value provided by John W. 175 REM 180 REM Modified from July 1993 Issue of Astronomy page 65 185 REM Dan Bruton, Texas A&M University (email : astro@tamu.edu) 190 REM This program computes the transit times of system II features 195 REM on Jupiter for any month. Universal Times of transit are given. 205 DEFDBL A-Z 210 ZONE = 0 215 CLS : PRINT : PRINT 220 PRINT "This program computes the transit times of system II features" 225 PRINT "on Jupiter for any month. Universal Times of transit are given." 230 PRINT : INPUT " System II Longitude of Feature (0-360, red spot = 93) : ", LON 235 PRINT : INPUT " Month (1-12) : ", MONTH 240 PRINT : INPUT " Year : ", YEAR 245 PRINT : INPUT " Output Filename (Default -> FEATURE.DAT): ", N$ 250 IF N$ = "" THEN N$ = "FEATURE.DAT" 255 260 IF MONTH = 1 THEN MON$ = "Jan": LDAY = 31 265 IF MONTH = 2 THEN MON$ = "Feb": LDAY = 28 267 IF (INT(YEAR/4)-(YEAR/4)=0)and(MONTH = 2) THEN LDAY = 29 268 IF ((INT(YEAR/100)-(YEAR/100)=0)AND(MONTH = 2)AND(ABS(INT(YEAR/400)-(YEAR/400)) > 0)) THEN LDAY = 28 271 IF MONTH = 3 THEN MON$ = "Mar": LDAY = 31 275 IF MONTH = 4 THEN MON$ = "Apr": LDAY = 30 280 IF MONTH = 5 THEN MON$ = "May": LDAY = 31 285 IF MONTH = 6 THEN MON$ = "Jun": LDAY = 30 290 IF MONTH = 7 THEN MON$ = "Jul": LDAY = 31 295 IF MONTH = 8 THEN MON$ = "Aug": LDAY = 31 300 IF MONTH = 9 THEN MON$ = "Sep": LDAY = 30 301 305 IF MONTH = 10 THEN MON$ = "Oct": LDAY = 31 310 IF MONTH = 11 THEN MON$ = "Nov": LDAY = 30 315 IF MONTH = 12 THEN MON$ = "Dec": LDAY = 31 320 325 OPEN N$ FOR OUTPUT AS #1 330 PRINT USING "System II Longitude ###.#!"; LON; CHR$(248) 335 PRINT "Transit Times": PRINT 340 PRINT " Month Day UT" 345 PRINT #1, USING "System II Longitude ###.#!"; LON; CHR$(248) 350 PRINT #1, "Transit Times": PRINT #1, 355 PRINT #1, " Month Day UT" 360 FOR NDAY = 1 TO LDAY 365 DAY = NDAY 370 DAY = DAY + ZONE / 24 + 1 / 1440 375 IF MONTH < 3 THEN YEAR = YEAR - 1: MONTH = MONTH + 12 380 A = INT(YEAR / 100): B = 2 - A + INT(A / 4) 385 JD = INT(365.25 * YEAR) + INT(30.6001 * (MONTH + 1)) 390 JD = JD + DAY + 1720994.5# + B 395 DAYS = JD - 2451545!: CEN = DAYS / 36525! 400 RTD = 57.29578 405 REM Calculate orbit of Jupiter 410 PP = 11.8567785#: PI = 1.3053 - 4.15 / 3600 * CEN 415 PE = 4.839266E-02 - .0001288 * CEN: PA = 5.20336301# + 6.0737E-04 * CEN 420 PO = 100.55615# + 1217.17 / 3600 * CEN 425 PW = 14.75385 + 839.93 / 3600 * CEN 430 PL = 34.40438 + 8.308676199999999D-02 * DAYS 435 MEAN = PL - PW: Z = MEAN / 360: MEAN = MEAN - 360 * INT(Z) 440 TRUE = MEAN + 360 / 3.14159265359# * PE * SIN(MEAN / RTD) 445 Z = TRUE / 360: TRUE = TRUE - 360 * INT(Z) 450 L = TRUE + PW: R = PA * (1 - PE * PE) / (1 + PE * COS(TRUE / RTD)) 455 SINPSI = SIN((L - PO) / RTD) * SIN(PI / RTD) 460 PSI = ATN(SINPSI / SQR(1 - SINPSI * SINPSI)) 465 NUM = SIN((L - PO) / RTD) * COS(PI / RTD): DEN = COS((L - PO) / RTD) 470 LP = ATN(NUM / DEN) * RTD + PO: IF DEN < 0 THEN LP = LP + 180 475 RP = R * COS(PSI) 480 REM Calculate Earth's orbit 485 EE = 1.671022E-02 - 3.804E-05 * CEN: EA = 1.00000011# - 5E-08 * CEN 490 EW = 102.94719# + 1198.28 / 3600 * CEN: EL = 100.46435# + .9856091 * DAYS 495 OBL = 23.43928 500 MEANE = EL - EW: Z = MEANE / 360: MEANE = MEANE - 360 * INT(Z) 505 TRUEE = MEANE + 360 / 3.14159265359# * EE * SIN(MEANE / RTD) 510 Z = TRUEE / 360: TRUEE = TRUEE - 360 * INT(Z) 515 LE = TRUEE + EW: RE = EA * (1 - EE * EE) / (1 + EE * COS(TRUEE / RTD)) 520 LAMB = RE * SIN((LP - LE) / RTD) 525 LAMB = ATN(LAMB / (RP - RE * COS((LP - LE) / RTD))) * RTD + LP 530 BETA = RP * TAN(PSI) * SIN((LAMB - LP) / RTD) 535 BETA = ATN(BETA / (RE * SIN((LP - LE) / RTD))) * RTD 540 REM Determine Jupiter's position 545 NUM = SIN(LAMB / RTD) * COS(OBL / RTD) - TAN(BETA / RTD) * SIN(OBL / RTD) 550 DEN = COS(LAMB / RTD) 555 RA = ATN(NUM / DEN) * RTD: IF NUM * DEN < 0 THEN RA = RA + 180 560 IF NUM < 0 THEN RA = RA + 180 565 SINDEC = SIN(BETA / RTD) * COS(OBL / RTD) 570 SINDEC = SINDEC + COS(BETA / RTD) * SIN(OBL / RTD) * SIN(LAMB / RTD) 575 DEC = ATN(SINDEC / SQR(1 - SINDEC * SINDEC)) * RTD 580 DSQRD = RE * RE + R * R - 2 * RE * R * COS((L - LE) / RTD) 585 DIST = SQR(DSQRD) 590 REM Compute central meridian on Jupiter at midnight 595 A0 = 268.05 - 8.999999E-03 * CEN: D0 = 64.49 + .003 * CEN 600 W0 = 43.3 + 870.27 * DAYS: Z = W0 / 360: W0 = W0 - 360 * INT(Z) 605 W1 = W0 - 870.27 * .0057755 * DIST 610 SINB = -SIN(D0 / RTD) * SIN(DEC / RTD) 615 SINB = SINB - COS(D0 / RTD) * COS(DEC / RTD) * COS((A0 - RA) / RTD) 620 COSB = SQR(1 - SINB * SINB) 625 SINK = SIN(D0 / RTD) * COS(DEC / RTD) * COS((A0 - RA) / RTD) 630 SINK = (SINK - COS(D0 / RTD) * SIN(DEC / RTD)) / COSB 635 COSK = COS(DEC / RTD) * SIN((A0 - RA) / RTD) / COSB 640 K = ATN(SINK / COSK) * RTD 645 MER = W1 - K: IF COSK < 0 THEN MER = MER + 180 650 IF MER > 360 THEN MER = MER - 360 655 DIFF = LON - MER: IF DIFF < 0 THEN DIFF = DIFF + 360 660 PRINT #1, USING "| & ## "; MON$; NDAY 665 PRINT USING "| & ## "; MON$; NDAY 670 WHILE DIFF < 870.27 675 TRAN = DIFF / 870.27 * 24: H = FIX(TRAN): M = FIX(60 * (TRAN - H)) 680 PRINT #1, USING "| ###_:"; H; : PRINT #1, USING "## "; M 685 PRINT USING "| ###_:"; H; : PRINT USING "## "; M 690 DIFF = DIFF + 360 695 WEND 700 NEXT NDAY 705 CLOSE 710 END