%!PS %%BoundingBox: 0 0 550 400 /ifpendown false def /rotation 0 def /srootii 2 sqrt def /turn { rotation add /rotation exch def } def /forward { dup rotation cos mul exch rotation sin mul ifpendown { rlineto } { rmoveto } ifelse } def /penup { /ifpendown false def } def /pendown { /ifpendown true def } def /dragon { % [ length, split, d ] dup dup 1 get 0 eq { 0 get forward } { dup 2 get 45 mul turn dup aload pop pop 1 sub exch srootii div exch 1 3 array astore dragon pop dup 2 get 90 mul neg turn dup aload pop pop 1 sub exch srootii div exch -1 3 array astore dragon dup 2 get 45 mul turn } ifelse pop } def 150 150 moveto pendown [ 300 12 1 ] dragon stroke % 0 0 moveto 550 0 rlineto 0 400 rlineto -550 0 rlineto closepath stroke showpage %%END