home *** CD-ROM | disk | FTP | other *** search
- 1 PRINT "From the June 1984 SKY & TELESCOPE, pp. 559." : PRINT
- 2 PRINT "This program calculates the altitude and azimuth of an object for a"
- 3 PRINT "particular time and place." : PRINT
- 4 PRINT "INPUT: Year (Y), month (M), day with fraction (D) (UT), Julian or"
- 5 PRINT " Gregorian calendar, right ascension of object (h, min, s),"
- 6 PRINT " declination of object (degrees, minutes, seconds), latitude"
- 7 PRINT " and longitude of observer (degrees, north latitudes and east"
- 8 PRINT " longitudes positive)." : PRINT
- 9 PRINT "OUTPUT: Julian Day and fractional part, altitude, azimuth (degrees,"
- 10 PRINT " from north through east)." : PRINT
- 11 REM ALTITUDE AND AZIMUTH
- 12 REM
- 14 P=3.14159265#: R1=P/180
- 15 GOSUB 700 : T=S*15*R1
- 16 INPUT "R A (H,M,S) ";A$,A2,A3
- 18 GOSUB 72: R=A*15*R1
- 20 INPUT "DEC (D,M,S) ";A$,A2,A3
- 22 GOSUB 72: D=A*R1
- 24 INPUT "LAT, LONG ";B,L
- 26 B=B*R1: L=L*R1
- 32 T5=T-R+L: REM LHA
- 34 S1=SIN(B)*SIN(D)
- 36 S1=S1+COS(B)*COS(D)*COS(T5)
- 38 C1=1-S1*S1
- 40 IF C1>0 THEN C1=SQR(C1)
- 42 IF C1<=0 THEN 46
- 44 H=ATN(S1/C1): GOTO 48
- 46 H=SGN(S1)*P/2
- 48 C2=COS(B)*SIN(D)
- 50 C2=C2-SIN(B)*COS(D)*COS(T5)
- 52 S2=-COS(D)*SIN(T5)
- 54 IF C2=0 THEN A=SGN(S2)*P/2
- 56 IF C2=0 THEN 62
- 58 A=ATN(S2/C2)
- 60 IF C2<0 THEN A=A+P
- 62 IF A<0 THEN A=A+2*P
- 64 PRINT
- 66 PRINT "ALTITUDE: ";H/R1
- 68 PRINT "AZIMUTH: ";A/R1
- 70 RUN"ASTRMENU.BAS"
- 72 REM SEXAGESIMAL TO DECIMAL
- 74 REM
- 76 S=1: A1=ABS(VAL(A$))
- 78 IF LEFT$(A$,1)="-" THEN S=-1
- 80 A=S*(A1+A2/60+A3/3600)
- 82 RETURN
- 700 REM GREENWICH MEAN
- 702 REM SIDEREAL TIME
- 704 REM
- 706 GOSUB 800
- 708 D=J-2451545!
- 710 T=D/36525!: T1=INT(T)
- 712 J0=T1*36525!+2451545!
- 714 T2=(J-J0+.5)/36525!
- 716 S=24110.54841#+184.812866#*T1
- 718 S=S+8640184.812866#*T2
- 720 S=S+.093104*T*T
- 722 S=S-.0000062*T*T*T
- 724 S=S/86400!: S=S-INT(S)
- 726 S=24*(S+(F-.5)*1.002737909#)
- 728 IF S<0 THEN S=S+24
- 730 IF S>24 THEN S=S-24
- 731 RETURN
- 732 H=INT(S): M1=60*(S-H)
- 734 M=INT(M1): S=60*(M1-M)
- 736 PRINT "GMST: ";H;M;S
- 738 END
- 800 REM CALENDAR --> JD
- 805 REM
- 810 INPUT "Y,M,D ";Y,M,D
- 815 INPUT "JC (0) OR GC (1) ";G
- 820 D1=INT(D): F=D-D1-.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 J1=INT(Y+S*INT(A/7))
- 845 J1=-INT((INT(J1/100)+1)*3/4)
- 850 J=J+INT(275*M/9)+D1+G*J1
- 855 J=J+1721027!+2*G+367*Y
- 860 IF F>=0 THEN 870
- 865 F=F+1: J=J-1
- 870 PRINT "J.D.: ";J;F
- 875 RETURN
- +INT(275*M/9)+D1+G*J1
- 855 J=J+1721027!+2*G+367*Y
- 860 IF F>=0 THEN 870
- 865 F=F+1: J=J-1
- 870 PRINT "J.D.: ";J;F
- 875 RETU