Toby Skinner Generative Art Fields #4
'Fields #4' by Toby Skinner

Fields #4

Switching now to lower resolution images at 256x256 and continuing to focus on the composition of randomly chosen mathematical functions.

To improve the diversity of the renders, 12 functions from GenerateMe's Drawing Vector Field blog post are combined with the standard Math library functions and Ron Valstar's Perlin Noise.

256 points are distributed randomly across the canvas and iterated for 100 steps. Variying scale factors were used (and sadly not stored along with the expressions).

Series


TUtil.hyperbolic( TUtil.kampyle( Math.cos(pv.position.y) ), pv.position.y );

TUtil.swirl( TUtil.rect_hyperbola(pv.position.y), pv.position.x );

TUtil.pdj(pv,pv.position.y);

TUtil.rect_hyperbola(pv.position.x);

TUtil.hyperbolic( TUtil.polar( TUtil.rect_hyperbola(pv.position.x), 86 ), pv.position.y );

TUtil.polar( TUtil.cosine( TUtil.pdj(pv,pv.position.y), pv.position.y ), 81 );

TUtil.waves2( TUtil.swirl( TUtil.rect_hyperbola( Math.sqrt( Math.tan(pv.position.y) ) ), pv.position.x ), pv.position.y%(pv.position.x) );

TUtil.hyperbolic( TUtil.polar( TUtil.superformula( pv.position.y / ( Math.tan( OptimizedPerlin.noise( Math.atan2( Math.sqrt( Math.atan2(pv.position.x,pv.position.y) ), 88 ), pv.position.y ) ) ) % (0.4385489812120795) / ( OptimizedPerlin.noise( pv.position.x, pv.position.x+(pv.position.x) ) ) ), 0.01690649939700961 ), pv.position.y );

TUtil.sinusoidal( TUtil.cissoid( Math.cos( Math.tan(pv.position.y) ) ), pv.position.y );

TUtil.cosine( TUtil.waves2( TUtil.circle(pv.position.y), pv.position.y ), pv.position.y );

TUtil.pdj( TUtil.superformula(pv.position.y), pv.position.x );

TUtil.kampyle(TUtil.sinh(pv.position.y));

TUtil.polar( TUtil.waves2( TUtil.swirl( TUtil.rect_hyperbola( pv.position.y+(pv.position.x) ), pv.position.y ), pv.position.x ), 0.8844789764843881 );

