8890  REM ***  HP TIME-SHARED BASIC PROGRAM LIBRARY  ********************
8891  REM
8892  REM         POLAR:  PLOTS SINGLE VARIABLE IN POLAR FORM
8893  REM
8894  REM         36155 (A820) REV A -- 7/71
8895  REM
8896  REM ***  CONTRIBUTED PROGRAM  ***************************************
8897  REM
8900  DEF FNR()=COS()+1
9000  REM**POLAR********
9010  REM**WRITTEN BY JOHN H. FIKUS**11/5/70****
9020  DIM A[33,55]
9030  READ D,R1,O1
9040  IF D>9999 THEN 9850
9050  D1=(2*3.14159*D)/360
9060  L=INT((O1*360)/D+1)
9070  X1=55
9080  Y1=33
9090  GOSUB 9450
9100  U=ABS(R1)
9110  O=-D1
9120  FOR I=1 TO L
9130  O=O+D1
9140  GOSUB 9560
9150  GOSUB 9620
9160  NEXT I
9170  PRINT 
9175  PRINT 
9180  PRINT 
9190  PRINT TAB(30)"(090)"
9200  REM:
9210  FOR I=1 TO 33
9220  IF I#17 THEN 9240
9230  PRINT "(180)";
9240  FOR K=55 TO 28 STEP -1
9250  LET M=K
9260  IF A[I,K]>0 THEN 9280
9270  NEXT K
9280  FOR J=1 TO M
9290  LET N=A[I,J]+1
9300  GOTO N OF 9370,9320,9340,9360
9310  STOP 
9320  PRINT TAB(J+4)"*";
9330  GOTO 9370
9340  PRINT TAB(J+4)"I";
9350  GOTO 9370
9360  PRINT TAB(J+4)"-";
9370  NEXT J
9380  IF I#17 THEN 9410
9390  PRINT TAB(38)"(000)"
9400  GOTO 9420
9410  PRINT 
9420  NEXT I
9430  PRINT TAB(30)"(270)"
9434  PRINT 
9435  PRINT 
9436  PRINT 
9440  GOTO 9999
9450  REM: MATRIX PACKING
9460  MAT A=ZER
9470  FOR J=1 TO 55
9480  A[17,J]=3
9490  NEXT J
9500  FOR I=1 TO 33
9510  A[I,28]=2
9520  NEXT I
9530  RETURN 
9540  REM:
9550  REM:
9560  REM: TRANSFORM POLAR TO CARTESIAN
9570  LET X=FNR(O)*COS(O)
9580  LET Y=FNR(O)*SIN(O)
9590  RETURN 
9600  REM:
9610  REM:
9620  REM: LOGIC SUBROUTINE
9630  IF ABS(Y)>U OR ABS(X)>U THEN 9730
9640  LET P=X
9650  LET B=X1
9660  GOSUB 9760
9670  LET K1=M
9680  LET P=Y
9690  LET B=Y1
9700  GOSUB 9760
9710  LET K2=M
9720  A[K2,K1]=1
9730  RETURN 
9740  REM:
9750  REM:
9760  REM: POINT LOCATIONS
9770  Z=((P+U)/(2*U))*(B-1)+1
9780  LET M=INT(Z)
9790  IF (Z-M)>.5 THEN 9810
9800  GOTO 9820
9810  M=M+1
9820  RETURN 
9830  REM:
9840  REM:
9850  PRINT "     THIS PROGRAM PLOTS FUNCTIONS IN POLAR FORM."
9852  PRINT "  TO USE IT TYPE:"
9854  PRINT 
9856  PRINT "        8900 DEF FNR(O)=<YOUR FUNCTION>"
9858  PRINT "        9900 DATA <INCR>,<RADIUS>,<NUMBER>"
9860  PRINT "        RUN"
9862  PRINT 
9864  PRINT "  WHERE,<INCR> IS THE DESIRED INCREMENT IN DEGREES"
9866  PRINT "  BETWEEN THE POINTS, <RADIUS> IS THE LARGEST VALUE OF"
9868  PRINT "  THE RADIAL DISPLACEMENT FROM THE ORIGIN TO BE PLOTTED"
9870  PRINT "  AND <NUMBER> IS THE NUMBER OF '360 DEGREE' PLOTTING"
9872  PRINT "  SWEEPS DESIRED (FOR MOST PROBLEMS 1 IS SUFFICIENT)."
9876  PRINT "     A GOOD INITIAL CHOICE FOR <INCR> AND <NUMBER> ARE"
9880  PRINT "  '10' AND '1' RESPECTIVELY. FOR <RADIUS> TRY TO CHOOSE"
9882  PRINT "  A VALUE SUCH THAT MOST OF THE FUNCTION WILL FIT ON"
9884  PRINT "  THE PLOTTING FIELD. IN OTHER WORDS IF FNR(0)=SIN(O)"
9886  PRINT "  THEN LET <RADIUS>=1."
9888  PRINT "     THE USER MAY NEED TO ADJUST THE VALUES OF <INCR>"
9890  PRINT "  <RADIUS> OR <NUMBER> TO OBTAIN THE BEST REPRESENTATION"
9892  PRINT "  OF THE FUNCTION."
9900  DATA 99999.,99999.,99999.
9999  END 
