44 lines
978 B
Plaintext
44 lines
978 B
Plaintext
10 REM================================
|
|
15 REM HAVERSINE FORMULA
|
|
20 REM
|
|
25 REM 2021-09-24
|
|
30 REM EN.WIKIPEDIA.ORG/WIKI/HAVERSINE_FORMULA
|
|
35 REM
|
|
40 REM C64 HAS PI CONSTANT
|
|
45 REM X1 LONGITUDE 1
|
|
50 REM Y1 LATITUDE 1
|
|
55 REM X2 LONGITUDE 2
|
|
60 REM Y2 LATITUDE 2
|
|
65 REM
|
|
70 REM V1, 2021-10-02, ALVALONGO
|
|
75 REM ===============================
|
|
100 REM MAIN
|
|
105 DR=π/180:REM DEGREES TO RADIANS
|
|
110 PRINT CHR$(147);CHR$(5);"HAVERSINE FORMULA"
|
|
120 PRINT "GREAT-CIRCLE DISTANCE"
|
|
130 R=6372.8:REM AVERAGE EARTH RADIUS IN KILOMETERS
|
|
200 REM GET DATA
|
|
210 PRINT
|
|
220 INPUT "LONGITUDE 1=";X1
|
|
230 INPUT "LATITUDE 1=";Y1
|
|
240 PRINT
|
|
250 INPUT "LONGITUDE 2=";X2
|
|
260 INPUT "LATITUDE 2=";Y2
|
|
270 GOSUB 500
|
|
280 PRINT
|
|
290 PRINT "DISTANCE=";D;"KM"
|
|
300 GET K$:IF K$="" THEN 300
|
|
310 GOTO 210
|
|
490 END
|
|
500 REM HAVERSINE FORMULA ------------
|
|
520 A=SIN((X2-X1)*DR/2)
|
|
530 A=A*A
|
|
540 B=COS(Y1*DR)*COS(Y2*DR)
|
|
550 C=SIN((Y2-Y1)*DR/2)
|
|
560 C=C*C
|
|
570 D=SQR(C+B*A)
|
|
580 E=D/SQR(1-D*D)
|
|
590 F=ATN(E)
|
|
600 D=2*R*F
|
|
610 RETURN
|