Context Free
is a mini language for describing recursive shapes.
Every Context Free design is expressed as a collection of
three primitives (circle, square, and triangle) as well as transformations
to be applied recursively to these shapes. Each method represents several levels
and the shape can pop between methods via a pseudo-random number generator that
chooses which of the multiple definitions of a method to use.
The language feels organic, ideal for trees and ferns and other such natural patterns.
I am working on my own implementation of Context Free in Javascript which will have
dynamics built in. Expect some waving, morphing, and growing designs in the future.
The source for the above image:
startshape FAN rule FAN { 12 * {r 30} {TSPRIT{}} } rule TSPRIT { SPRIT{y 3} SPRIT{y -3 s .3} } rule SPRIT { TRIANGLE{} SPRIT{y .9 r -5 s .94} } rule SPRIT .25 { TRIANGLE{} SPRIT{y .9 s .94} } rule SPRIT .25 { TRIANGLE{} SPRIT{y .9 r -5 s .94} SPRIT{y .9 r -5 f 90 s .75} }
rule SPRIT .05 { TRIANGLE{} SPROOT{} } rule SPROOT { SPREET{x sin(0) y cos(0)} SPREET{x sin(90) y cos(90) r 90} SPREET{x sin(180) y cos(180) r 180} SPREET{x sin(270) y cos(270) r 270} } rule SPREET { TRIANGLE{b 0 sat .5 h 100} SPREET{y 1size .8 a -.2} } rule SPREET .1 { SPROOT{} }
* Directly recursive calls in red.
I discovered Context Free in 2010 and still find it an almost meditative form of expression.
The language is simple and fun to write.
And for once in the art world, rendering is really fast! Which means exploring
through iteration is a breeze.