Daily Creative Coding

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

回転灯

/**
* Revolving Light
*
* @author aa_debdeb
* @date 2015/10/21
*/


void setup(){
  size(500, 500);
  smooth();
  frameRate(24);
  background(0);
}

void draw(){
  noStroke();
  fill(0, 30);
  rect(-1, -1, width, height);
  
  stroke(255, 255, 0);
  strokeWeight(1.0);
  translate(width/2, height/2);
  rotate(frameCount * 0.01);
  float variantRhythm = sin(frameCount * 0.1);
  for(float sinValue = -1; sinValue <= 1.0; sinValue += 0.05){
    float sinValue2 = sinValue;
    if(variantRhythm > 0){
      if(sinValue > 0){
        sinValue2 = sinValue + sq((1 - abs(sinValue))) * 1.0 * variantRhythm;
      } else {
        sinValue2 = sinValue - sq((1 - abs(sinValue))) * 1.0 * variantRhythm;      
      }
    } else {
      if(sinValue > 0){
        sinValue2 = sinValue - sq(abs(sinValue)) * 1.0 * abs(variantRhythm);    
      } else {
        sinValue2 = sinValue + sq(abs(sinValue)) * 1.0 * abs(variantRhythm);          
      }
    }

    float radian = asin(sinValue2);
    float cosValue = cos(radian); 
    line(150 * cosValue, 150 * sinValue2, 150 * -cosValue, 150 * sinValue2);
  }  
}