startshape C
rule C
{
CIRCLE { s 2 }
CIRCLE { s 1.9 b 1}
B { }
B { r 180 }
}
rule B
{
SQUARE {}
SQUARE {s .8 b 1}
B { x 2 s .92 }
}
rule B .1
{
B { r -45 }
B { r 45 }
}
rule B .01
{
A {s .2}
}
rule A
{
CIRCLE { }
A { x 2 r 1 s .9999 b .0001}
}
rule A .002
{
CIRCLE { }
A2 { r -90 s .9 b .0001}
}
rule A2
{
CIRCLE { }
A { x 2 r -1 s .9999 b .0001}
}
rule A2 .002
{
CIRCLE { }
A { r 90 s .9999 b .0001}
}
The spirals are fairly easy to explain. They're defined by the A and A2 rules (actually, it looks like there's a bug in LaT3x's code that makes a2 basically inconsequential, since both of the A2 rules jump immediately back into A). Here's the code reduced to just the spiral:
startshape A
rule A
{
CIRCLE { }
A { x 2 r 1 s .9999 b .0001}
}
rule A .002
{
CIRCLE { }
A { r -90 s .9 b .0001}
}
The first rule is your basic spiral. It drops a circle and then calls itself, offset by a couple of units, rotated, and resized. However, when the second rule is called (which happens about once every 500th time), the spiral takes a 90 degree turn. Those 90 degree turns are where the line "jumps out" of the spiral and starts a new spiral.