TUtil.swirl( TUtil.rect_hyperbola( Math.atan2( Math.sin( Math.cos( OptimizedPerlin.noise( 0.568339429795742+(pv.position.x), 8 ) ) ), pv.position.x ) ), pv.posit

TUtil.superformula(pv.position.y*(Math.tan(pv.position.y)));

TUtil.vexp( TUtil.hyperbolic( TUtil.kampyle( TUtil.sinh(pv.position.x) ), pv.position.x+(pv.position.x) ), pv.position.x/(pv.position.x) );

TUtil.pdj( TUtil.vexp( TUtil.swirl( TUtil.superformula( Math.atan2(pv.position.x,68) ), pv.position.y ), pv.position.y ), pv.position.x );

TUtil.swirl(TUtil.cissoid(pv.position.y),pv.position.y);

TUtil.kampyle( TUtil.cosh( TUtil.cosh(pv.position.y%(pv.position.x)) ) );

TUtil.cross( TUtil.hyperbolic( TUtil.cosine( TUtil.waves2( TUtil.cross( TUtil.swirl( TUtil.hyperbolic( TUtil.cissoid( Math.sqrt(pv.position.x) ), pv.position.y ), pv.position.y ), pv.position.y ), pv.position.y ), pv.position.y ), pv.position.x ), pv.position.x );

TUtil.kampyle(pv.position.x-(pv.position.y));

TUtil.waves2( TUtil.rect_hyperbola(pv.position.y), pv.position.x );

TUtil.rect_hyperbola(Math.cos(pv.position.y));

TUtil.sinusoidal( TUtil.waves2(pv,pv.position.y), 0.20464161690324545 );

TUtil.hyperbolic( TUtil.rect_hyperbola(pv.position.x/(0.575520952232182)), pv.position.x );

TUtil.cosine( TUtil.waves2( TUtil.polar( TUtil.vexp( TUtil.swirl( TUtil.kampyle( pv.position.y+(Math.tan(pv.position.x)) ), pv.position.y%(pv.position.x) ), pv.position.y ), pv.position.y ), pv.position.y ), pv.position.y );

TUtil.hyperbolic( TUtil.cross( TUtil.circle(pv.position.y), pv.position.y ), pv.position.x );

TUtil.swirl( TUtil.circle( 74* ( OptimizedPerlin.noise( Math.atan2( Math.sin(0.30181967513635755), 0.28102674009278417 ), pv.step ) ) ), pv.step );

TUtil.sinusoidal( TUtil.circle(pv.step), Math.tan( Math.atan2(pv.position.y,pv.position.y) ) );

TUtil.swirl( TUtil.circle(Math.sin(pv.step)), pv.theta );

TUtil.superformula( Math.cos(pv.position.y)-(0.9379616524092853)-(Math.cos(pv.step)) );

TUtil.superformula(Math.sin(pv.step));

TUtil.hyperbolic( TUtil.vexp( TUtil.vexp( TUtil.pdj( TUtil.hyperbolic( TUtil.superformula( Math.sin(pv.theta) ), Math.atan2( TUtil.cosh(pv.theta), Math.sin( Math.cos( Math.cos( Math.sin(0.9199996618553996) ) ) ) ) ), pv.step ), pv.step ), Math.atan2( pv.position.x, Math.sqrt(0.4486731020733714) ) ), 40 );

TUtil.polar( TUtil.hyperbolic( TUtil.polar( TUtil.pdj( TUtil.sinusoidal( TUtil.hyperbolic( TUtil.sinusoidal( TUtil.waves2( TUtil.cosine( TUtil.pdj( TUtil.circle( TUtil.sinh( Math.sqrt( Math.atan2( 0.27835163148120046, pv.step ) ) ) ), Math.sqrt(pv.position.x) ), pv.position.x ), pv.theta ), TUtil.sinh(0.9196435729973018) ), pv.position.x ), Math.cos( TUtil.sinh(pv.position.y) ) ), Math.atan2( pv.theta, Math.sqrt(0.7224879306741059) ) ), pv.position.x ), pv.position.y+(pv.theta) ), 0.38159529073163867 );

TUtil.hyperbolic( TUtil.cissoid( pv.step % ( Math.atan2( Math.atan2( OptimizedPerlin.noise(pv.position.x,1), Math.sin(pv.theta) ), pv.position.y ) ) ), Math.tan(pv.step) );

TUtil.pdj( TUtil.circle( pv.step / (Math.sqrt(pv.position.y)) ), pv.position.y );

TUtil.cosine( TUtil.superformula( OptimizedPerlin.noise( OptimizedPerlin.noise( 0.8436914780177176, Math.sqrt( TUtil.sinh(pv.theta)-(0.4607092756778002))-(pv.step) ), 0.9794090990908444) ), Math.atan2( Math.sin( Math.tan( OptimizedPerlin.noise( pv.step, TUtil.cosh( TUtil.cosh( TUtil.cosh( pv.position.x / (pv.position.x) / (pv.position.x) ) ) ) ) ) ) ), pv.position.y ) );

TUtil.rect_hyperbola(pv.theta%(Math.cos(pv.position.y)));

TUtil.polar( TUtil.vexp( TUtil.cosine( TUtil.superformula(pv.position.x), 0.46193319698795676 ), Math.atan2( Math.tan(pv.step), TUtil.sinh(Math.cos(pv.position.y)%(pv.theta)+(0.5921605764888227))+(pv.position.x) ) ), pv.position.x );

TUtil.polar( TUtil.swirl( TUtil.cissoid( Math.tan( Math.atan2( 96, TUtil.cosh(0.6962948497384787) / ( Math.sin( TUtil.cosh( OptimizedPerlin.noise( pv.position.y, Math.sin(pv.position.y) ) ) * (pv.position.x) ) + (pv.step) * (Math.sin(TUtil.cosh(pv.step))) ) ) ) ), pv.position.y ), pv.step );

TUtil.superformula(pv.step);

Dimensions

256 x 256 (Low resolution sqaure)

FAQ

Can this exact image be re-produced? If the exact vector field function along with any noise seed are stored then an exact replica is possible. These images are not replicatable because the seeds and exact functions were not retained.

Are there any other images on this website that were generated by this algorithm? Yes Fields #1 and Fields #2

Is this a limited edition print? No

How can I buy a print? Please get in touch with your requirements.