home *** CD-ROM | disk | FTP | other *** search
- 10 DIM A(32),Y(64),Z(64):SCREEN 12
- 20 CLS:LOCATE 10,30:INPUT "Line density (MAX=8)";LD$:LD=VAL(LD$):IF LD=0 or ld>8 THEN LD=5
- 30 LOCATE 12,33:INPUT "Dot density";DD$:DD=VAL(DD$):IF DD=0 or dd> 64 THEN DD=32
- 40 LOCATE 14,30:PRINT"Seclect Viewing Angle":PRINT TAB(30)" 0 degrees is from overheard":PRINT TAB(30)" 90 degrees is from the side"
- 50 LOCATE 18,30:INPUT "Angle in degrees";A$:A=VAL(A$):IF a=<0 or a>360 THEN A=70
- 60 A=A*3.14159/180:S=SIN(A):C=COS(A):CLS
- 70 FOR I=-4*DD TO 0
- 80 MAX=-200:MIN=200:X=I/DD:X1=INT(70*X+.5)
- 90 NL=INT(SQR(16-X*X)*LD)
- 100 FOR K=-NL TO 0
- 110 Y=K/LD
- 120 GOSUB 230
- 130 A(-K)=Z
- 140 GOSUB 260
- 150 NEXT K
- 160 GOSUB 350
- 170 NEXT I
- 180 SOUND 1000,2:T=TIMER:WHILE T+1.5>TIMER:WEND
- 190 IF INKEY$="" THEN 180
- 200 LOCATE 25,1:PRINT"Press <R>epeat, <N>ext or <E>xit";
- 210 A$=INKEY$:IF A$="R" OR A$="r" THEN 20 ELSE IF A$="N" OR A$="n" THEN 410 ELSE IF A$<>"E" AND A$<>"e" THEN 210
- 220 GOTO 4280
- 230 R=SQR(X*X+Y*Y)
- 240 Z=COS(4*R)/(R/2+2)-3*R/8+1
- 250 RETURN
- 260 Y=INT(70*(C*Y+S*Z)+.5)
- 270 IF M=4 THEN 310
- 280 IF Y<MIN THEN MIN=Y ELSE 310
- 290 PSET(320+X1,175-Y),14
- 300 PSET(320-X1,175-Y),14
- 310 IF Y>MAX THEN MAX=Y ELSE RETURN
- 320 PSET(320+X1,175-Y)
- 330 PSET(320-X1,175-Y)
- 340 RETURN
- 350 FOR K=0 TO NL
- 360 Z=A(K)
- 370 Y=K/LD
- 380 GOSUB 260
- 390 NEXT K
- 400 RETURN
- 410 CLS:LOCATE 10,30:INPUT "Line density (MAX=8)";LD$:LD=VAL(LD$):IF LD=0 or ld>8 THEN LD=3
- 420 LOCATE 12,33:INPUT "Dot density";DD$:DD=VAL(DD$):IF DD=0 or dd.64 THEN DD=32
- 430 LOCATE 14,30:PRINT"Seclect Viewing Angle":PRINT TAB(30)" 0 degrees is from overheard":PRINT TAB(30)" 90 degrees is from the side"
- 440 LOCATE 18,30:INPUT "Angle in degrees";A$:A=VAL(A$):IF a=<0 or a>360 THEN A=75
- 450 A=A*3.14159/180:S=SIN(A):C=COS(A):CLS
- 460 FOR I=-4*DD TO 0
- 470 MAX=-100:MIN=100:X=I/DD:X1=INT(70*X+.5)
- 480 NL=INT(SQR(16-X*X)*LD)
- 490 FOR K=-NL TO 0
- 500 Y=K/LD
- 510 GOSUB 620
- 520 A(-K)=Z
- 530 GOSUB 650
- 540 NEXT K
- 550 GOSUB 740
- 560 NEXT I
- 570 SOUND 1000,2:T=TIMER:WHILE T+1.5>TIMER:WEND
- 580 IF INKEY$="" THEN 570
- 590 LOCATE 25,1:PRINT"Press <R>epeat, <N>ext or <E>xit";
- 600 A$=INKEY$:IF A$="R" OR A$="r" THEN 410 ELSE IF A$="N" OR A$="n" THEN 800 ELSE IF A$<>"E" AND A$<>"e" THEN 600
- 610 GOTO 4280
- 620 R=.75*SQR(X*X+Y*Y)
- 630 Z=1+COS(R)-COS(2*R)/2
- 640 RETURN
- 650 Y=INT(60*(C*Y+S*Z)+.5)
- 660 IF M=4 THEN 700
- 670 IF Y<MIN THEN MIN=Y ELSE 700
- 680 PSET(320+X1,175-Y),14
- 690 PSET(320-X1,175-Y),14
- 700 IF Y>MAX THEN MAX=Y ELSE RETURN
- 710 PSET(320+X1,175-Y)
- 720 PSET(320-X1,175-Y)
- 730 RETURN
- 740 FOR K=0 TO NL
- 750 Z=A(K)
- 760 Y=K/LD
- 770 GOSUB 650
- 780 NEXT K
- 790 RETURN
- 800 CLS:LOCATE 10,30:INPUT "Line density (MAX=8)";LD$:LD=VAL(LD$):IF LD=0 or ld>8 THEN LD=8
- 810 LOCATE 12,33:INPUT "Dot density";DD$:DD=VAL(DD$):IF DD=0 or dd> 64 THEN DD=32
- 820 LOCATE 14,30:PRINT"Seclect Viewing Angle":PRINT TAB(30)" 0 degrees is from overheard":PRINT TAB(30)" 90 degrees is from the side"
- 830 LOCATE 18,30:INPUT "Angle in degrees";A$:A=VAL(A$):IF a=<0 or a>360 THEN A=70
- 840 A=A*3.14159/180:S=SIN(A):C=COS(A):CLS
- 850 FOR I=-4*DD TO 0
- 860 MAX=-200:MIN=200:X=I/DD:X1=INT(65*X+.5)
- 870 NL=INT(SQR(16-X*X)*LD)
- 880 FOR K=-NL TO 0
- 890 Y=K/LD
- 900 GOSUB 1010
- 910 A(-K)=Z
- 920 GOSUB 1040
- 930 NEXT K
- 940 GOSUB 1120
- 950 NEXT I
- 960 SOUND 1000,2:T=TIMER:WHILE T+1.5>TIMER:WEND
- 970 IF INKEY$="" THEN 960
- 980 LOCATE 25,1:PRINT"Press <R>epeat, <N>ext or <E>xit";
- 990 A$=INKEY$:IF A$="R" OR A$="r" THEN 800 ELSE IF A$="N" OR A$="n" THEN 1180 ELSE IF A$<>"E" AND A$<>"e" THEN 990
- 1000 GOTO 4280
- 1010 R=1.25*SQR(X*X+Y*Y)
- 1020 Z=1.75*(COS(R)+.4*COS(3*R))+.25
- 1030 RETURN
- 1040 Y=INT(55*(C*Y+S*Z)+.5)
- 1050 IF Y<MIN THEN MIN=Y ELSE 1080
- 1060 PSET(320+X1,175-Y),14
- 1070 PSET(320-X1,175-Y),14
- 1080 IF Y>MAX THEN MAX=Y ELSE RETURN
- 1090 PSET(320+X1,175-Y)
- 1100 PSET(320-X1,175-Y)
- 1110 RETURN
- 1120 FOR K=0 TO NL
- 1130 Z=A(K)
- 1140 Y=K/LD
- 1150 GOSUB 1040
- 1160 NEXT K
- 1170 RETURN
- 1180 CLS:LOCATE 10,30:INPUT "Line density (MAX=8)";LD$:LD=VAL(LD$):IF LD=0 or ld>8 THEN LD=4
- 1190 LOCATE 12,33:INPUT "Dot density";DD$:DD=VAL(DD$):IF DD=0 or dd>64 THEN DD=32
- 1200 LOCATE 14,30:PRINT"Seclect Viewing Angle":PRINT TAB(30)" 0 degrees is from overheard":PRINT TAB(30)" 90 degrees is from the side"
- 1210 LOCATE 18,30:INPUT "Angle in degrees";A$:A=VAL(A$):IF a=<0 or a>360 THEN A=75
- 1220 A=A*3.14159/180:S=SIN(A):C=COS(A):CLS
- 1230 FOR I=-4*DD TO 0
- 1240 MAX=-100:MIN=100:X=I/DD:X1=INT(70*X+.5)
- 1250 NL=INT(SQR(16-X*X)*LD)
- 1260 FOR K=-NL TO 0
- 1270 Y=K/LD
- 1280 GOSUB 1390
- 1290 A(-K)=Z
- 1300 GOSUB 1420
- 1310 NEXT K
- 1320 GOSUB 1500
- 1330 NEXT I
- 1340 SOUND 1000,2:T=TIMER:WHILE T+1.5>TIMER:WEND
- 1350 IF INKEY$="" THEN 1340
- 1360 LOCATE 25,1:PRINT"Press <R>epeat, <N>ext or <E>xit";
- 1370 A$=INKEY$:IF A$="R" OR A$="r" THEN 1180 ELSE IF A$="N" OR A$="n" THEN 1560 ELSE IF A$<>"E" AND A$<>"e" THEN 1370
- 1380 GOTO 4280
- 1390 R=SQR(X*X+Y*Y)
- 1400 Z=2*EXP(-R)*COS(3*R)
- 1410 RETURN
- 1420 Y=INT(70*(C*Y+S*Z)+.5)
- 1430 IF Y<MIN THEN MIN=Y ELSE 1460
- 1440 PSET(320+X1,175-Y),14
- 1450 PSET(320-X1,175-Y),14
- 1460 IF Y>MAX THEN MAX=Y ELSE RETURN
- 1470 PSET(320+X1,175-Y)
- 1480 PSET(320-X1,175-Y)
- 1490 RETURN
- 1500 FOR K=0 TO NL
- 1510 Z=A(K)
- 1520 Y=K/LD
- 1530 GOSUB 1420
- 1540 NEXT K
- 1550 RETURN
- 1560 CLS:LOCATE 10,30:INPUT "Line density (MAX=8)";LD$:LD=VAL(LD$):IF LD=0 or ld>8 THEN LD=4
- 1570 LOCATE 12,33:INPUT "Dot density";DD$:DD=VAL(DD$):IF DD=0 or dd>64 THEN DD=32
- 1580 LOCATE 14,30:PRINT"Seclect Viewing Angle":PRINT TAB(30)" 0 degrees is from overheard":PRINT TAB(30)" 90 degrees is from the side"
- 1590 LOCATE 18,30:INPUT "Angle in degrees";A$:A=VAL(A$):IF a=<0 or a>360 THEN A=75
- 1600 A=A*3.14159/180:S=SIN(A):C=COS(A):CLS
- 1610 FOR I=-4*DD TO 0
- 1620 MAX=-100:MIN=100:X=I/DD:X1=INT(70*X+.5)
- 1630 NL=4*LD
- 1640 FOR K=-NL TO 0
- 1650 Y=K/LD
- 1660 GOSUB 1770
- 1670 A(-K)=Z
- 1680 GOSUB 1800
- 1690 NEXT K
- 1700 GOSUB 1880
- 1710 NEXT I
- 1720 SOUND 1000,2:T=TIMER:WHILE T+1.5>TIMER:WEND
- 1730 IF INKEY$="" THEN 1720
- 1740 LOCATE 25,1:PRINT"Press <R>epeat, <N>ext or <E>xit";
- 1750 A$=INKEY$:IF A$="R" OR A$="r" THEN 1560 ELSE IF A$="N" OR A$="n" THEN 1940 ELSE IF A$<>"E" AND A$<>"e" THEN 1750
- 1760 GOTO 4280
- 1770 R=SQR(X*X+Y*Y)
- 1780 Z=2*EXP(-R)*COS(3*R)
- 1790 RETURN
- 1800 Y=INT(70*(C*Y+S*Z)+.5)
- 1810 IF Y<MIN THEN MIN=Y ELSE 1840
- 1820 PSET(320+X1,175-Y)
- 1830 PSET(320-X1,175-Y)
- 1840 IF Y>MAX THEN MAX=Y ELSE RETURN
- 1850 PSET(320+X1,175-Y)
- 1860 PSET(320-X1,175-Y)
- 1870 RETURN
- 1880 FOR K=0 TO NL
- 1890 Z=A(K)
- 1900 Y=K/LD
- 1910 GOSUB 1800
- 1920 NEXT K
- 1930 RETURN
- 1940 CLS:LOCATE 10,30:INPUT "Line density (MAX=8)";LD$:LD=VAL(LD$):IF LD=0 or ld>8 THEN LD=5
- 1950 LOCATE 12,33:INPUT "Dot density";DD$:DD=VAL(DD$):IF DD=0 or dd>64 THEN DD=32
- 1960 LOCATE 14,30:PRINT"Seclect Viewing Angle":PRINT TAB(30)" 0 degrees is from overheard":PRINT TAB(30)" 90 degrees is from the side"
- 1970 LOCATE 18,30:INPUT "Angle in degrees";A$:A=VAL(A$):IF a=<0 THEN A=70
- 1980 A=A*3.14159/180:S=SIN(A):C=COS(A):CLS
- 1990 FOR I=0 TO 5*DD
- 2000 MAX=-200:MIN=200:X1=INT(52*(-5+I/DD)+.5):X2=-4+I/DD
- 2010 IF I<=2*DD THEN NL=INT(I/DD*4*LD) ELSE NL=8*LD
- 2020 FOR J=0 TO NL
- 2030 X=X2-J/4/LD:Y=-4+J/LD
- 2040 GOSUB 2150:Y(J)=Y:Z(J)=Z
- 2050 GOSUB 2180:NEXT J
- 2060 MAX=-200:MIN=200:X1=-X1
- 2070 FOR J=NL TO 0 STEP -1
- 2080 Y=-Y(J):Z=Z(J)
- 2090 GOSUB 2180:NEXT J,I
- 2100 SOUND 1000,2:T=TIMER:WHILE T+1.5>TIMER:WEND
- 2110 IF INKEY$="" THEN 2100
- 2120 LOCATE 25,1:PRINT"Press <R>epeat, <N>ext or <E>xit";
- 2130 A$=INKEY$:IF A$="R" OR A$="r" THEN 1940 ELSE IF A$="N" OR A$="n" THEN 2250 ELSE IF A$<>"E" AND A$<>"e" THEN 2130
- 2140 GOTO 4280
- 2150 R=.75*SQR(X*X+Y*Y)
- 2160 Z=2*(COS(R)-COS(3*R)/3+COS(5*R)/5)+.25
- 2170 RETURN
- 2180 Y=INT(60*(C*Y+S*Z)+.5)
- 2190 IF M=4 THEN 2220
- 2200 IF Y<MIN THEN MIN=Y ELSE 2220
- 2210 PSET(320+X1,175-Y)
- 2220 IF Y>MAX THEN MAX=Y ELSE RETURN
- 2230 PSET(320+X1,175-Y)
- 2240 RETURN
- 2250 CLS:LOCATE 10,30:INPUT "Line density (MAX=8)";LD$:LD=VAL(LD$):IF LD=0 or ld>8 THEN LD=5
- 2260 LOCATE 12,33:INPUT "Dot density";DD$:DD=VAL(DD$):IF DD=0 or dd>64 THEN DD=32
- 2270 DD=DD/2:DX=1/4/DD
- 2280 LOCATE 14,30:PRINT"Seclect Viewing Angle":PRINT TAB(30)" 0 degrees is from overheard":PRINT TAB(30)" 90 degrees is from the side"
- 2290 LOCATE 18,30:INPUT "Angle in degrees";A$:A=VAL(A$):IF a=<0 THEN A=70
- 2300 A=A*3.14159/180:S=SIN(A):C=COS(A):CLS
- 2310 FOR I=0 TO 5*DD
- 2320 MAX=-200:MIN=200:X1=INT(42*(-5+I/DD)+.5):X2=-4+I/DD
- 2330 IF I<2*DD THEN NL=INT(I/DD*4*LD) ELSE NL=8*LD
- 2340 FOR J=0 TO NL
- 2350 X=X2-J/4/LD:Y=-4+J/LD
- 2360 GOSUB 2470:Y(J)=Y:Z(J)=Z
- 2370 GOSUB 2500:NEXT J
- 2380 MAX=-200:MIN=200:X1=-X1
- 2390 FOR J=NL TO 0 STEP-1
- 2400 Y=-Y(J):Z=Z(J)
- 2410 GOSUB 2500:NEXT J,I
- 2420 SOUND 1000,2:T=TIMER:WHILE T+1.5>TIMER:WEND
- 2430 IF INKEY$="" THEN 2420
- 2440 LOCATE 25,1:PRINT"Press <R>epeat, <N>ext or <E>xit";
- 2450 A$=INKEY$:IF A$="R" OR A$="r" THEN 2250 ELSE IF A$="N" OR A$="n" THEN 2570 ELSE IF A$<>"E" AND A$<>"e" THEN 2450
- 2460 GOTO 4280
- 2470 R=SQR(X*X+Y*Y)
- 2480 Z=COS(4*R)/(R/2+2)-3*R/8+1
- 2490 RETURN
- 2500 Y=INT(60*(C*Y+S*Z)+.5)
- 2510 IF M=4 THEN 2540
- 2520 IF Y<MIN THEN MIN=Y ELSE 2540
- 2530 PSET(320+X1,175-Y),14
- 2540 IF Y>MAX THEN MAX=Y ELSE RETURN
- 2550 PSET(320+X1,175-Y)
- 2560 RETURN
- 2570 CLS:LOCATE 12,33:INPUT "Dot density";DD$:DD=VAL(DD$):IF DD=0 or dd>64 THEN DD=16
- 2580 DD=DD/2:DX=1/4/DD
- 2590 LOCATE 14,30:PRINT"Seclect Viewing Angle":PRINT TAB(30)" 0 degrees is from overheard":PRINT TAB(30)" 90 degrees is from the side"
- 2600 LOCATE 18,30:INPUT "Angle in degrees";A$:A=VAL(A$):IF a=<0 THEN A=75
- 2610 A=A*3.14159/180:S=SIN(A):C=COS(A):CLS
- 2620 FOR I=0 TO 7:FOR K=0 TO 1:FOR J=0 TO DD-1
- 2630 MAX=-100:MIN=100:X=-4+I/2+K/4+J*DX:X1=INT(70*X+.5):CC=16
- 2640 FOR L=0 TO 7:FOR N=1 TO 2
- 2650 IF K=0 THEN F=(-1)^N*(DD-J)*DX ELSE F=(-1)^N*J*DX
- 2660 Y=-3.75+L/2+F:GOSUB 2780
- 2670 Y(CC)=Y:Z(CC)=Z:CC=CC-1
- 2680 GOSUB 2810:NEXT N,L
- 2690 GOSUB 2900:NEXT J,K,I
- 2700 X1=0:MAX=-100:MIN=100
- 2710 FOR I=-4 TO 4 STEP .5:Y=I:GOSUB 2780:GOSUB 2810:NEXT I
- 2720 SOUND 1000,2
- 2730 T=TIMER:WHILE T+1.5>TIMER:WEND
- 2740 IF INKEY$="" THEN 2720
- 2750 LOCATE 25,1:PRINT"Press <R>epeat, <N>ext or <E>xit";
- 2760 A$=INKEY$:IF A$="R" OR A$="r" THEN 2570 ELSE IF A$="N" OR A$="n" THEN 2910 ELSE IF A$<>"E" AND A$<>"e" THEN 2760
- 2770 GOTO 4280
- 2780 R=SQR(X*X+Y*Y)
- 2790 Z=2.5*EXP(-R*R/4)
- 2800 RETURN
- 2810 Y=INT(70*(C*Y+S*Z)+.5)
- 2820 IF M=4 THEN 2860
- 2830 IF Y<MIN THEN MIN=Y ELSE 2860
- 2840 PSET(320+X1,175-Y)
- 2850 PSET(320-X1,175-Y)
- 2860 IF Y>MAX THEN MAX=Y ELSE RETURN
- 2870 PSET(320+X1,175-Y)
- 2880 PSET(320-X1,175-Y)
- 2890 RETURN
- 2900 FOR II=CC+1 TO 16:Z=Z(II):Y=-Y(II):GOSUB 2810:NEXT II:RETURN
- 2910 CLS:LOCATE 12,33:INPUT "Dot density";DD$:DD=VAL(DD$):IF DD=0 or dd>8 THEN DD=16
- 2920 DD=DD/2:DX=1/4/DD
- 2930 LOCATE 14,30:PRINT"Seclect Viewing Angle":PRINT TAB(30)" 0 degrees is from overheard":PRINT TAB(30)" 90 degrees is from the side"
- 2940 LOCATE 18,30:INPUT "Angle in degrees";A$:A=VAL(A$):IF a=<0 THEN A=65
- 2950 A=A*3.14159/180:S=SIN(A):C=COS(A):CLS
- 2960 FOR I=0 TO 7:FOR K=0 TO 1:FOR J=0 TO DD-1
- 2970 MAX=-100:MIN=100:X=-4+I/2+K/4+J*DX:X1=INT(70*X+.5):CC=16
- 2980 FOR L=0 TO 7:FOR N=1 TO 2
- 2990 IF K=0 THEN F=(-1)^N*(DD-J)*DX ELSE F=(-1)^N*J*DX
- 3000 Y=-3.75+L/2+F:GOSUB 3140
- 3010 IF Y<-(X+4) THEN 3040
- 3020 Y(CC)=Y:Z(CC)=Z:CC=CC-1
- 3030 GOSUB 3170
- 3040 NEXT N,L
- 3050 GOSUB 3260:NEXT J,K,I
- 3060 X1=0:MAX=-100:MIN=100
- 3070 FOR I=-4 TO 4 STEP .5:Y=I:GOSUB 3140:GOSUB 3170:NEXT I
- 3080 SOUND 1000,2
- 3090 T=TIMER:WHILE T+1.5>TIMER:WEND
- 3100 IF INKEY$="" THEN 3080
- 3110 LOCATE 25,1:PRINT"Press <R>epeat, <N>ext or <E>xit";
- 3120 A$=INKEY$:IF A$="R" OR A$="r" THEN 2910 ELSE IF A$="N" OR A$="n" THEN 3270 ELSE IF A$<>"E" AND A$<>"e" THEN 3120
- 3130 GOTO 4280
- 3140 R=SQR(X*X+Y*Y)
- 3150 Z=1.25-3*EXP(-R*R/2)
- 3160 RETURN
- 3170 Y=INT(70*(C*Y+S*Z)+.5)
- 3180 IF M=4 THEN 3220
- 3190 IF Y<MIN THEN MIN=Y ELSE 3220
- 3200 PSET(320+X1,175-Y),14
- 3210 PSET(320-X1,175-Y),14
- 3220 IF Y>MAX THEN MAX=Y ELSE RETURN
- 3230 PSET(320+X1,175-Y)
- 3240 PSET(320-X1,175-Y)
- 3250 RETURN
- 3260 FOR II=CC+1 TO 16:Z=Z(II):Y=-Y(II):GOSUB 3170:NEXT II:RETURN
- 3270 CLS:LOCATE 12,33:INPUT "Dot density";DD$:DD=VAL(DD$):IF DD=0 or dd>64 THEN DD=32
- 3280 DD=DD/2:DX=1/4/DD
- 3290 LOCATE 14,30:PRINT"Seclect Viewing Angle":PRINT TAB(30)" 0 degrees is from overheard":PRINT TAB(30)" 90 degrees is from the side"
- 3300 LOCATE 18,30:INPUT "Angle in degrees";A$:A=VAL(A$):IF a=<0 THEN A=70
- 3310 A=A*3.14159/180:S=SIN(A):C=COS(A):CLS
- 3320 FOR I=0 TO 7:FOR K=0 TO 1:FOR J=0 TO DD-1
- 3330 MAX=-200:MIN=200:X=-4+I/2+K/4+J*DX:X1=INT(70*X+.5):CC=16
- 3340 FOR L=0 TO 7:FOR N=1 TO 2
- 3350 IF K=0 THEN F=(-1)^N*(DD-J)*DX ELSE F=(-1)^N*J*DX
- 3360 Y=-3.75+L/2+F:GOSUB 3500
- 3370 IF Y<-SQR(16-X*X) THEN 3400
- 3380 Y(CC)=Y:Z(CC)=Z:CC=CC-1
- 3390 GOSUB 3530
- 3400 NEXT N,L
- 3410 GOSUB 3620:NEXT J,K,I
- 3420 X1=0:MIN=200:MAX=-200
- 3430 FOR I=-4 TO 4 STEP .5:Y=I:GOSUB 3500:GOSUB 3530:NEXT I
- 3440 SOUND 1000,2
- 3450 T=TIMER:WHILE T+1.5>TIMER:WEND
- 3460 IF INKEY$="" THEN 3440
- 3470 LOCATE 25,1:PRINT"Press <R>epeat, <N>ext or <E>xit";
- 3480 A$=INKEY$:IF A$="R" OR A$="r" THEN 3270 ELSE IF A$="N" OR A$="n" THEN 3630 ELSE IF A$<>"E" AND A$<>"e" THEN 3480
- 3490 GOTO 4280
- 3500 R=SQR(X*X+Y*Y)
- 3510 Z=1.5*(COS(R)-COS(3*R)/3)+.5
- 3520 RETURN
- 3530 Y=INT(70*(C*Y+S*Z)+.5)
- 3540 IF M=4 THEN 3580
- 3550 IF Y<MIN THEN MIN=Y ELSE 3580
- 3560 PSET(320+X1,175-Y)
- 3570 PSET(320-X1,175-Y)
- 3580 IF Y>MAX THEN MAX=Y ELSE RETURN
- 3590 PSET(320+X1,175-Y)
- 3600 PSET(320-X1,175-Y)
- 3610 RETURN
- 3620 FOR II=CC+1 TO 16:Z=Z(II):Y=-Y(II):GOSUB 3530:NEXT II:RETURN
- 3630 CLS:LOCATE 12,33:INPUT "Dot density";DD$:DD=VAL(DD$):IF DD=0 or dd>64 THEN DD=16
- 3640 DD=DD/2:DX=1/4/DD
- 3650 LOCATE 14,30:PRINT"Seclect Viewing Angle":PRINT TAB(30)" 0 degrees is from overheard":PRINT TAB(30)" 90 degrees is from the side"
- 3660 LOCATE 18,30:INPUT "Angle in degrees";A$:A=VAL(A$):IF a=<0 THEN A=75
- 3670 A=A*3.14159/180:S=SIN(A):C=COS(A):CLS
- 3680 FOR I=0 TO 7:FOR K=0 TO 1:FOR J=0 TO DD-1
- 3690 MAX=-200:MIN=200:X=-4+I/2+K/4+J*DX:X1=INT(70*X+.5):CC=16
- 3700 FOR L=0 TO 7:FOR N=1 TO 2
- 3710 IF K=0 THEN F=(-1)^N*(DD-J)*DX ELSE F=(-1)^N*J*DX
- 3720 Y=-3.75+L/2+F:GOSUB 3840
- 3730 Y(CC)=Y:Z(CC)=Z:CC=CC-1
- 3740 GOSUB 3870:NEXT N,L
- 3750 GOSUB 3960:NEXT J,K,I
- 3760 X1=0:MAX=-200:MIN=200
- 3770 FOR I=-4 TO 4 STEP .5:Y=I:GOSUB 3840:GOSUB 3870:NEXT I
- 3780 SOUND 1000,2
- 3790 T=TIMER:WHILE T+1.5>TIMER:WEND
- 3800 IF INKEY$="" THEN 3780
- 3810 LOCATE 25,1:PRINT"Press <R>epeat, <N>ext or <E>xit";
- 3820 A$=INKEY$:IF A$="R" OR A$="r" THEN 3630 ELSE IF A$="N" OR A$="n" THEN 3970 ELSE IF A$<>"E" AND A$<>"e" THEN 3820
- 3830 GOTO 4280
- 3840 R=SQR(X*X+Y*Y)
- 3850 Z=COS(4*R)/(R/2+2)-3*R/8+1
- 3860 RETURN
- 3870 Y=INT(70*(C*Y+S*Z)+.5)
- 3880 IF M=4 THEN 3920
- 3890 IF Y<MIN THEN MIN=Y ELSE 3920
- 3900 PSET(320+X1,175-Y)
- 3910 PSET(320-X1,175-Y)
- 3920 IF Y>MAX THEN MAX=Y ELSE RETURN
- 3930 PSET(320+X1,175-Y)
- 3940 PSET(320-X1,175-Y)
- 3950 RETURN
- 3960 FOR II=CC+1 TO 16:Z=Z(II):Y=-Y(II):GOSUB 3870:NEXT II:RETURN
- 3970 CLS:LOCATE 10,30:INPUT "Line density (MAX=8)";LD$:LD=VAL(LD$):IF LD=0 or ld>8 THEN LD=5
- 3980 LOCATE 12,33:INPUT "Dot density";DD$:DD=VAL(DD$):IF DD=0 or dd>64 THEN DD=32
- 3990 LOCATE 14,30:PRINT"Seclect Viewing Angle":PRINT TAB(30)" 0 degrees is from overheard":PRINT TAB(30)" 90 degrees is from the side"
- 4000 LOCATE 18,30:INPUT "Angle in degrees";A$:A=VAL(A$):IF a=<0 THEN A=70
- 4010 A=A*3.14159/180:S=SIN(A):C=COS(A):CLS
- 4020 FOR I=0 TO 5*DD
- 4030 MAX=-200:MIN=200:X1=INT(52*(-5+I/DD)+.5):X2=-4+I/DD
- 4040 IF I<=2*DD THEN NL=INT(I/DD*4*LD) ELSE NL=8*LD
- 4050 FOR J=0 TO NL
- 4060 X=X2-J/4/LD:Y=-4+J/LD
- 4070 GOSUB 4180:Y(J)=Y:Z(J)=Z
- 4080 GOSUB 4210:NEXT J
- 4090 MAX=-200:MIN=200:X1=-X1
- 4100 FOR J=NL TO 0 STEP -1
- 4110 Y=-Y(J):Z=Z(J)
- 4120 GOSUB 4210:NEXT J,I
- 4130 SOUND 1000,2:T=TIMER:WHILE T+1.5>TIMER:WEND
- 4140 IF INKEY$="" THEN 4130
- 4150 LOCATE 25,1:PRINT"Press <R>epeat or <E>xit";
- 4160 A$=INKEY$:IF A$="R" OR A$="r" THEN 3970 ELSE IF A$<>"E" AND A$<>"e" THEN 4160
- 4170 GOTO 4280
- 4180 R=SQR(X*X+Y*Y)
- 4190 Z=COS(4*R)/(R/2+2)-3*R/8+1
- 4200 RETURN
- 4210 Y=INT(65*(C*Y+S*Z)+.5)
- 4220 IF M=4 THEN 4250
- 4230 IF Y<MIN THEN MIN=Y ELSE 4250
- 4240 PSET(320+X1,175-Y)
- 4250 IF Y>MAX THEN MAX=Y ELSE RETURN
- 4260 PSET(320+X1,175-Y)
- 4270 RETURN
- 4280 cls:end