1 REM ******************************** 2 REM * * 3 REM * CENTRAL MERIDIAN OF JUPITER * 4 REM * English version 1.00/eng * 5 REM * * 6 REM * Program calculates central * 7 REM * meridian of Jupiter from * 8 REM * given time. * 9 REM * * 10 REM * Veikko Makela * 11 REM * 15.1.1990 * 12 REM * * 13 REM ******************************** 14 : 15 REM ********* CONSTANTS ************ 16 : 17 PI=3.1415926# 18 : 19 REM ******* SCREEN CONTROL ********* 20 REM Spectravideo 318/328 (VT52) 21 : 22 CL$=CHR$(12) :REM Clr screen 23 : 24 REM ********** FUNCTIONS *********** 25 : 26 DEF FN R(X)=X/180*PI :REM TO RADIANS 27 DEF FN DG(W)=W/PI*180 :REM TO DEGREES 28 DEF FN MK(Z#)=(Z#/360-INT(Z#/360))*360 :REM CONVERT BIG ANGLES 29 DEF FN AS(Q)=ATN(Q/SQR(-Q*Q+1+1E-09)) :REM ARCSIN(Q) 30 : 31 REM ******************************** 32 : 33 GOTO 166 :REM ->MAIN PROGRAM 34 : 35 REM ********* CHECK DATE *********** 36 : 37 REM Subroutine checks if the date 38 REM is valid. 39 : 40 IF P<1 OR P>31 THEN ER=1 41 IF K<1 OR K>12 THEN ER=1 42 : 43 RETURN 44 : 45 REM ********* CHECK TIME *********** 46 : 47 REM Subroutine checks if the time 48 REM is valid. 49 : 50 IF H<0 OR H>23 THEN ER=1 51 IF M<0 OR M>59 THEN ER=1 52 IF S<0 OR S>59 THEN ER=1 53 : 54 RETURN 55 : 56 REM ********** READ TIME ************ 57 : 58 REM Subroutine reads the date and 59 REM the time and check if they are 60 REM valid. 61 : 62 ER=0 63 PRINT 64 PRINT "ENTER DAY,MONTH,YEAR" 65 INPUT P,K,V 66 GOSUB 35 :REM ->CHECK DATE 67 IF ER=1 THEN 62 68 : 69 ER=0 70 PRINT 71 PRINT "ENTER HOUR,MINUTE,SECOND" 72 INPUT H,M,S 73 GOSUB 45 :REM ->CHECK TIME 74 IF ER=1 THEN 69 75 : 76 RETURN 77 : 78 REM *********** LT_TO_UT *********** 79 : 80 REM Local time to UT 81 : 82 UH=H-AV 83 : 84 RETURN 85 : 86 REM ************ JULIAN ************ 87 : 88 IF K>2 THEN Y=V: MN=K 89 IF K<3 THEN Y=V-1: MN=K+12 90 AA=INT(Y/100) 91 BB=2-AA+INT(AA/4) 92 JD#=INT(365.25*Y)+INT(30.6001*(MN+1))+BB+P+1720994.5# 93 JD#=JD#+UH/24+M/1440+S/86400! 94 : 95 RETURN 96 : 97 REM *********** ELEMENTS *********** 98 : 99 D#=JD#-2.41502E+06 100 VV#=134.63+1.11587E-03*D# 101 VV#=FN MK(VV#) 102 MM#=358.476+.9856003000000001#*D# 103 MM#=FN MK(MM#) 104 N#=225.328+.0830853*D#+.33*SIN(FN R(VV#)) 105 N#=FN MK(N#) 106 J#=221.647+.9021517900000001#*D#+.33*SIN(FN R(VV#)) 107 J#=FN MK(J#) 108 A#=1.916*SIN(FN R(MM#))+.02*SIN(FN R(2*MM#)) 109 B#=5.552*SIN(FN R(N#))+.167*SIN(FN R(2*N#)) 110 KK#=J#+A#-B# 111 KK#=FN MK(KK#) 112 R#=1.00014-.01672*COS(FN R(MM#))-.00014*COS(FN R(2*MM#)) 113 RE#=5.20867-.25192*COS(FN R(N#))-.0061*COS(FN R(2*N#)) 114 DELTA#=SQR(R#^2+RE#^2-2*R#*RE#*COS(FN R(KK#))) 115 PSI#=FN AS(R#/DELTA#*SIN(FN R(KK#))) 116 PSI#=FN DG(PSI#) 117 : 118 RETURN 119 : 120 REM ************ UT-ET ************* 121 : 122 REM Subroutine calculates the dif- 123 REM ference of UT and ET 124 : 125 T#=(JD#-2.41502E+06)/36525! 126 C#=.41+1.2053*T#+.4992*T#^2 127 C#=C#*60 128 : 129 RETURN 130 : 131 REM *********** MERIDIAN ********** 132 : 133 REM Calculates central meridians 134 REM for both systems 135 : 136 L1#=268.28+877.8169088#*(D#-DELTA#/173)+PSI#-B# 137 L2#=290.28+870.1869088#*(D#-DELTA#/173)+PSI#-B# 138 L1#=FN MK(L1#) 139 L2#=FN MK(L2#) 140 L1#=L1#-SGN(SIN(FN R(KK#)))*57.3*SIN(FN R(PSI#/2))^2 141 L2#=L2#-SGN(SIN(FN R(KK#)))*57.3*SIN(FN R(PSI#/2))^2 142 : 143 GOSUB 120 :REM ->UT-ET 144 C1#=.01016*C# 145 C2#=.01007*C# 146 L1#=L1#+C1# 147 L2#=L2#+C2# 148 L1#=FN MK(L1#) 149 L2#=FN MK(L2#) 150 : 151 RETURN 152 : 153 REM ************ PRINT ************ 154 : 155 PRINT CL$; 156 PRINT "---------------------------------------" 157 PRINT P;".";K;".";V;" ";H;":";M;":";S;" LT" 158 PRINT 159 PRINT USING "SYSTEM I: ###";L1# 160 PRINT USING "SYSTEM II: ###";L2# 161 PRINT "---------------------------------------" 162 PRINT 163 : 164 RETURN 165 : 166 REM ******** MAIN PROGRAM ******** 167 : 168 PRINT CL$; 169 PRINT "ENTER TIME ZONE (NEG. TO WEST)" 170 INPUT AV 171 : 172 GOSUB 56 :REM ->READ TIME(V,K,P,H,M,S) 173 GOSUB 78 :REM ->LT_TO_UT(H,UH,AV) 174 GOSUB 86 :REM ->JULIAN(JD) 175 GOSUB 97 :REM ->ELEMENTS(JD,D,PSI,DELTA,B) 176 GOSUB 131 :REM ->MERIDIAN(D,PSI,DELTA,B,L1,L2) 177 GOSUB 153 :REM ->PRINT(L1,L2) 178 : 179 PRINT "CALCULATE MORE? (Y/N)" 180 A$=INKEY$: IF A$="" THEN 180 181 IF A$="Y" OR A$="y" THEN 172 182 : 183 END 184 : 185 REM ******* End of Program ********