a buggy concatenative turtle (mobilis terrapin)
Requires javascript and <canvas> support (Safari,Opera,Firefox?). Userproofing not included.
My Opera can't hack matrix changes while drawing — if you don't see any output, enable
pen | toggle pen up/down |
mirror | toggle left/right |
reverse | toggle forward/back |
turn X | rotate X degrees |
forward X | translate X units |
scale X | multiply unit size |
|
repeat N [ ] | repeat a plan N times |
poly N [ ] | repeat with implicit turning |
within [ ] [ ] | sandwich a plan (within a b == a b a) |
|
inverse [ ] | produce the opposite of a plan (inverse a == a-1) |
under [ ] [ ] | make a do/undo sandwich (under a b == a b a-1) |
|
flip NAME | switch argument order (flip f b a == f a b) |
def NAME [ ] | define a subplan (sorry, no arguments) |
repeat 4 [ forward 100 turn 90 ]
poly 6 [ poly 36 [ reverse pen forward 20 ] ]
def spot [ poly 6 [ forward 10 ] ]
def arm [ under [ forward 70 turn -60 ] ]
poly 12 [ arm spot ]
def coil [ repeat 300 [ turn 5 forward 5 scale .99 ] ]
def branch [ flip under [ ] ]
poly 2 [ branch coil ]
def jog [ forward 30 under [ turn 45 ] [ forward 10 ] ]
def joggle [ under jog reverse reverse ]
poly 6 [ poly 5 joggle ]
def t [ turn 90 ]
def f [ forward 60 ]
def h [ forward 30 ]
def x [ under [ under t f ] h ]
def u [ under t f h ]
def q [ under [ repeat 2 u ] ]
def w [ under [ repeat 1 u ] ]
def e [ under [ repeat 0 u ] ]
poly 4 [ q [
poly 4 [ w [
poly 4 [ e [
x inverse x
] ] ] ] ] ]