100 ' ********************************** 110 ' * IBM PC BASIC VERSION A3.30 * 120 ' * FILE NAME "INCL" * 130 ' * INCLUDED ANGLE * 140 ' * 1987/10 I.KATO * 150 ' ********************************** 160 KEY OFF:CLS:SCREEN 9 170 ' 180 DIM Y(100) 190 DEFDBL B,C,E,F,G,K,L,M,O,S 200 DATA "SPAN DISTANCE(km)","A HEIGHT(m)","B HEIGHT(m)","k(average value)" 210 FOR I=1 TO 4:READ A$(I):NEXT 220 COLOR 14:LOCATE 1,1:PRINT "[ITEM 14] INCLUDED ANGLE BETWEEN DIRECT AND REFLECTED WAVES ":PRINT:COLOR 7 230 PRINT "The calculated result in this Item is to be used in Item 15 for determining Antenna directivity.":PRINT 260 PRINT TAB(21)"----- calculation formula -----" 270 PRINT "A POINT INCLUDED ANGLE(mrad) =(H1-HR)/D1-(H1-H2)/D-(D-D1)*1000/(2*k*6370)" 280 PRINT "B POINT INCLUDED ANGLE(mrad) =(H2-HR)/D1-(H2-H1)/D-D1*1000/(2*k*6370)" 290 PRINT "H1=A HEIGHT(m):H2=B HEIGHT(m):D=SPAN DISTANCE(km):k=EQUIVALENT EARTH RADIUS" 300 PRINT "D1=from POINT A to REFLECTION POINT DISTANCE(km):HR=REFLECTION POINT ALTITUDE(m)" 310 LOCATE 11,1:PRINT STRING$(80,"-") 320 FOR I=1 TO 4:LOCATE I+11,1:PRINT I" "A$(I):NEXT 330 FLAG$="":HR=0:GOSUB 6000 340 GOSUB 3030:GOSUB 3120:GOSUB 3210:GOSUB 3300 350 COLOR 6:LOCATE 23,10:PRINT "Do you correct any data (Y/N) ? ";:Y$=INPUT$(1) 360 IF Y$<>"Y" AND Y$<>"y" AND Y$<>"N" AND Y$<>"n" THEN 350 370 COLOR 7:LOCATE 23,10:PRINT SPC(69) 380 IF Y$="N" OR Y$="n" THEN CLS:FLAG$="*":LOCATE 14,61:PRINT " ": LOCATE 18,79:PRINT " ":GOTO 1000 ELSE 400 390 ' 400 COLOR 6:LOCATE 23,10:INPUT "Input item number(1-4) to be corrected ";NO$ 410 COLOR 7:LOCATE 23,10:PRINT SPC(69) 420 NO=VAL(NO$) 430 IF NO=0 OR NO>4 THEN 400 440 LOCATE 11+NO,23:PRINT SPC(30) 450 ON NO GOSUB 3030,3120,3210,3300 460 GOTO 350 1000 ' ---------------------- 1010 ' * reflection point * 1020 ' ---------------------- 1030 HH=0:GOSUB 4000:DF=DH:DHG=100*DF/D 1040 GOSUB 6000 1050 COLOR 6:LOCATE 22,1:PRINT "Input altitude(m) at the point";: COLOR 2:PRINT USING "###.#km away";DF:LOCATE 23,1: COLOR 6:LINE INPUT "from POINT A ";X$ 1060 COLOR 7:FOR I=22 TO 23:LOCATE I,1:PRINT SPC(55):NEXT 1070 HH=VAL(X$):IF HH>=H1 OR HH>=H2 THEN 1050 ELSE GOSUB 4000 1080 IF ABS(DF-DH)>.1 THEN 1090 ELSE HR=HH:GOTO 1130 1090 COLOR 6:LOCATE 21, 1:PRINT "REFLECTION POINT is";: COLOR 2:PRINT USING " ###.#km from POINT A";DH 1100 COLOR 6:LOCATE 23,1:LINE INPUT "Input altitude(m) at this point ";X$ 1110 COLOR 15:FOR I=21 TO 23:LOCATE I,1:PRINT SPC(55):NEXT 1120 HH=VAL(X$):IF HH>=H1 OR HH>=H2 THEN 1090 ELSE DF=DH:GOSUB 4000:GOTO 1080 1130 D1=DH:HR=HH:DHG=100*D1/D 1140 IF HR>0 THEN CLS:GOSUB 6000 1150 F=((H1-HR)/D1-(H1-H2)/D-(D-D1)*1000/(KR*2*6370))*180/3.14159/1000: E=F:GOSUB 5000:U3=U:V3=V:W3=W 1160 G=((H2-HR)/(D-D1)-(H2-H1)/D-D1*1000/(KR*2*6370))*180/3.14159/1000: E=G:GOSUB 5000:U4=U:V4=V:W4=W 1170 LOCATE 18, 1:PRINT USING "ALTITUDE AT REFLECTION POINT ###.# m";HR 1180 LOCATE 19, 1:PRINT USING "DISTANCE TO REFLECTION POINT (FROM A) ###.#km";D1 :COLOR 3 1190 LOCATE 21, 1:PRINT USING "INCLUDED ANGLE AT POINT A ##:##:##";U3,V3,W3 1200 LOCATE 22, 1:PRINT USING "INCLUDED ANGLE AT POINT B ##:##:##";U4,V4,W4 1210 LOCATE 13,62:PRINT USING "###.#km";D1 1220 GOSUB 7000 2000 ' 2110 COLOR 6:LOCATE 23,1:PRINT "Do you continue the work (Y/N) ? ";:Y$=INPUT$(1) 2120 IF Y$<>"Y" AND Y$<>"y" AND Y$<>"N" AND Y$<>"n" THEN 2110 2130 COLOR 7:LOCATE 23,1:PRINT SPC(79) 2140 IF Y$="Y" OR Y$="y" THEN SCREEN 0:CLS:SCREEN 9:GOTO 220 2150 CLS:SCREEN 0:RUN "ME" 3000 ' -------------------- 3010 ' * data input sub * 3020 ' -------------------- 3030 ' span distance 3040 COLOR 6:LOCATE 12, 1:PRINT 1" "A$(1) 3050 COLOR 6:LOCATE 22,10:PRINT "Input "A$(1)" ";:LINE INPUT X$ 3060 COLOR 7:LOCATE 22,10:PRINT SPC(40) 3070 D=VAL(X$) 3080 IF D=0 OR D>100 THEN 3050 3090 LOCATE 12,26:PRINT USING "####.#";D 3100 LOCATE 12, 1:PRINT 1" "A$(1) 3110 RETURN 3120 ' A point height 3130 COLOR 6:LOCATE 13, 1:PRINT 2" "A$(2) 3140 COLOR 6:LOCATE 22,10:PRINT "Input "A$(2)" ";:LINE INPUT X$ 3150 COLOR 7:LOCATE 22,10:PRINT SPC(40) 3160 H1=VAL(X$) 3170 IF H1=0 THEN 3140 3180 LOCATE 13,25:PRINT USING "#,###.#";H1 3190 LOCATE 13, 1:PRINT 2" "A$(2) 3200 RETURN 3210 ' B point height 3220 COLOR 6:LOCATE 14, 1:PRINT 3" "A$(3) 3230 COLOR 6:LOCATE 22,10:PRINT "Input "A$(3)" ";:LINE INPUT X$ 3240 COLOR 7:LOCATE 22,10:PRINT SPC(40) 3250 H2=VAL(X$) 3260 IF H2=0 THEN 3230 3270 LOCATE 14,25:PRINT USING "#,###.#";H2 3280 LOCATE 14, 1:PRINT 3" "A$(3) 3290 RETURN 3300 ' K 3310 COLOR 6:LOCATE 15, 1:PRINT 4" "A$(4) 3320 COLOR 6:LOCATE 22,10:PRINT "Input "A$(4)" ";:LINE INPUT X$ 3330 COLOR 7:LOCATE 22,10:PRINT SPC(40) 3340 IF MID$(X$,2,1)="/" THEN KR=VAL(LEFT$(X$,1))/VAL(RIGHT$(X$,1)) ELSE KR=VAL(X$) 3350 IF KR<1 OR K>2 THEN 3320 3360 LOCATE 15,28:PRINT USING "#.##";KR 3370 LOCATE 15, 1:PRINT 4" "A$(4) 3380 RETURN 4000 ' ------------------------------- 4010 ' * reflection point cul. sub * 4020 ' ------------------------------- 4030 P=H1-HH:Q=H2-HH 4040 C=(P-Q)/(P+Q) 4050 M=.5*D*D/(2*KR*6370*(P+Q))*1000 4060 K=C/(1+M) 4070 B=K: GOSUB 4180 4080 O=S:N=10^-4 4090 B=K+N:GOSUB 4180 4100 L=K:K=L-N*O/(S-O) 4110 IF ABS(L-K)>=1/10^8 THEN 4070 4120 DH=D*(1+K)/2 4130 DH=INT((DH+.0005)*1000)/1000 4140 GLD=H1-DH/D*(H1-H2)-DH*(D-DH)/(2*KR*6370)*1000 4150 IF GLD<0 THEN VIEW(455,162)-(635,295),,0:COLOR 4:LOCATE 19,1:PRINT "Path line sink under the earth surface. This span is not line-of-sight.":GOTO 2110 4160 RETURN 4170 ' 4180 ' * cubic equation sub * 4190 S=(B*B-(1+M)/M)*B+C/M 4200 RETURN 5000 ' --------------------------- 5010 ' * Degree translate sub * 5020 ' --------------------------- 5030 U=ABS(FIX(E)):V=(ABS(E)-U)*3600\60:W=(ABS(E)-U)*3600-V*60 5040 RETURN 6000 ' ------------------------------- 6010 ' * data input graph draw sub * 6020 ' ------------------------------- 6030 C=12.74*4/3 6040 WINDOW SCREEN(0,0)-(100,100) 6050 VIEW(455,162)-(635,295),,5 6060 ' ground surface 6070 FOR X=0 TO 100 6080 Y=100-(100-X)*X/C/10 6090 IF X=0 THEN PSET(X,Y) ELSE LINE-(X,Y),2 6100 Y(X)=Y 6110 NEXT 6120 IF FLAG$="" THEN 6130 ELSE 6220 6130 LINE(0, 20)-( 10,Y(10)),2 :'A 6140 LINE(90,Y(90))-(100,70),2 :'B 6150 PAINT( 1,Y(10)-1),2,2 :'A 6160 PAINT(99,Y(99)-1),2,2 :'B 6170 LINE( 0, 20)-(100,70),7 :'A-B 6180 LOCATE 13,59:PRINT "A" 6190 LOCATE 21,68:PRINT "SPAN" 6200 LOCATE 17,79:PRINT "B" 6210 RETURN 6220 IF H1>=H2 THEN TG=20:RG=100-H2/H1*80:HG=HR/H1*80 6230 IF H2>H1 THEN RG=20:TG=100-H1/H2*80:HG=HR/H2*80 6240 LINE ( 0, TG)-( 10,Y(10)),2 :'A 6250 LINE (90,Y(90))-(100, RG),2 :'B 6260 PAINT( 1,Y(1)- 1),2,2 6270 PAINT(99,Y(99)-1),2,2 6280 IF HR=0 THEN 6290 ELSE 6330 6290 LINE (0,TG)-(100,RG),7 :'A-B 6300 LINE ( 0,TG)-(DHG,Y(DHG)),3 :'A-F 6310 LINE (DHG,Y(DHG))-(100,RG),3 :'F-B 6320 GOTO 6390 6330 LINE(DHG-5,Y(DHG-5))-(DHG,Y(DHG)-HG),2 :'F 6340 IF DHG>=95 THEN LINE(DHG,Y(DHG)-HG)-(100,Y(100)),2 ELSE LINE(DHG,Y(DHG)-HG)-(DHG+5,Y(DHG+5)),2 :'F 6350 PAINT(DHG,Y(DHG)-HG/2),2,2 6360 LINE (0,TG)-(100,RG),7 :'A-B 6370 LINE( 0,TG)-(DHG,Y(DHG)-HG),3 :'A-F 6380 LINE(DHG,Y(DHG)-HG)-(100,RG),3 :'F-B 6390 LINE(DHG,Y(DHG))-(DHG,20),7,,&H8888 6400 LINE( 0,20)-(DHG,20),7,,&H8888 6410 COLOR 7 6420 LOCATE 21,68:PRINT "SPAN" 6430 IF H1>=H2 THEN LOCATE 13,59:PRINT "A":LOCATE 12+9*(H1-H2)/H1,79:PRINT "B" ELSE LOCATE 12+9*(H2-H1)/H2,59:PRINT "A":LOCATE 13,79:PRINT "B" 6440 RETURN 7000 ' -------------------- 7010 ' * angle draw sub * 7020 ' -------------------- 7030 TL=100-TG:RL=100-RG:LL=100-(Y(DHG)-HG) 7040 KTG1=3.14*2-ATN((TL-LL)/DHG) :KTG2=3.14*2-ATN((TL-RL)/100) 7050 KRG1=3.14+ATN((RL-LL)/(100-DHG)):KRG2=3.14-ATN((TL-RL)/100) 7060 IF KTG1>=6.28 THEN KTG1=KTG1-6.28 7070 IF KTG2>=6.28 THEN KTG2=KTG2-6.28 7080 IF KRG1>=6.28 THEN KRG1=KRG1-6.28 7090 IF KRG2>=6.28 THEN KRG2=KRG2-6.28 7100 CIRCLE(0,TG),DHG*.5,3,-KTG1,-KTG2:CIRCLE(100,RG),(100-DHG)*.5,3,-KRG2,-KRG1 7110 RETURN