100 REM The predictions assume the Red Spot is at Jovian System II 105 REM longitude 93°, the most recent value provided by John W. 110 REM McAnally of the Association of Lunar 120 REM and Planetary Observers. If it has moved elsewhere, it 125 REM will transit 1 2/3 minutes late for every 1° of longitude 130 REM greater than 93° or 1 2/3 minutes early for every 1° less than 135 REM 93°. 140 REM

Features on Jupiter appear closer to the central meridian 145 REM than to the limb — and thus are well placed for viewing — for 150 REM 50 minutes before and after their transit times 155 REM 160 REM ******************* 165 REM *** FEATURE.BAS *** 170 REM ******************* 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. 200 REM 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 270 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 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