|
- 5 GOSUB 69: GOTO 200
- 10 REM KEPLER'S EQUATION
- 11 REM
- 12 P1=3.14159265: R1=180/P1
- 13 K=0.01720209895
- 18 IF E0>=0.95 THEN GOTO 40
- 19 IF E0>=1 THEN 85
- 20 A1=Q/(1-E0): M=K*T*A1^(-1.5)
- 21 REM
- 22 REM BINARY SEARCH
- 23 REM
- 24 F=SGN(M): M=ABS(M)/(2*P1)
- 25 M=(M-INT(M))*2*P1*F
- 26 IF M<0 THEN M=M+2*P1
- 27 F=1: IF M>P1 THEN F=-1
- 28 IF M>P1 THEN M=2*P1-M
- 29 E=P1/2: D=P1/4
- 30 FOR I1=1 TO 23
- 31 M1=E-E0*SIN(E)
- 32 E=E+SGN(M-M1)*D: D=D/2
- 33 NEXT I1
- 34 V=SQR((1+E0)/(1-E0)): E=E*F
- 35 V=2*ATN(V*SIN(E/2)/COS(E/2))
- 36 R=A1*(1-E0*COS(E))
- 38 GOTO 81
- 39 REM
- 40 REM GAUSS METHOD
- 41 REM
- 43 A=SQR((1+9*E0)/10)
- 44 B=5*(1-E0)/(1+9*E0)
- 45 C=SQR(5*(1+E0)/(1+9*E0))
- 46 B1=3*A*K*T/SQR(2*Q*Q*Q)
- 47 B2=1: REM INITIAL VALUE
- 48 W1=B2*B1: B3=ATN(2/W1)
- 49 T1=SIN(B3/2)/COS(B3/2)
- 50 S1=SGN(T1): T1=ABS(T1)
- 51 T2=T1^(1/3)*S1: G=ATN(T2)
- 52 S=2*COS(2*G)/SIN(2*G)
- 53 A2=B*S*S: B0=B2: B2=0
- 54 IF ABS(A2)>0.3 THEN 19
- 55 FOR J=0 TO 7
- 56 B2=B2+B(J)*A2^J
- 57 NEXT J
- 58 IF ABS(B2-B0)>1E-8 THEN 48
- 59 C1=0
- 60 FOR J=0 TO 7
- 61 C1=C1+S(J)*A2^J
- 62 NEXT J
- 63 C1=SQR(1/C1)
- 64 V1=C*C1*S: D1=1/(1+A2*C1*C1)
- 65 V=2*ATN(V1): R=Q*D1*(1+V1*V1)
- 67 GOTO 81
- 68 REM
- 69 REM COEFFICIENTS
- 70 FOR J=0 TO 7: READ B(J): NEXT
- 71 FOR J=0 TO 7: READ S(J): NEXT
- 72 RETURN
- 73 DATA 1,0,-0.017142857
- 74 DATA -0.003809524, -0.001104267
- 75 DATA -0.000367358,-0.000131675
- 76 DATA -0.000049577,1,-0.8
- 77 DATA 0.04571429,0.01523810
- 78 DATA 0.00562820, 0.00218783
- 79 DATA 0.00087905,0.00036155
- 80 RETURN
- 81 IF V<0 THEN V=V+2*P1
- 84 GOTO 86
- 85 PRINT "OUT OF RANGE"
- 86 RETURN
- 200 REM COMET POSITION IN SKY
- 203 REM
- 206 PRINT "PERI DATE ";
- 207 GOSUB 800: J9=J: F9=F
- 208 INPUT "PERI DIST Q ";Q
- 209 INPUT "ECCENTRICITY ";E0
- 212 INPUT "ARG OF PERIHELION ";W
- 215 INPUT "LONG OF ASC NODE ";N
- 218 INPUT "INCLINATION ";I
- 233 P1=3.14159265: R1=P1/180
- 236 E=23.4457889*R1: REM OBLIQUITY
- 239 W=W*R1: N=N*R1: I=I*R1
- 242 GOSUB 338
- 245 PRINT
- 246 PRINT "DATE ";
- 247 GOSUB 800: J1=J: F1=F
- 248 GOSUB 500: T=(J1-J9)+(F1-F9)
- 249 GOSUB 10
- 251 REM POSITION IN ORBIT PLANE
- 254 X1=R*COS(V): Y1=R*SIN(V)
- 257 REM
- 260 REM HELIOCENTRIC EQUATORIAL
- 261 REM COORDINATES
- 263 X2=P7*X1+Q7*Y1
- 266 Y2=P8*X1+Q8*Y1
- 269 Z2=P9*X1+Q9*Y1
- 272 REM
- 275 REM GEOCENTRIC EQUATORIAL
- 276 REM COORDINATES
- 278 X3=X+X2: Y3=Y+Y2: Z3=Z+Z2
- 281 GOSUB 392: REM FOR 2000.0!
- 284 D3=SQR(X3*X3+Y3*Y3+Z3*Z3)
- 287 R1=P1/180
- 290 A=ATN(Y3/X3)/(15*R1)
- 293 IF X3<0 THEN A=A+12
- 296 IF A<0 THEN A=A+24
- 299 D=ATN(Z3/SQR(X3*X3+Y3*Y3))/R1
- 301 REM NOW ROUND OFF
- 302 A=A+0.05/60
- 305 H=INT(A): M=60*(A-H)
- 308 M=INT(10*M)/10
- 311 S=SGN(D): D=ABS(D)+0.5/60
- 314 D1=INT(D): M1=INT(60*(D-D1))
- 317 S$="+": IF S=-1 THEN S$="-"
- 320 PRINT "R.A. ";H;"H ";M;"M"
- 323 PRINT "DEC. ";S$;D1;"D ";M1;"M"
- 326 PRINT "COMET-EARTH DIST:";D3
- 329 PRINT "COMET-SUN DIST: ";R
- 330 INPUT "ANOTHER (Y OR N) ";Q$
- 331 IF Q$="Y" THEN 245
- 332 END
- 335 REM
- 338 REM P'S AND Q'S
- 344 W1=SIN(W): W2=COS(W)
- 347 N1=SIN(N): N2=COS(N)
- 350 I1=SIN(I): I2=COS(I)
- 353 E1=SIN(E): E2=COS(E)
- 356 P7=W2*N2-W1*N1*I2
- 359 P8=(W2*N1+W1*N2*I2)*E2
- 362 P8=P8-W1*I1*E1
- 365 P9=(W2*N1+W1*N2*I2)*E1
- 368 P9=P9+W1*I1*E2
- 371 Q7=-W1*N2-W2*N1*I2
- 374 Q8=(-W1*N1+W2*N2*I2)*E2
- 377 Q8=Q8-W2*I1*E1
- 380 Q9=(-W1*N1+W2*N2*I2)*E1
- 383 Q9=Q9+W2*I1*E2
- 386 RETURN
- 389 REM
- 392 REM 1950.0 --> 2000.0
- 395 A7=+0.9999257: A8=-0.0111789
- 398 A9=-0.0048590: B7=+0.0111789
- 401 B8=+0.9999375: B9=-0.0000272
- 404 C7=+0.0048590: C8=-0.0000272
- 407 C9=+0.9999882
- 410 X4=A7*X3+A8*Y3+A9*Z3
- 413 Y4=B7*X3+B8*Y3+B9*Z3
- 416 Z4=C7*X3+C8*Y3+C9*Z3
- 419 X3=X4: Y3=Y4: Z3=Z4
- 422 RETURN
- 500 REM X,Y,Z OF THE SUN
- 501 REM (EQUINOX 1950.0)
- 502 REM
- 504 J8=J-2415020: R1=3.14159265/180
- 505 T=(J8+F)/36525
- 506 P0=1.396041+0.000308*(T+0.5)
- 507 P0=P0*(T-0.499998)
- 508 A=100:GOSUB 529:G0=A+358.475833
- 509 L0=A+279.696678-P0
- 510 A=1336: GOSUB 529
- 511 C0=A+270.434164-P0
- 512 A=162: GOSUB 529
- 513 V0=A+212.603219
- 514 A=53:GOSUB 529: M0=A+319.529425
- 515 A=8: GOSUB 529: J0=A+225.444651
- 516 G=G0+T*(-0.950250-0.000150*T)
- 517 C=C0+T*(307.883142-0.001133*T)
- 518 L=L0+T*(0.768920+0.000303*T)
- 519 V=V0+T*(197.803875+0.001286*T)
- 520 M=M0+T*(59.8585+0.000181*T)
- 521 J=J0+T*154.906654
- 522 G=G*R1: C=C*R1: L=L*R1
- 523 V=V*R1: M=M*R1: J=J*R1
- 524 GOSUB 532
- 528 RETURN
- 529 REM NORMALIZATION
- 530 A=360*(A*T-INT(A*T)): RETURN
- 531 REM
- 532 X=0.000011*COS(2*G-L-2*J)
- 533 X=X+0.000011*COS(2*G+L-2*V)
- 534 X=X-0.000012*COS(G+L-V)
- 535 X=X-0.000012*COS(4*G-L-8*M+3*J)
- 536 X=X+0.000012*COS(4*G+L-8*M+3*J)
- 537 X=X-0.000014*COS(C-2*L)
- 538 X=X+0.000017*COS(C)
- 539 X=X+0.000018*SIN(2*G+L-2*V)
- 540 X=X-0.000021*T*COS(G+L)
- 541 X=X-0.000026*SIN(G-L-J)
- 542 X=X+0.000035*COS(2*G-L)
- 543 X=X+0.000063*T*COS(G-L)
- 544 X=X+0.000105*COS(2*G+L)
- 545 X=X+0.008374*COS(G+L)
- 546 X=X-0.025127*COS(G-L)
- 547 X=X+0.999860*COS(L)
- 548 REM
- 549 Y=0.000010*SIN(2*G+L-2*V)
- 550 Y=Y-0.000010*SIN(2*G-L-2*J)
- 551 Y=Y-0.000011*SIN(G+L-V)
- 552 Y=Y+0.000011*SIN(4*G-L-8*M+3*J)
- 553 Y=Y+0.000011*SIN(4*G+L-8*M+3*J)
- 554 Y=Y+0.000013*SIN(C-2*L)
- 555 Y=Y+0.000016*SIN(C)
- 556 Y=Y-0.000017*COS(2*G+L-2*V)
- 557 Y=Y-0.000019*T*SIN(G+L)
- 558 Y=Y-0.000024*COS(G-L-J)
- 559 Y=Y-0.000032*SIN(2*G-L)
- 560 Y=Y-0.000057*T*SIN(G-L)
- 561 Y=Y+0.000097*SIN(2*G+L)
- 562 Y=Y+0.007683*SIN(G+L)
- 563 Y=Y+0.023053*SIN(G-L)
- 564 Y=Y+0.917308*SIN(L)
- 565 REM
- 566 Z=-0.000010*COS(G-L-J)
- 567 Z=Z-0.000014*SIN(2*G-L)
- 568 Z=Z-0.000025*T*SIN(G-L)
- 569 Z=Z+0.000042*SIN(2*G+L)
- 570 Z=Z+0.003332*SIN(G+L)
- 571 Z=Z+0.009998*SIN(G-L)
- 572 Z=Z+0.397825*SIN(L)
- 573 RETURN
- 800 REM CALENDAR --> JD
- 805 REM
- 810 INPUT "Y,M,D ";Y,M,D
- 815 G=1
- 820 D1=INT(D): F=D-D1-0.5
- 825 J=-INT(7*(INT((M+9)/12)+Y)/4)
- 830 IF G=0 THEN 850
- 835 S=SGN(M-9): A=ABS(M-9)
- 840 J3=INT(Y+S*INT(A/7))
- 845 J3=-INT((INT(J3/100)+1)*3/4)
- 850 J=J+INT(275*M/9)+D1+G*J3
- 855 J=J+1721027+2*G+367*Y
- 860 IF F>=0 THEN 870
- 865 F=F+1: J=J-1
- 870 RETURN
- 875 END
- 880 REM ------------------------
- 890 REM APPEARED IN ASTRONOMICAL
- 900 REM COMPUTING, SKY & TELE-
- 910 REM SCOPE, DECEMBER, 1985
- 920 REM ------------------------
|