;spirograph, by Foxy (uses default line size and color)
;Usage: "spiro "
;uses ipt-1 SINE and COSINE
{ "" CHATSTR = "$1" GREPSUB ATOI ring = "$2" GREPSUB ATOI wheel =
"$3" GREPSUB ATOI hole = MOUSEPOS cy = cx = ring wheel - wr =
ring -360 * wheel / 360 + ws = 0 ra = 0 ld = 1 rnd =
{ dv = { dv rnd *= } { ring rnd / dv % NOT wheel rnd / dv % NOT AND } WHILE
} [ 2 3 5 7 11 13 ] FOREACH
wheel rnd / 360 * rnd =
{ ra ws * 360 / wa = cx ra SINE wr * 1000 / + wa SINE hole * 1000 / +
cy ra COSINE wr * 1000 / + wa COSINE hole * 1000 / +
} spt DEF
{ spt EXEC 12 ra += spt EXEC LINE ld ++
{ BREAK } ld 128 == IF
} { ra rnd < } WHILE
} CHATSTR "^spiro ([0-9]+) ([0-9]+) ([0-9]+)" GREPSTR IF