100 ' ******************************************* 110 ' * IBM PC BASIC VERSION A3.30 * 120 ' * FILE NAME "REFP" * 130 ' * ROCATING THE REFLECTION POINT * 140 ' * 1987/10 I.KATO * 150 ' ******************************************* 160 KEY OFF:CLS:SCREEN 9 170 ' 180 DEFDBL B,C,E,F,G,K,L,M,O,S 190 DIM Y(100) 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 13] LOCATING THE REFLECTION POINT ":PRINT:COLOR 7 230 PRINT "This calculation relates to ground reflection loss (Item 12), included angle between direct and reflected waves (Item 14) and ridge diffraction loss(Item 10)." 280 PRINT TAB(21)"----- calculation formula -----" 290 PRINT "D1=D-D/2(1+B): D1(km)=distance from POINT A to REFLECTION POINT" 300 PRINT " B is calculated from the following cubic equation by Newton " 305 PRINT TAB(1)" approximation method." 310 PRINT "C=B+B*M*(1-B*B): C=(H1-H2)/(H1+H2+2*HR): M=.5*(D*1000)^2/(2*k*A*(H1+H2+2*HR)" 320 PRINT "H1=A HEIGHT(m): H2=B HEIGHT(m): D=SPAN DISTANCE(km): A=EARTH RADIUS(6370km)" 330 PRINT "HR=REFLECTION POINT ALTITUDE(m)" 340 PRINT STRING$(58,"-") 350 FOR I=1 TO 4:LOCATE I+13:PRINT I" "A$(I):NEXT 360 FLAG$="":HR=0:GOSUB 5000 370 GOSUB 3030:GOSUB 3120:GOSUB 3210:GOSUB 3300 380 COLOR 6:LOCATE 23,10:PRINT "Do you correct any data (Y/N) ? ";:Y$=INPUT$(1) 390 IF Y$<>"Y" AND Y$<>"y" AND Y$<>"N" AND Y$<>"n" THEN 380 400 COLOR 7:LOCATE 23,10:PRINT SPC(40) 410 IF Y$="N" OR Y$="n" THEN CLS:LOCATE 15,61:PRINT " ": LOCATE 19,79:PRINT " ":FLAG$="*":GOTO 1000 ELSE 430 420 ' 430 COLOR 6:LOCATE 23,10:INPUT "Input item number to be corrected ";NO$ 440 COLOR 7:LOCATE 23,10:PRINT SPC(40) 450 NO=VAL(NO$) 460 IF NO=0 OR NO>4 THEN 430 470 LOCATE 13+NO,23:PRINT SPC(30) 480 ON NO GOSUB 3030,3120,3210,3300 490 GOTO 380 1000 ' ---------------------- 1010 ' * reflection point * 1020 ' ---------------------- 1030 HH=0:GOSUB 4000:DF=DH:DHG=100*DF/D 1040 GOSUB 5000 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(50):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 7:FOR I=21 TO 23:LOCATE I,1:PRINT SPC(50):NEXT 1120 HH=VAL(X$):IF HH>=H1 OR HH>=H2 THEN 1100 ELSE DF=DH:GOSUB 4000:GOTO 1080 1130 D1=DH:HR=HH:DHG=100*D1/D 1140 IF HR>0 THEN CLS:GOSUB 5000 1150 COLOR 3 1160 LOCATE 19, 1:PRINT USING "ALTITUDE AT REFLECTION POINT ###.# m";HR 1170 LOCATE 21, 1:PRINT USING "DISTANCE TO REFLECTION POINT(FROM A) ###.# km";D1 1180 LOCATE 14,62:PRINT USING "###.#km";D1 2000 ' 2110 COLOR 6:LOCATE 23,1:PRINT "Do you continue this 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(35) 2140 IF Y$="Y" OR Y$="y" THEN 2170 ELSE 2200 2170 VIEW(475, 96)-(635,176),,0 2190 CLS:SCREEN 0:SCREEN 9:GOTO 220 2200 CLS:SCREEN 0:RUN "ME" 3000 ' -------------------- 3010 ' * data input sub * 3020 ' -------------------- 3030 ' span distance 3040 COLOR 6:LOCATE 14, 1:PRINT USING "##";1;:PRINT " "A$(1) 3050 COLOR 6:LOCATE 23,10:PRINT "Input "A$(1)" ";:LINE INPUT X$ 3060 COLOR 7:LOCATE 23,10:PRINT SPC(40) 3070 D=VAL(X$) 3080 IF D=0 OR D>100 THEN 3050 3090 LOCATE 14,26:PRINT USING "####.#";D 3100 LOCATE 14, 1:PRINT USING "##";1;:PRINT " "A$(1) 3110 RETURN 3120 ' A point height 3130 COLOR 6:LOCATE 15, 1:PRINT USING "##";2;:PRINT " "A$(2) 3140 COLOR 6:LOCATE 23,10:PRINT "Input "A$(2)" ";:LINE INPUT X$ 3150 COLOR 7:LOCATE 23,10:PRINT SPC(40) 3160 H1=VAL(X$) 3170 IF H1=0 THEN 3140 3180 LOCATE 15,25:PRINT USING "#,###.#";H1 3190 LOCATE 15, 1:PRINT USING "##";2;:PRINT " "A$(2) 3200 RETURN 3210 ' B point height 3220 COLOR 6:LOCATE 16, 1:PRINT USING "##";3;:PRINT " "A$(3) 3230 COLOR 6:LOCATE 23,10:PRINT "Input "A$(3)" ";:LINE INPUT X$ 3240 COLOR 7:LOCATE 23,10:PRINT SPC(40) 3250 H2=VAL(X$) 3260 IF H2=0 THEN 3230 3270 LOCATE 16,25:PRINT USING "#,###.#";H2 3280 LOCATE 16, 1:PRINT USING "##";3;:PRINT " "A$(3) 3290 RETURN 3300 ' K 3310 COLOR 6:LOCATE 17, 1:PRINT USING "##";4;:PRINT " "A$(4) 3320 COLOR 6:LOCATE 23,10:PRINT "Input "A$(4)" ";:LINE INPUT X$ 3330 COLOR 7:LOCATE 23,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 KR>2 THEN 3320 3360 LOCATE 17,28:PRINT USING "#.##";KR 3370 LOCATE 17, 1:PRINT USING "##";4;:PRINT " "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(475,168)-(635,308),,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 ' * data input graph draw sub * 5020 ' ------------------------------- 5030 C=12.74*4/3 5040 WINDOW SCREEN(0,0)-(100,100) 5050 VIEW(475,168)-(635,308),,5 5060 ' ground surface 5070 FOR X=0 TO 100 5080 Y=100-(100-X)*X/C/10 5090 IF X=0 THEN PSET(X,Y) ELSE LINE-(X,Y),2 5100 Y(X)=Y 5110 NEXT 5120 IF FLAG$="" THEN 5130 ELSE 5220 5130 LINE(0, 20)-( 10,Y(10)),2 :'A 5140 LINE(90,Y(90))-(100,70),2 :'B 5150 PAINT( 1,Y(10)-1),2,2 :'A 5160 PAINT(99,Y(99)-1),2,2 :'B 5170 LINE( 0, 20)-(100,70),7 :'A-B 5180 LOCATE 14,61:PRINT "A" 5190 LOCATE 22,68:PRINT "SPAN" 5200 LOCATE 18,79:PRINT "B" 5210 RETURN 5220 IF H1>=H2 THEN TG=20:RG=100-H2/H1*80:HG=HR/H1*80 5230 IF H2>H1 THEN RG=20:TG=100-H1/H2*80:HG=HR/H2*80 5240 LINE ( 0, TG)-( 10,Y(10)),2 :'A 5250 LINE (90,Y(90))-(100, RG),2 :'B 5260 PAINT( 1,Y(1)- 1),2,2 5270 PAINT(99,Y(99)-1),2,2 5280 IF HR=0 THEN 5290 ELSE 5330 5290 LINE (0,TG)-(100,RG),7 :'A-B 5300 LINE ( 0,TG)-(DHG,Y(DHG)),3 :'A-F 5310 LINE (DHG,Y(DHG))-(100,RG),3 :'F-B 5320 GOTO 5400 5330 LINE(DHG-5,Y(DHG-5))-(DHG,Y(DHG)-HG),2 :'F 5340 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 5350 PAINT(DHG,Y(DHG)-HG/2),2,2 5360 LINE (0,TG)-(100,RG),7 :'A-B 5370 LINE( 0,TG)-(DHG,Y(DHG)-HG),3 :'A-F 5380 LINE(DHG,Y(DHG)-HG)-(100,RG),3 :'F-B 5390 COLOR 7 5400 LINE(DHG,Y(DHG))-(DHG,20),7,,&H8888 5410 LINE( 0,20)-(DHG,20),14,,&H8888 5420 LOCATE 22,68:PRINT "SPAN" 5430 IF H1>=H2 THEN LOCATE 14,61:PRINT "A":LOCATE 12+9*(H1-H2)/H1,79:PRINT "B" 5440 IF H1