home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / cpmug / cpmug003.ark / PLOT2.BAS < prev    next >
Encoding:
BASIC Source File  |  1984-04-29  |  1.6 KB  |  56 lines

  1. REM PLOTS SIN & COS - 1 CYCLE - ON PLOT.DAT
  2. PLOT$="PLOT.DAT"
  3. FILE PLOT$
  4.     REM USER FUNCTION FOR X MODULO 2 (0=EVEN, 1=ODD)
  5. DEF FNEVEN(X)=X-2*INT(X/2)
  6.     REM USER FUNCTION TO A CHAR AT POSITION IN OLD STRING
  7. DEF FNSTRINGFIX$(OLD$,FIG$,POSITION) =    \
  8.     LEFT$(OLD$,POSITION-1) + FIG$ + MID$(OLD$,POSITION+1,1000)
  9. BAR$="!"
  10. BLANK$="                             "
  11. DUMMY$=BAR$+BLANK$+BAR$+BLANK$+BAR$
  12. PRINT # 1;BLANK$+"SINE = *          COSINE = +"
  13. PRINT # 1; "  "
  14. N$="      -1.0   -.8   -.6   -.4   -.2    .0    .2    .4    .6    .8   1.0"
  15. PRINT # 1;N$
  16. X$=" "
  17. FOR I=1 TO 10:X$=X$+"+-----":NEXT I
  18. X$=X$+"+"
  19. PRINT # 1;"DEGREES"+X$
  20.    
  21. REM    START CALC LOOP
  22. PI=3.141597
  23. PI24=PI/24
  24. K=-1
  25.     REM RUN FROM 0 TO 360 IN 25  STEPS
  26.     FOR J=0 TO 2*PI+PI24 STEP PI24
  27.     K=K+1
  28.     IF FNEVEN(K) EQ 0 THEN GO TO 10
  29.     START$="        "
  30.     GO TO 20
  31. 10    START$="  "+STR$(ANGLE+0.001)
  32.         FOR I=1 TO 5
  33.         IF MID$(START$,I,1) EQ "." THEN 30
  34.         NEXT I
  35. 30    START$=MID$(START$,I-3,3)+"     "
  36. REM            GET SIN $ COS
  37. 20    SINI=30*SIN(J)
  38.     COSI=30*COS(J)
  39. REM THERE ARE ALWAYS ALIGNMENT & "ROUNDOFF" PROBLEMS IN
  40. REM PLOTTING ON A TERMINAL. THIS IS AN ATTEMPT TO DEAL WITH IT
  41.     IF SINI LT 0 THEN SINI=SINI+1
  42.     IF COSI LT 0 THEN COSI=COSI+1
  43.     ANGLE=ANGLE+7.5
  44. REM THE PRIMITIVE INTEGER FIX USED HERE PRINTS 1 INSTEAD OF 0.
  45.      IF K EQ 0   THEN START$="  0     "
  46.         REM PLACE + THEN * ON LINE OF PLOT
  47.     LINE.TO.PRINT$=FNSTRINGFIX$(DUMMY$,"+",COSI+31)
  48.     LINE.TO.PRINT$=START$+FNSTRINGFIX$(LINE.TO.PRINT$,"*",SINI+31)
  49.     PRINT # 1; LINE.TO.PRINT$
  50.     NEXT J
  51. PRINT # 1; "       "+X$
  52. PRINT # 1; N$
  53. PRINT # 1; "  "
  54. PRINT # 1;"                PLOT OF SINE & COSINE FUNCTIONS FOR ONE CYCLE"
  55. CLOSE(1)
  56.