home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
cpm
/
basic
/
astrmenu.lbr
/
ALTAZ.BZS
/
ALTAZ.BAS
Wrap
BASIC Source File
|
1987-04-26
|
3KB
|
89 lines
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