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

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