> show canvas only <


/* built with Studio Sketchpad: 
 *   https://sketchpad.cc
 * 
 * observe the evolution of this sketch: 
 *   https://studio.sketchpad.cc/sp/pad/view/ro.o92W05TPhSS/rev.9
 * 
 * authors: 
 *   GoToLoop

 * license (unless otherwise specified): 
 *   creative commons attribution-share alike 3.0 license.
 *   https://creativecommons.org/licenses/by-sa/3.0/ 
 */ 



/**
 * Perturbed Bezier Lines (v2.03)
 * by  SeanJustice (2014/Mar)
 * mod GoToLoop
 *
 * forum.processing.org/two/discussion/3456/yet-another-processing-js-question
 *
 * studio.processingtogether.com/sp/pad/export/ro.981lbSfJSyiPY/latest
 */

static final int MAX_COUNT = 1<<14;
int w, cx, h, cy, x1, x4;

void setup() {
  size(1000, 700, JAVA2D);
  frameRate(60);
  smooth(4);
  colorMode(HSB, 360, 100, 100);
  noFill();

  w = width;
  h = height;
  cx = x1 = x4 = w>>1;
  cy = h>>1;
}

void draw() {
  final int fc = frameCount % MAX_COUNT;

  if (1/2 != 1/2.)  frame.setTitle("frameCount: " + frameCount
    + "\t\tfc: " + fc + "\t\tLimit: " + MAX_COUNT);

  final float disturb1 = noise(.001*fc);
  final float disturb2 = noise(.01*fc);

  final float x2 = cx/3 * disturb1;
  //final float x2 = map(disturb1, 0, 1, 0, cx/3);
  final float x3 = map(disturb2, 0, 1, cx, w/3);

  final float y2 = map(disturb2, 0, 1, h/5, cy);
  final float y3 = map(disturb1, 0, 1, cy, h*.85);

  final float v3 = 100.0 - .003*fc;

  background(180, 40, v3 > 0.0? v3 : -v3);

  stroke(195.0 - .01*fc, 24, 50.0 - v3);
  strokeWeight(1);
  bezier(x1, 0, x2, y2, x3 + .01*fc, y3, x4, h); //1

  stroke(195.0 - .005*fc, 24, 50);
  strokeWeight(.4);
  bezier(x1, 0, x2 + 10.0 + .001*fc, y2, x3 - 50.0, y3 + .025*fc, x4, h); //2

  stroke(195.0 + .01*fc, 24, 50.0 + .0005*fc);
  strokeWeight(.4);
  bezier(x1, 0, x2/2 + .002*fc, y2/2.0 + .08*fc, x2 + 500.0, y2, x4, h); //3

  strokeWeight(1.1);
  bezier(x1, 0, x2 + .008*fc, y2, x3/4.0, y3/4.0, x4, h); //4

  stroke(195.0 + .01*fc, 24, 50.0 + .005*fc);
  strokeWeight(.9);
  bezier(x1, 0, w - x2, y2 + .007*fc, x3 - .005*fc, y3*.9 - .01*fc, x4, h); //5
}