Daily Creative Coding

元「30 min. Processing」。毎日、Creative Codingします。

グネグネ

/**
* Wiggy Worm
*
* @author aa_debdeb
* @date 2015/12/27
*/

void setup(){
  size(500, 500);
  smooth();
}

void draw(){
  background(240, 255, 240);
  
  translate(width / 2, 0);

  stroke(128, 128, 0);
  strokeWeight(3);
  fill(238, 232, 170);
  beginShape();
  
  float phase = map(mouseX, 0, width, - 5 * PI, 5 * TWO_PI);
  float MAX_ANGLE = map(mouseY, 0, height, 360, 7200);
  for(float angle = 0; angle < MAX_ANGLE; angle += 5){
    float radian = radians(angle) + phase;
    float offset = map(sin((angle / MAX_ANGLE) * PI), 0, 1, 0, 50);
    float amp = map(sin((angle / MAX_ANGLE) * PI), 0, 1, 0, 100);
    vertex(-offset + amp * sin(radian), map(angle, 0, MAX_ANGLE, 50, 450));
  }
  for(float angle = MAX_ANGLE; angle > 0; angle -= 5){
    float radian = radians(angle) + phase;
    float offset = map(sin((angle / MAX_ANGLE) * PI), 0, 1, 0, 50);
    float amp = map(sin((angle / MAX_ANGLE) * PI), 0, 1, 0, 100);
    vertex(offset + amp * sin(radian), map(angle, 0, MAX_ANGLE, 50, 450));   
  }
  endShape(CLOSE);
  
}