Last active
April 16, 2020 23:11
-
-
Save scruss/a08020275183b928f16262d3cff66ae0 to your computer and use it in GitHub Desktop.
PLOTPOURRI for BBC Micro
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
10 REM ****************** | |
20 REM * * | |
30 REM * PLOTPOURRI * | |
40 REM * S COTTRELL * | |
50 REM * SEPT 1979 * | |
60 REM * * | |
70 REM ****************** | |
80 REM Washington Apple Pi Journal October 1979 | |
90 REM bbc basic / matrix brandy port - scruss, 2019-07 | |
100 MODE 1 | |
110 INPUT "WHICH PLOT FIRST (1-10)?";PN | |
120 ON PN GOTO 130,250,370,490,610,730,850,970,1090,1210 | |
130 X1=-4 | |
140 X2=4 | |
150 Y1=-4 | |
160 Y2=4 | |
170 ZS=45 | |
180 RZ=1 | |
190 PN=1 | |
200 ZN=0:ZM=1.9992 | |
210 PC=5:REM magenta | |
220 BC=0:REM black | |
230 F$="(COS(X*X+Y*Y)+1)*EXP(-(X*X+Y*Y)/6)" | |
240 GOSUB 1340 | |
250 X1=-4 | |
260 X2=4 | |
270 Y1=-4 | |
280 Y2=4 | |
290 ZS=12.5 | |
300 RZ=1 | |
310 PN=2 | |
320 ZN=0:ZM=2 | |
330 PC=2:REM blue, now green | |
340 BC=0:REM black | |
350 F$="1+COS(X*Y)" | |
360 GOSUB 1340 | |
370 X1=-6 | |
380 X2=2 | |
390 Y1=-5 | |
400 Y2=1 | |
410 ZS=25 | |
420 RZ=2 | |
430 PN=3 | |
440 ZN=-1:ZM=0.9999 | |
450 PC=0:REM black | |
460 BC=7:REM white? | |
470 F$="(-COS(X*X+Y*Y)-1)*EXP(-(X*X+Y*Y)/16)+1" | |
480 GOSUB 1340 | |
490 X1=-200 | |
500 X2=200 | |
510 Y1=-100 | |
520 Y2=200 | |
530 ZS=12.5 | |
540 RZ=2 | |
550 PN=4 | |
560 ZN=0:ZM=2 | |
570 PC=0:REM black | |
580 BC=7:REM white? | |
590 F$="1+COS((X+Y)/(LOG(X*X+Y^4)))" | |
600 GOSUB 1340 | |
610 X1=-20 | |
620 X2=20 | |
630 Y1=-20 | |
640 Y2=20 | |
650 ZS=40 | |
660 RZ=2 | |
670 PN=5 | |
680 ZN=-1.4955:ZM=-0.0001 | |
690 PC=0:REM black | |
700 BC=7:REM white? | |
710 F$="(COS(X*Y/SQR(X*X+Y*Y))-1)*EXP(-(X*X+Y*Y)/120)" | |
720 GOSUB 1340 | |
730 X1=-5 | |
740 X2=5 | |
750 Y1=-5 | |
760 Y2=5 | |
770 ZS=12.5 | |
780 RZ=2 | |
790 PN=6 | |
800 ZN=0:ZM=1.9999 | |
810 PC=0:REM black | |
820 BC=7:REM white? | |
830 F$="1+COS((X+Y)/(LOG(ABS(X*Y+0.5))))" | |
840 GOSUB 1340 | |
850 X1=-7 | |
860 X2=7 | |
870 Y1=-17.4 | |
880 Y2=17.4 | |
890 ZS=50 | |
900 RZ=2 | |
910 PN=7 | |
920 ZN=-0.1:ZM=0.8999 | |
930 PC=0:REM black | |
940 BC=7:REM white? | |
950 F$="Y*X*X/(Y*Y+X*X*X*X)+0.4" | |
960 GOSUB 1340 | |
970 X1=-3 | |
980 X2=3 | |
990 Y1=-3 | |
1000 Y2=3 | |
1010 ZS=10 | |
1020 RZ=1 | |
1030 PN=8 | |
1040 ZN=-0.7022:ZM=4.7021 | |
1050 PC=6:REM magenta | |
1060 BC=0:REM black | |
1070 F$="Y*X*(X*X-Y*Y)/(X*X+Y*Y)+2" | |
1080 GOSUB 1340 | |
1090 X1=-4 | |
1100 X2=6 | |
1110 Y1=-3 | |
1120 Y2=5.7 | |
1130 ZS=32 | |
1140 RZ=2 | |
1150 PN=9 | |
1160 ZN=-0.0985:ZM=3.0999 | |
1170 PC=7:REM white? | |
1180 BC=0:REM black | |
1190 F$="3*EXP(-(SQR(X*X+Y*Y)))+0.1*COS(X*Y)" | |
1200 GOSUB 1340 | |
1210 X1=-2 | |
1220 X2=3 | |
1230 Y1=-3 | |
1240 Y2=5.7 | |
1250 ZS=80 | |
1260 RZ=1 | |
1270 PN=10 | |
1280 ZN=-0.5217:ZM=0.9216 | |
1290 PC=6:REM blue | |
1300 BC=0:REM black | |
1310 F$="SIN(X*Y)*EXP(-(X*X+Y*Y)/9)+0.2" | |
1320 GOSUB 1340 | |
1330 GOTO 130 | |
1340 NY=RZ*87 | |
1350 NX=RZ*50 | |
1360 MODE 1 | |
1370 VDU23,1,0,0;0;0;0; | |
1380 VDU 19,3,PC,0,0,0 | |
1390 VDU 19,2,BC,0,0,0 | |
1400 DX=(X2-X1)/NX | |
1410 DY=(Y2-Y1)/NY | |
1420 H0=0 | |
1430 K1=58 | |
1440 K2=Y2-Y1 | |
1450 K3=90 | |
1460 K4=174 | |
1470 K5=191 | |
1480 K6=X2-X1 | |
1490 FOR X=X1 TO X2 STEP DX | |
1500 H0=100*(X-X1)/K6 | |
1510 NH=-1 | |
1520 FOR Y=Y1 TO Y2 STEP DY | |
1530 ZZ=EVAL(F$) | |
1540 V=-ZZ*ZS-(Y-Y1)/K2*K1+K3+H0 | |
1550 NH=NH+1 | |
1560 H=H0+NH*K4/NY | |
1570 IF V<0 OR V>K5 THEN GOTO 1630 | |
1580 GCOL 0,3:REM HCOLOR=PC | |
1590 PLOT 69,4*H,1024-4*V | |
1600 PLOT 0,0,-4 | |
1610 GCOL 0,2:REM HCOLOR=BC | |
1620 PLOT 5,4*H,0 | |
1630 NEXT Y | |
1640 NEXT X | |
1650 G=GET | |
1660 RETURN |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment