0HOME
1?:?:? TAB(9); "PATTERN MAKER":?:INPUT "Pick a pattern number (1-5) 0r 0 to quit"; p
2IF p=1 THEN 10
3IF p=2 THEN 2000
4IF p=3 THEN 4000
5IF p=4 THEN 6000
6IF p=5 THEN 8000
7IF p=0 THEN END:TEXT
10 pi=3.1415926: p2=pi*2
15HGR2:HCOLOR =7: xc=140: yc=96
16 xm=1.2: ym=1.2
20 s=5*pi/180: ra=75
30FOR b=0 TO pi STEP s
40FOR a=0 TO pi STEP s
50 y=SIN(a)*ra*COS(b): x=COS(a)*ra
60IF a=0 THEN  a$="MOVE":GOTO 80
70 a$="DRAW"
80 x=INT(x): y=INT(y)
90GOSUB 1000
100NEXT a
110NEXT b
120FOR b=0 TO pi STEP s
130FOR a=0 TO pi STEP s
140 y=COS(a)*ra: x=SIN(a)*ra*COS(b)
150IF a=0 THEN  a$="MOVE":GOTO 170
160 a$="DRAW"
170 x=INT(x): y=INT(y)
180GOSUB 1000
190NEXT a:NEXT b
200FOR delay=1 TO 10000:NEXT:TEXT:GOTO 1
1000 xp=x*xm+xc: yp=192-(y*ym+yc)
1010IF a$="MOVE" THEN  xo=xp: yo=yp:RETURN
1020HPLOT xo, yo TO xp, yp
1030 xo=xp: yo=yp:RETURN
2000REM   
2015HGR2:HCOLOR =7: xc=140: yc=96
2016 xm=.95: ym=.95
2020FOR x1=0 TO 100 STEP 10
2030 y1=100-x1
2040 x=0: y=y1: a$="MOVE":GOSUB 3000
2050 x=x1: y=0: a$="DRAW":GOSUB 3000
2060NEXT x1
2070FOR delay=1 TO 10000:NEXT:TEXT:GOTO 1
3000 xp=x*xm+xc: yp=192-(y*ym+yc)
3010IF a$="MOVE" THEN  xo=xp: yo=yp:RETURN
3020HPLOT xo, yo TO xp, yp
3030 xo=xp: yo=yp:RETURN
4000REM   
4015HGR2:HCOLOR =7: xc=140: yc=96
4016 xm=.95: ym=.95
4020FOR c=1 TO 4
4030FOR x2=0 TO 100 STEP 10
4040 y=100-x2: x1=x2
4050IF c=2 THEN  y=-y
4060IF c=3 THEN  y=-y: x1=-x2
4070IF c=4 THEN  x1=-x2
4080 x=0: a$="MOVE":GOSUB 5000
4090 x=x1: y=0: a$="DRAW":GOSUB 5000
4100NEXT x2
4110NEXT c
4120FOR delay=1 TO 10000:NEXT:TEXT:GOTO 1
5000 xp=x*xm+xc: yp=192-(y*ym+yc)
5010IF a$="MOVE" THEN  xo=xp: yo=yp:RETURN
5020HPLOT xo, yo TO xp, yp
5030 xo=xp: yo=yp:RETURN
6000REM  
6005INPUT "NUMBER OF LEAVES = "; p: p=p/2
6010INPUT "SLOWLY TWISTING (Y/N) "; b$: b$=LEFT$(b$, 1)
6015HGR2:HCOLOR =7: xc=140: yc=96
6016 xm=.95: ym=.95
6020 pi=3.1415: p2=2*pi
6030 s=p2/180: n1=5: n2=4
6040FOR d=1 TO 10
6050 m1=n1*d: m2=n2*d:IF b$="Y" OR b$="y" THEN  aa=d*pi/30
6060FOR an=0 TO p2 STEP s: a=an+aa
6070 sn=ABS(SIN(an*p)): ra=sn*m1+m2
6080 x=COS(a)*ra: y=SIN(a)*ra
6090IF an=0 THEN  a$="MOVE":GOSUB 7000: x1=x: y1=y:GOTO 6120
6100 x=INT(x): y=INT(y)
6110 a$="DRAW":GOSUB 7000
6120NEXT an
6130 a$="DRAW":GOSUB 7000
6140NEXT d
6150FOR delay=1 TO 10000:NEXT:TEXT:GOTO 1
7000 xp=x*xm+xc: yp=192-(y*ym+yc)
7010IF a$="MOVE" THEN  xo=xp: yo=yp:RETURN
7020HPLOT xo, yo TO xp, yp
7030 xo=xp: yo=yp:RETURN
8000REM 
8010 pi=3.1415926: p2=pi*2: s=pi/2
8015HGR2:HCOLOR =7: xc=140: yc=96
8016 xm=.7: ym=.7
8020 s1=pi/10: ti=60: xi=150/p2
8030FOR an=0 TO p2 STEP s
8040IF an<=pi THEN  a1=ti*pi/180:GOTO 8060
8050 a1=-t1*pi/180
8060FOR n=0 TO p2 STEP s1
8070 y=COS(n)*42: x=COS(an)*n*xi
8080IF SIN(an)=1 THEN  z=n*xi:GOTO 8100
8090 z=TAN(an)*x
8100 z=ABS(z):IF z=0 THEN  z=1E-03
8110 l=SQR(z2+y2): a=ATN(y/z)+a1
8120 y=l*SIN(a)
8130IF n=0 THEN  a$="MOVE":GOTO 8150
8140 a$="DRAW"
8150 x=INT(x): y=INT(y):GOSUB 9000
8160NEXT n
8170NEXT an
8180FOR delay=1 TO 10000:NEXT:TEXT:GOTO 1
9000 xp=x*xm+xc: yp=192-(y*ym+yc)
9010IF a$="MOVE" THEN  xo=xp: yo=yp:RETURN
9020HPLOT xo, yo TO xp, yp
9030 xo=xp: yo=yp:RETURN
