stairs Art/Electric
L-SYSTEMS
back to programs
 
koch snowflakes
general von koch
hilbert curve
pythagorean tree
H-H dragon curve
peano-gosper 19
'H' branching curve
plant
sierpinski square
sierpinski arrow
gosper square
sierpinski curve
spirograph circle
sierpinski carpet
sierpinski gasket
peano-gosper 13
peano-gosper 7
peano curve
penrose tiling
snowflake halls
peano octagon
peano hexagon
levy curve
sierpinski pentagon
not sierpinski
peano curve - H
square knot
sierpinski square 2
koch pentagram
fass curve
square cross
cesaro triangle
realistic snowflake
gray code dragon
sierpinski gasket 3
sierpinski sieve
koch square curve
dekking island
koch island
koch ff curve
hexagon spacefill
 
e-mail
SPIROGRAPH CIRCLE
lsys spiral circle

PROGRAM LSYS_SPIROGRAPH_CIRCLE     ! (© W.van Duyn 20thApril 2004)
OPTION ANGLE degrees
SET WINDOW 0,1199,0,903
SET background color "white"
SET color 16
PRINT"Number of iterations try 18,(360 max)"
INPUT it
CLEAR
SET COLOR 16
FLOOD 1,1
LET depth=it
LET x=600
LET y=450
LET k=360/depth
LET size=64*sin(k)
LET a=0
FOR i1=1 TO it STEP 3
LET j1 = i1/it
SET COLOR MIX(i1) 0+j1,1,1-j1
NEXT i1
FOR i2=2 TO it STEP 3
LET j2 = i2/it
SET COLOR MIX(i2) 1,1-j,0+j2
NEXT i2
FOR i3=3 TO it STEP 3
LET j3 = i3/it
SET COLOR MIX(i3) 1-j3,j3,1
NEXT i3
CALL turnLEFT(a,k)
CALL lsys(depth,size,a,k,x,y,it)
END

SUB lsys(depth,size,a,k,x,y,it)
IF depth=0 THEN
EXIT IF
ELSE
CALL push(size,x,y,a)
CALL turnRIGHT(a,k)
CALL lsys(depth-1,size,a,k,x,y,it)
CALL pop(size,x,y,a)
FOR ii=1 to it
CALL moveON(size,x,y,a,depth)
CALL turnLEFT(a,k)
NEXT ii
END IF
END SUB

SUB moveON(size,x,y,a,depth)
OPTION ANGLE degrees
LET dx=size*cos(a)
LET dy=size*sin(a)
SET COLOR depth
PLOT x,y;x+dx,y+dy
LET x=x+dx
LET y=y+dy
END SUB

SUB turnRIGHT(a,k)
LET a=a-k
END SUB

SUB turnLEFT(a,k)
LET a=a+k
END SUB

MODULE stack     !saves and restores a graphics state
SHARE state(360,4),level
LET level=1
SUB push(size,x,y,a)
LET state(level,1)=size
LET state(level,2)=x
LET state(level,3)=y
LET state(level,4)=a
LET level=level+1
END SUB
SUB pop(size,x,y,a)
LET level=level-1
LET size=state(level,1)
LET x=state(level,2)
LET y=state(level,3)
LET a=state(level,4)
END SUB
END MODULE


Website, Text and Some Images Copyright © 2002 tzingaro.com, all rights reserved.