home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / tech / design2 / satellit.asc < prev    next >
Text File  |  1979-12-31  |  6KB  |  151 lines

  1. 1 GOSUB 5000
  2. 2 PI# = 3.141592653589794#
  3. 3 FOR I = 1 TO 10 : PRINT : NEXT I
  4. 5 DIM TN#(3),GR#(3),SO#(3),V#(3)
  5. 7 DIM PJ#(3),VT#(3),VS#(3)
  6. 9 AZ$ = "###.##-" : EL$ = "##.##-"
  7. 10 PRINT "    PROGRAM FOR CALCULATION OF AZIMUTH AND ELEVATION FOR EARTH BASED"
  8. 12 PRINT "    RECEIVING STATIONS TO ORBITING SATELLITES IN GEOCENTRIC ORBIT ONLY."
  9. 14 PRINT "    AZIMUTH CLOCKWISE DEGREES FROM NORTH-ELEVATION IS FROM HORIZON PLANE"
  10. 15 FOR I = 1 TO 2000 : NEXT I
  11. 16 FLAG = 0
  12. 18 GOSUB 5000:INPUT "WANT DISPLAY OF USER COORDINATES - Y OR N";FLAG$
  13. 20 IF FLAG$="Y" OR FLAG$="y" THEN FLAG = 1
  14. 26 GOSUB 5000 : PRINT
  15. 28 INPUT "USER LATITUDE IN DEGREES";AD# : PRINT
  16. 30 IF AD# < 1 OR AD# > 89 GOTO 70
  17. 40 INPUT "USER LATITUDE IN MINUTES"; AM# : PRINT : PRINT
  18. 45 IF AM# < 1 OR AM# > 59 GOTO 70
  19. 50 INPUT "USER LONGITUDE IN DEGREES";OD# : PRINT : 
  20. 55 IF OD# < 1 OR OD# > 179 GOTO 80
  21. 60 INPUT "USER LONGITUDE IN MINUTES"; OM#
  22. 65 IF OM# < 1 OR OM# > 59 GOTO 80
  23. 68 GOSUB 5000 : GOTO 90
  24. 70 PRINT "ILLEGAL LATITUDE - 1 < DEG < 89, 1 < MIN < 59"
  25. 72 GOTO 28
  26. 80 PRINT "ILLEGAL LONGITUDE - 1 < DEG < 179, 1 < MIN < 59"
  27. 82 GOTO 50
  28. 90 REM MAKE DECIMAL DEGREES
  29. 94 AM# = AM#/60
  30. 96 AD# = AD# + AM#
  31. 98 OM# = OM#/60
  32. 100 OD# = OD# + OM#
  33. 109 REM CONVERT DEGREES TO RADIANS
  34. 110 AD# = (AD#*PI#)/180
  35. 120 OD# = (OD#*PI#)/180
  36. 129 REM GET SPHERICAL COORDINATES
  37. 130 PH# = (PI#/2)-AD#
  38. 140 TH# = PI#-OD#
  39. 145 REM RADIUS EARTH (SM AT DSS-13)
  40. 150 RH# = 3959.94
  41. 160 IF FLAG = 1 THEN PRINT "SPHERICAL COORDINATES          RHO,THETA,PHI
  42. 170 IF FLAG = 1 THEN PRINT RH#;TH#;PH#
  43. 180 REM CONVERT SPHERICAL COORDINATES TO CARTESIAN COORDINATES
  44. 190 X# = RH# * COS(TH#)*SIN(PH#)
  45. 200 Y# = RH# * SIN(TH#)*SIN(PH#)
  46. 210 Z# = RH# * COS(PH#)
  47. 220 IF FLAG = 1 THEN PRINT "CARTESIAN COORDINATES          X,Y,Z"
  48. 230 IF FLAG = 1 THEN PRINT X#;Y#;Z#
  49. 240 REM PARAMETERIZE CIRCLE THRU USER COORDINATES
  50. 250 UR# = SQR(X#^2 + Y#^2)  
  51. 260 IF FLAG = 1 THEN PRINT "PARAMETER RADIUS TO USER ";UR#
  52. 270 F1# = ATN((X#/UR#)/SQR(-(X#/UR#)*(X#/UR#)+1))
  53. 300 IF FLAG = 1 THEN PRINT "PARAMETER T RADIANS ";F1#
  54. 310 REM CALCULATE UNIT TANGENT VECTOR
  55. 320 TN#(1) = COS(F1#)
  56. 330 TN#(2) = -SIN(F1#)
  57. 340 TN#(3) = 0
  58. 350 IF FLAG = 1 THEN PRINT "TANGENT VECTOR                 T1,T2,T3"
  59. 360 IF FLAG = 1 THEN PRINT TN#(1);TN#(2);TN#(3)
  60. 370 REM CALCULATE GRADIENT VECTOR
  61. 380 GR#(1) = 2*X# : GR#(2) = 2*Y# : GR#(3) = 2*Z#
  62. 410 REM NORMALIZE GRADIENT VECTOR
  63. 420 LE# = SQR(GR#(1)^2 + GR#(2)^2 + GR#(3)^2)
  64. 430 FOR I = 1 TO 3
  65. 440 GR#(I) = GR#(I)/LE#
  66. 450 NEXT I
  67. 460 IF FLAG = 1 THEN PRINT "GRADIENT VECTOR                G1,G2,G3,
  68. 470 IF FLAG = 1 THEN FOR I = 1 TO 3 : PRINT GR#(I); : NEXT I : PRINT
  69. 475 REM CROSS PRODUCT
  70. 480 SO#(1) = GR#(2)*TN#(3)-TN#(2)*GR#(3)
  71. 490 SO#(2) = GR#(3)*TN#(1)-TN#(3)*GR#(1)
  72. 500 SO#(3) = GR#(1)*TN#(2)-TN#(1)*GR#(2)
  73. 510 IF FLAG = 1 THEN PRINT "DIRECTLY SOUTH                 SO1,SO2,SO3,
  74. 512 IF FLAG = 1 THEN FOR I = 1 TO 3 : PRINT SO#(I); : NEXT I : PRINT
  75. 518 PRINT TAB(3);"SATELLITE";TAB(21);"DEG WEST";TAB(36);"AZIMUTH";TAB(51);"ELEVATION"
  76. 521 REM END SETUP AND ENTER MAIN LOOP
  77. 522 READ SAT$,SAT!
  78. 524 IF SAT$ = "END" GOTO 3000
  79. 530 REM GET VECTOR FROM CENTER OF EARTH TO SATELLITE
  80. 540 S1# = 22300 + 3956.67
  81. 550 S2# = PI#-((SAT!/180)*PI#)
  82. 560 S3# = PI#/2
  83. 570 REM CONVERT TO CARTESIAN
  84. 580 X1# = S1# * COS(S2#) * SIN(S3#)
  85. 590 X2# = S1# * SIN(S2#) * SIN(S3#)
  86. 600 X3# = S1# * COS(S3#)
  87. 610 REM PRINT "GEOCENTRIC VECTOR TO SATELLITE    X1,X2,X3"
  88. 620 REM PRINT X1#;X2#;X3#; : PRINT
  89. 630 REM GET POINTER VECTOR FROM USER TO SATELLITE
  90. 640 V#(1) = X1# - X#
  91. 650 V#(2) = X2# - Y#
  92. 660 V#(3) = X3# - Z#
  93. 670 REM PRINT "POINTER VECTOR WITH RESPECT TO OLD BASIS"
  94. 680 REM FOR I = 1 TO 3 : PRINT V#(I); : NEXT I : PRINT
  95. 700 REM FIRST PROJECT V ON TN
  96. 710 DP# = 0
  97. 720 FOR I = 1 TO 3 : DP# = DP# + (V#(I)*TN#(I)) : NEXT I
  98. 730 FOR I = 1 TO 3 : VT#(I) = DP# * TN#(I)      : NEXT I
  99. 740 REM NEXT PROJECT V ON SO
  100. 742 DP# = 0
  101. 750 FOR I = 1 TO 3 : DP# = DP# + (V#(I)*SO#(I)) : NEXT I
  102. 761 FOR I = 1 TO 3 : VS#(I) = DP# * SO#(I)      : NEXT I
  103. 770 REM ADD TO GET PROJECTION VECTOR IN OLD SYS TERMS
  104. 780 FOR I = 1 TO 3 : PJ#(I) = VT#(I) + VS#(I)   : NEXT I
  105. 790 REM TAKE ANGLE BETWEEN PJ AND SO AND GET AZIMUTH
  106. 800 DP# = 0 : LE# = 0
  107. 810 FOR I = 1 TO 3 : DP# = DP# + (PJ#(I)*SO#(I)): NEXT I
  108. 820 FOR I = 1 TO 3 : LE# = LE# + (PJ#(I)^2)     : NEXT I
  109. 830 LE# =SQR(LE#)
  110. 840 DP# = DP#/LE#
  111. 845 IF ABS(ABS(DP#)-1) < .0001 THEN AZ# = 180 : GOTO 900
  112. 850 AZ# = -ATN(DP#/SQR(-DP#*DP#+1))+PI#/2
  113. 860 AZ# = (180*AZ#)/PI#
  114. 864 CP# = OD# : CP# = (CP#*180)/PI#
  115. 866 IF SAT! < CP# THEN AZ# = 180 - AZ# ELSE AZ# = 180 + AZ#
  116. 900 REM FIND ELEVATION
  117. 910 DP# = 0 : LE# = 0
  118. 920 FOR I = 1 TO 3 : DP# = DP# + (GR#(I)*V#(I)) : NEXT I
  119. 930 FOR I = 1 TO 3 : LE# = LE# + (V#(I)^2)      : NEXT I
  120. 940 LE# = SQR(LE#)
  121. 950 DP# = DP#/LE#
  122. 960 EL# = -ATN(DP#/SQR(-DP#*DP#+1))+PI#/2
  123. 970 EL# = (180*EL#)/PI#
  124. 972 EL# = 90 - EL#
  125. 1010 PRINT TAB(3);SAT$;TAB(23);SAT!;
  126. 1020 PRINT TAB(36) : PRINT USING AZ$;AZ#;
  127. 1030 PRINT TAB(53) : PRINT USING EL$;EL#;
  128. 1032 IF EL# < 0 THEN PRINT TAB(60)"OUT OF RANGE"
  129. 1033 IF EL# > 0 THEN PRINT
  130. 1035 IF SAT$ = "XXX" THEN GOTO 3000
  131. 1040 GOTO 522
  132. 1770 DATA INTELSAT IV-F7,1,INTELSAT IV-F2,4,SYMPHONIE 2,11.5
  133. 1880 DATA STATSIONAR 4,14,SIRIO,15,INTELSAT IV-F3,19
  134. 1990 DATA INTELSAT IV-A-F1,24.5,STATSIONAR 8,25,INTELSAT IV-A-F2,29.5
  135. 1995 DATA INTELSAT IV-A-F4,34.5
  136. 2000 DATA COMSTAR III,87,WESTAR III,91,COMSTAR II,95,WESTAR I,99
  137. 2010 DATA ANIK A1,104,ANIK B1&A2,109,ANIK C1,112,ANIK A3,114
  138. 2020 DATA SATCOM II,119,WESTAR II,123.5,COMSTAR I,128,SATCOM I,135
  139. 2500 DATA END,9999
  140. 3000 INPUT"ANOTHER SATELLITE FOR SAME USER - Y OR N";WH$
  141. 3010 IF WH$="N" OR WH$="n" THEN END
  142. 3020 INPUT"WEST LONGITUDE OF GEOCENTRIC SAT";SAT!
  143. 3025 SAT$="XXX"
  144. 3030 GOTO 530
  145. 5000 PRINT CHR$(27);CHR$(69)
  146. 5001 RETURN
  147. 
  148. 3020 INPUT"WEST LONGITUDE OF GEOCENTRIC SAT";SAT!
  149. 3025 SAT$="XXX"
  150. 3030 GOTO 530
  151. 5000 PRIN