10 REM ***************** 20 REM Pattern Generator 30 REM By Robin Nixon 40 REM ***************** 50 REM NC100/200 Version 60 REM Downloaded from Tim's Amstrad NC Users' Site 70 REM http://www.ncus.org.uk 80 ON ERROR REPORT:PRINT" at line ";ERL 90 PROCmenu 100 DEF PROCgeo 110 CLS 120 DIMX(1000):DIMY(1000) 130 CLS 140 PRINT:PRINT 150 INPUT"Input the number of sides. ",N 160 IF N<3 OR N>100000 GOTO 120 170 FOR P=0 TO N-1 180 X(P)=240+67*SIN(P*2*PI/N) 190 Y(P)=63+60*COS(P*2*PI/N) 200 NEXT:CLS 210 FOR J=1 TO N/2 220 FOR P=0 TO N-1 230 MOVE X(P),Y(P) 240 K=(P+J) MOD N 250 DRAW X(K),Y(K) 260 NEXT:NEXT 270 PRINT "Press N for next or Q for quit." 280 A$=GET$ 290 IF A$="N" THEN 130 300 IF A$="Q" THEN PROCmenu 310 DEF PROCpol 320 CLS 330 D=30:R=60 340 INPUT"Number of sides",N 350 CLS 360 INPUT"Number of revolutions",T 370 CLS 380 FOR K=1 TO T 390 PROCpoly(40,30,R,R,N,D) 400 D=D+5:R=R*0.95 410 NEXT K 420 PRINT"Press N for next or Q for quit." 430 A$=GET$ 440 IF A$="Q" THEN PROCmenu 450 IF A$="N" THEN PROCpol 460 GOTO 430 470 END 480 DEF PROCpoly(XC,YC,XR,YR,N,D) 490 PROCorigin(XC,YC) 500 A=2*PI/N:DR=D*PI/180 510 MOVE XR*COS(DR),YR*SIN(DR) 520 FOR P=1 TO N 530 X=XR*COS(P*A+DR) 540 Y=YR*SIN(P*A+DR) 550 DRAW X,Y 560 NEXT P 570 ENDPROC 580 DEFPROCorigin(XC,YC) 590 VDU 29,XC*4;YC*2; 600 ENDPROC 610 DEF PROClis 620 CLS 630 xc=200:yc=62 640 INPUT"Type a 3 number combination. (e.g. 13,65,32)",A%,B%,C% 650 CLS 660 VDU 29,xc;yc; 670 FOR angle=0 TO 180 STEP 0.1 680 : 690 x=45*SIN(RAD(A%*angle))*COS(RAD(B%*angle)) 700 y=45*SIN(RAD(A%*angle))*SIN(RAD(C%*angle)) 710 IF angle=0 THEN MOVE x,y ELSE DRAW x,y 720 NEXT angle 730 PRINT "Press N for next or Q for quit." 740 A$=GET$ 750 IF A$="N" THEN PROClis 760 IF A$="Q" THEN PROCmenu 770 DEF PROCmenu 780 CLS 790 PRINT " MENU OF PROGRAMS." 800 PRINT 810 PRINT 820 PRINT "<1> GEOMETRIC PATTERNS" 830 PRINT 840 PRINT "<2> POLYGON PATTERNS" 850 PRINT 860 PRINT "<3> LISSAJOUS PATTERNS" 870 A$=GET$ 880 IF A$="1" THEN PROCgeo 890 IF A$="2" THEN PROCpol 900 IF A$="3" THEN PROClis