Previous work on Fields #1 and Fields #2 have both focused on hand-crafted equations and parameters to
produce the final pieces of work, each piece often (as with Forest) goes through a guided set of
Fields #3 focuses more on a process of generating the field equations themselves randomly.
First a subset of Math functions are defined in an Array (i.e. sin, cos, noise, map etc), this is our collection of available
functions for use. Next a collection of variable operands are defined in an Array, these are
contextually available in all cases (i.e. point.x, point.y, step, point.velocity, point.angle etc).
An 'expression' generator is then passed these two arguments along with a max-depth and a requested
return type. The function works backwards essentially pulling functions at random (with the correct
return types and / or argument types) and satisfying the constraints of calling them (i.e. we need
two parameters for a call to X and 4 for a call to Y, let's recursively call 'expression' to solve these
until we hit max-depth).
This is an early work-in-progress and the generator is still very simple but is already producing
interesting collections of work.
Note that the algorithm only produces the left-side of each image, this is then reflected.