> show canvas only <


/* built with Studio Sketchpad: 
 *   https://sketchpad.cc
 * 
 * observe the evolution of this sketch: 
 *   https://studio.sketchpad.cc/sp/pad/view/ro.68G-oz3BZwZ/rev.3
 * 
 * authors: 
 *   GoToLoop

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



/**
 * Pulsating Spiral Flower (v3.0)
 * by  Kevin (2014/Apr)
 * mod GoToLoop
 *
 * forum.processing.org/two/discussion/4266/
 * how-to-create-a-pulsating-particle-system-that-is-being-built
 *
 * studio.processingtogether.com/sp/pad/export/ro.90WsCogc75rxf/latest
 */

static final int GAP = 020, RAD = 3;
static final float EIGHTH_PI = QUARTER_PI/2.0;

final float ang = PI*(3 - sqrt(5));

void setup() {
  size(500, 500, JAVA2D);
  frameRate(60);
  smooth(4);
  noStroke();
  ellipseMode(CENTER);
}

void draw() {
  background(-1);
  translate(width>>1, height>>1);

  circles();
}

void circles() {
  final float t = .1*THIRD_PI*frameCount;

  for (int n = frameCount*3; n-- != 1;) {
    float r = .25*GAP*sqrt(n);
    float theta = n*ang;
    float pulse = 6.0 + RAD*sin(t - n*EIGHTH_PI);

    fill(0100, map(r*2.0, 0, width, 0, 0400), 0220, 0200);
    ellipse(r*cos(theta), r*sin(theta), pulse, pulse);
  }
}