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 ------------------------