Spiral Feedback


  // Spiral Feedback by Jim Bumgardner
  //
  int currentFrame = 0;
  int max_frames = 24;
  PImage[] frames = new PImage[max_frames];
  
  float r = 0;
  float a = 0;
  float maxRad = 240;
  float cx,cy;
  float phi = (sqrt(5)+1)/2 - 1;            // golden ratio
  float golden_angle = phi * TWO_PI;        // golden angle
  float angleIncrement = golden_angle / (24*PI);
  
  void setup() {
    size(500, 500);
    cx = width/2;
    cy = height/2;
    smooth();
    background(255);
    frameRate(24);
    noStroke();
    fill(0);
    colorMode(HSB,1);
  }
    
  void draw()
  {
    frames[currentFrame] = get(); // Get the display window
    currentFrame = (currentFrame + 1) % max_frames;
    if (frames[currentFrame] != null) {
      image(frames[currentFrame], 0, 0);
    }
    if (frameCount <= max_frames)
      background(#FFFFFF);
  
    a += angleIncrement;
    if (a > TWO_PI)
        a -= TWO_PI;
    r = sin(frameCount/24.0)*maxRad;
    float x = cx + sin(a)*r;
    float y = cy + cos(a)*r;
    fill(sin(millis()*.001)*.5+.5,1,.8, .5);
    ellipse(x, y, 10, 10);
  }