10 '******************************************************** 20 '***** GREAT CIRCLE PLOTTING ***** 30 '***** E. WEISSBERGER ***** 40 '***** version 06-08-82 ***** 50 '******************************************************** 60 CLS: KEY OFF 70 LOCATE 1,22 80 PRINT "GREAT CIRCLE PLOTTING" 90 LOCATE 2,26: PRINT "E. WEISSBERGER" 100 COLOR 0,7,0 110 PRINT " No guarantee is given for the accuracy of values returned by this " 120 PRINT " program. Use of these values is at the user's risk. " 130 COLOR 7,0,0 140 PRINT: PRINT "This program calculates GREAT CIRCLE circle crossing" 150 PRINT " latitudes for given intercept longitudes" 160 PRINT: PRINT "The program does not operate along lines of equal longitude" 170 PRINT "coordinates will be entered as DEGREE.MIN" 180 PRINT "SECONDS should be converted to decimal MIN and concatinated with MIN" 190 LOCATE 13,5: COLOR 16,1,0 200 PRINT "for SOUTH longitude or EAST latitude use NEGATIVE values" 210 COLOR 7,0,0 220 LOCATE 20,20 230 PRINT "type any key to continue" 240 A$ = INKEY$: IF A$ = "" THEN 240 250 B$(1) = "LATITUDE": B$(2) = "LONGITUDE" 260 C$(1) = "INITIAL": C$(2) = "FINAL": C$(3) = "CROSSING LONGITUDE" 270 PI = 3.1415926#: CONVER = 180#/PI '***** degrees per radian 280 CLS 290 R = 1 300 FOR X = R TO 3 310 PRINT "The COORDINATES of the "C$(X)" point are " 320 FOR Y = 1 TO 2 330 IF X = 3 THEN Y = 2 340 PRINT B$(Y) 350 INPUT " DEGREES.MIN ",D(X,Y) 360 D1(X,Y) = INT(ABS(D(X,Y))) 370 IF D(X,Y) < 0 THEN GOTO 380 ELSE GOTO 390 380 D1(X,Y) = -D1(X,Y) 390 M1(X,Y) = (D(X,Y) - D1(X,Y))*100 400 DMIN1(X,Y) = M1(X,Y)/60# 410 L(X,Y) = (D1(X,Y) + DMIN1(X,Y))/CONVER 420 PRINT 430 NEXT Y 440 NEXT X 450 SILONG1 = SIN(L(3,2) - L(1,2)) 460 SILONG2 = SIN(L(3,2) - L(2,2)) 470 SILONG12 = SIN(L(2,2) - L(1,2)) 480 TA2 = TAN(L(2,1)): TA1 = TAN(L(1,1)) 490 FL = TA2*SILONG1: FR = TA1*SILONG2 500 LAT = ATN((FL - FR)/SILONG12) 510 LAT = LAT*CONVER 520 LATD = INT(ABS(LAT)) 530 LATM = (ABS(LAT) - LATD)*60/100 540 LATA = LATD + LATM 550 CLS:PRINT "The intercept coordinates are:" 560 PRINT 570 PRINT USING "LATITUDE ####.## DEG.MIN ";LATA 580 PRINT USING "LONGITUDE ####.## DEG.MIN ";D(3,2) 590 PRINT 600 PRINT "Will you run again (Y/N)? " 610 A$ = INKEY$: IF A$ = "" THEN 610 ELSE IF A$ = "Y" OR A$ = "y" THEN R = 3: GOTO 300 620 KEY ON: END