10  REM PROGRAM NAME = FIELDF, GRAVITATIONAL FORCE FIELD
20  DIM A$[72]
30  DIM L$[10]
40  L$="1234567890"
50  PRINT "DO YOU WANT INSTRUCTIONS FOR RUNNING FIELDF?  ";
60  ENTER 200,W,A$
70  PRINT '13
80  IF A$="YES" THEN 110
90  IF A$#"NO" THEN 50
100  GOTO 360
110  PRINT 
120  PRINT "IF YOU INPUT THE COORDINATES (X,Y) OF A POINT, THIS PROGRAM WILL"
130  PRINT "CALCULATE THE MAGNITUDE AND THE DIRECTION OF THE GRAVITATIONAL FORCE"
140  PRINT "AT THAT POINT.  IF YOU PUT THE INFORMATION ON GRAPH PAPER YOU WILL"
150  PRINT "HAVE A MAP OF A VECTOR FIELD."'10
160  PRINT "TO GET THE DIRECTION (0 TO 360 DEGREES) AT EACH POINT PLACE THE"
170  PRINT "ORIGIN OF THIS COORDINATE SYSTEM ON EACH POINT:"
180  PRINT '10"                              90"
190  PRINT "                               !"
200  PRINT "                               !"
210  PRINT "                         180---+---0,360"
220  PRINT "                               !"
230  PRINT "                               !"
240  PRINT "                              270"
250  PRINT 
260  PRINT "FOR EACH POINT YOU SHOULD PUT THE FOLLOWING INFORMATION ON YOUR PLOT:"
270  PRINT "  1. DRAW AN ARROW IN THE DIRECTION OF THE FIELD, AWAY FROM""     THE POINT, AND "
280  PRINT "  2. MAKE THE LENGTHS OF THE ARROWS PROPORTIONAL TO THE MAGNITUDE""     OF THE FIELD."
290  PRINT 
300  PRINT 
310  PRINT "THE FIELD IS CREATED WHEN YOU INPUT THE NUMBER OF SOURCES, THEIR"
320  PRINT "POSITIONS, AND MAGNITUDES.  THEN YOU CAN GET THE GRAVITATIONAL FORCE"
330  PRINT "OF THE FIELD AT VARIOUS POINTS BY INPUTTING THE COORDINATES OF"
340  PRINT "THOSE POINTS."
350  PRINT "IT IS SUGGESTED THAT YOU BEGIN BY USING ONE SOURCE, THEN MORE."'10
360  PRINT "HOW MANY SOURCES DO YOU WANT TO USE?  ";
370  ENTER 200,W,S
380  PRINT '13
390  IF S<7 THEN 410
400  PRINT "PLEASE USE LESS THAN 7 SOURCES."
410  FOR N=1 TO S
420  PRINT '10"----- SOURCE "L$[N,N]":"
430  K2=30
440  PRINT '10"INPUT THE MAGNITUDE(KILOGRAMS) OF SOURCE "L$[N,N]":  ";
450  ENTER 200,W,Q[N]
460  LET Q[N]=-ABS(Q[N])
470  PRINT '13
480  PRINT "INPUT THE (X,Y) COORDINATES(METERS) OF SOURCE "L$[N,N]": "
490  PRINT "   X = ";
500  ENTER K2,K3,X[N]
510  IF K3<0 THEN 530
520  GOTO 550
530  PRINT '13
540  GOTO 490
550  PRINT SPA(15);"Y = ";
560  ENTER #K1,K2,K3,Y[N]
570  PRINT '13
580  IF K3<0 THEN 490
590  NEXT N
600  PRINT 
610  PRINT '10"TO GET THE MAGNITUDES AND DIRECTIONS OF THE GRAVITATIONAL FORCE"
620  PRINT "AT VARIOUS POINTS, INPUT THOSE (X,Y) COORDINATES.  WHEN YOU HAVE"
630  PRINT "ENOUGH DATA INPUT THE WORD DONE."'10
640  PRINT '10"-----DATA TABLE:"'10
650  PRINT "COORDINATES";SPA(15);"DIRECTION";SPA(5);"VECTOR FIELD MAGNITUDE"
660  PRINT SPA(22);"!   (DEGREES";SPA(5)"!    (FIELD UNITS)"
670  PRINT "----------------------!----------------!----------------------"
680  PRINT "X = ";
690  ENTER #K1,K2,K3,X
700  IF K3=-256 THEN 680
710  IF K3<0 THEN 1230
720  PRINT "            Y = ";
730  ENTER #K1,K2,K3,Y
740  IF K3=-256 THEN 720
750  IF K3<0 THEN 1230
760  GOSUB 790
770  GOTO 680
780  PRINT 
790  LET H=V=0
800  FOR N=1 TO S
810  IF ( NOT (X-X[N])) AND ( NOT (Y-Y[N])) THEN 830
820  GOTO 850
830  LET H=V=1.E+19
840  GOTO 1160
850  LET R[N]=SQR((X-X[N])^2+(Y-Y[N])^2)
860  LET H1=((X-X[N])/R[N])*Q[N]/R[N]^2
870  LET V1=((Y-Y[N])/R[N])*Q[N]/R[N]^2
880  LET H=H+H1
890  LET V=V+V1
900  NEXT N
910  R=SQR(H^2+V^2)
920  IF (H=0) AND (V=0) THEN 1180
930  IF (H=0) AND (V>0) THEN 1080
940  IF (H=0) AND (V<0) THEN 1100
950  IF (H>0) AND (V=0) THEN 1120
960  IF (H<0) AND (V=0) THEN 1140
970  IF (H>0) AND (V>0) THEN 1010
980  IF (H<0) AND (V>0) THEN 1030
990  IF (H<0) AND (V<0) THEN 1030
1000  IF (H>0) AND (V<0) THEN 1050
1010  LET D=ATN(V/H)
1020  GOTO 1060
1030  LET D=3.14159+ATN(V/H)
1040  GOTO 1060
1050  LET D=(2*3.14159)+ATN(V/H)
1060  LET D=INT((D*180/3.14159)+.5)
1070  GOTO 1200
1080  LET D=90
1090  GOTO 1200
1100  LET D=270
1110  GOTO 1200
1120  LET D=0
1130  GOTO 1200
1140  LET D=180
1150  GOTO 1200
1160  PRINT SPA(35);"YOU ARE AT A SOURCE"
1170  GOTO 1220
1180  PRINT SPA(35);"VECTOR FIELD STRENGTH = 0"
1190  GOTO 1220
1200  PRINT SPA(22);"!    ";D;
1210  PRINT TAB(39)"!      "INT((R+.05)*100)/100
1220  RETURN 
1230  PRINT 
1240  PRINT '10"NOW PLOT THE DATA ON GRAPH PAPER TO GET A VECTOR FIELD MAP."
1250  END 
