8999  IF  ERROR  THEN 9169
9000  REM  *****  SPHERE  *****  MATHEMATICS PROGRAM  *****
9001  REM  *****  VERSION 1  *****  7/31/69  *****
9002  REM  SOLVES SPHERICAL TRIANGLES
9003  PRINT 
9004  PRINT "   S P H E R I C A L   T R I A N G L E   S O L U T I O N"
9005  PRINT 
9006  PRINT 
9007  LET L=0
9008  LET P=3.14159
9009  LET C=180/P
9010  READ D0,M0,T0,N0,D1,M1,T1,N1,H0,J0
9011  LET L=L+1
9012  PRINT "CASE NUMBER";L
9013  PRINT 
9014  PRINT 
9015  PRINT "LOCAL POSITION:"
9016  PRINT 
9017  PRINT ABS(D0);"DEG   ";M0;"MIN  ";
9018  IF D0<0 THEN 9021
9019  PRINT "NORTH ";
9020  GOTO 9022
9021  PRINT "SOUTH ";
9022  PRINT "LATITUDE"
9023  PRINT ABS(T0);"DEG   ";N0;"MIN  ";
9024  IF T0<0 THEN 9027
9025  PRINT "WEST ";
9026  GOTO 9028
9027  PRINT "EAST ";
9028  PRINT "LONGITUDE"
9029  PRINT 
9030  PRINT 
9031  PRINT "REMOTE POSITION:"
9032  PRINT 
9033  PRINT ABS(D1);"DEG   ";M1;"MIN  ";
9034  IF D1<0 THEN 9037
9035  PRINT "NORTH ";
9036  GOTO 9038
9037  PRINT "SOUTH ";
9038  PRINT "LATITUDE"
9039  PRINT ABS(T1);"DEG   ";N1;"MIN  ";
9040  IF T1<0 THEN 9043
9041  PRINT "WEST ";
9042  GOTO 9044
9043  PRINT "EAST ";
9044  PRINT "LONGITUDE"
9045  PRINT 
9046  PRINT 
9047  LET M0=M0/60
9048  LET N0=N0/60
9049  LET M1=M1/60
9050  LET N1=N1/60
9051  IF D0 >= 0 THEN 9054
9052  LET D0=(ABS(D0)+M0+90)/C
9053  GOTO 9055
9054  LET D0=(90-D0-M0)/C
9055  IF D1 >= 0 THEN 9058
9056  LET D1=(ABS(D1)+M1+90)/C
9057  GOTO 9059
9058  LET D1=(90-D1-M1)/C
9059  IF T0 >= 0 THEN 9062
9060  LET T0=-(ABS(T0)+N0)/C
9061  GOTO 9063
9062  LET T0=(T0+N0)/C
9063  IF T1 >= 0 THEN 9066
9064  LET T1=-(ABS(T1)+N1)/C
9065  GOTO 9067
9066  LET T1=(T1+N1)/C
9067  LET T=ABS(T1-T0)
9068  LET F=COS(D0)*COS(D1)+SIN(D0)*SIN(D1)*COS(T)
9069  LET F1=SQR(ABS(1-F^2))
9070  LET Z=ATN(ABS(F1/F))
9071  IF F >= 0 THEN 9073
9072  LET Z=P-Z
9073  LET G=(COS(D1)-F*COS(D0))/(F1*SIN(D0))
9074  LET B0=ATN(ABS(SQR(ABS(1-G^2))/G))
9075  IF G >= 0 THEN 9077
9076  LET B0=P-B0
9077  IF (T0-T1) >= 0 THEN 9079
9078  LET B0=2*P-B0
9079  LET H=(COS(D0)-F*COS(D1))/(F1*SIN(D1))
9080  LET B1=ATN(ABS(SQR(ABS(1-H^2))/H))
9081  IF H >= 0 THEN 9083
9082  LET B1=P-B1
9083  IF (T1-T0) >= 0 THEN 9085
9084  LET B1=2*P-B1
9085  PRINT "LOCAL HOUR ANGLE (AT NORTH POLE):"
9086  PRINT 
9087  PRINT INT(10*T*C+.5)/10;"DEG"
9088  PRINT INT(T*C);"DEG   ";
9089  PRINT INT(600*(T*C-INT(T*C))+.5)/10;"MIN"
9090  LET H7=T*C/15
9091  LET M7=(H7-INT(H7))*60
9092  LET S7=(M7-INT(M7))*60
9093  PRINT INT(H7);"HRS   ";INT(M7);"MIN   ";INT(10*S7+.5)/10;"SEC"
9094  PRINT 
9095  PRINT 
9096  PRINT "ZENITH (GREAT CIRCLE) DISTANCES:"
9097  PRINT 
9098  PRINT INT(10*Z*C+.5)/10;"DEG"
9099  PRINT INT(Z*C);"DEG   ";
9100  PRINT INT(600*(Z*C-INT(Z*C))+.5)/10;"MIN"
9101  PRINT INT(600*Z*C+.5)/10;"NAUTICAL MILES"
9102  PRINT INT(600*Z*C*6080.2/5280+.5)/10;" STATUTE MILES"
9103  PRINT 
9104  PRINT 
9105  PRINT "TRUE BEARINGS (GREAT CIRCLE COURSES):"
9106  PRINT 
9107  PRINT " REMOTE POSITION FROM LOCAL POSITION:"
9108  PRINT INT(10*B0*C+.5)/10;"DEG"
9109  PRINT INT(B0*C);"DEG   ";INT(600*(B0*C-INT(B0*C))+.5)/10;"MIN"
9110  PRINT 
9111  PRINT " LOCAL POSITION FROM REMOTE POSITION:"
9112  PRINT INT(10*B1*C+.5)/10;"DEG"
9113  PRINT INT(B1*C);"DEG   ";INT(600*(B1*C-INT(B1*C))+.5)/10;"MIN"
9114  PRINT 
9115  PRINT 
9116  PRINT "ALTITUDE (REMOTE CELESTIAL POSITION"
9117  PRINT "   ABOVE LOCAL POSITION HORIZON):"
9118  PRINT 
9119  LET A7=90-Z*C
9120  LET A8=ABS(A7)
9121  IF A7<0 THEN 9124
9122  PRINT INT(10*A7+.5)/10;
9123  GOTO 9125
9124  PRINT -1*INT(10*A8+.5)/10;
9125  PRINT "DEG"
9126  IF A7<0 THEN 9130
9127  PRINT INT(A7);"DEG   ";
9128  PRINT INT(600*(A7-INT(A7))+.5)/10;"MIN"
9129  GOTO 9132
9130  PRINT -1*INT(A8);"DEG   ";
9131  PRINT INT(600*(A8-INT(A8))+.5)/10;"MIN"
9132  PRINT 
9133  PRINT 
9134  IF (1+H0)*(1+J0)=1 THEN 9159
9135  PRINT "OBSERVED ALTITUDE:"
9136  PRINT 
9137  PRINT H0;"DEG   ";J0;"MIN"
9138  LET H1=H0+J0/60
9139  PRINT INT(100*H1+.5)/100;"DEG"
9140  PRINT 
9141  PRINT 
9142  PRINT "LINE OF POSITION:"
9143  PRINT 
9144  LET I4=60*(H1-A7)
9145  PRINT INT(10*ABS(I4)+.5)/10;"MILES ";
9146  IF I4>0 THEN 9149
9147  PRINT "AWAY ";
9148  GOTO 9150
9149  PRINT "TOWARDS ";
9150  PRINT "ON LINE BEARING  ";
9151  IF I4>0 THEN 9158
9152  LET B9=B0*C+180
9153  IF B9>360 THEN 9156
9154  PRINT INT(10*B9+.5)/10;"DEGREES TRUE"
9155  GOTO 9159
9156  LET B9=B9-360
9157  GOTO 9154
9158  PRINT INT(10*B0*C+.5)/10;"DEGREES TRUE"
9159  PRINT 
9160  PRINT 
9161  PRINT 
9162  PRINT 
9163  PRINT 
9164  PRINT 
9165  DIM A$[10]
9166  PRINT "DO YOU WISH TO RUN THIS PROGRAM AGAIN";
9167  INPUT A$
9168  IF A$[1,1]="Y" THEN 9010
9169  CHAIN R,"*HELP"
9170  SYSTEM X,"BYE"
9900  DATA 27,42,15,3,86,1,-2,5,0,0
9999  END 
