日常の進捗

主に自分のための,行為とその習慣化の記録

リバースエンジニアリング

Solar Flare - OpenProcessing

OpenProcessingでフィーチャーされている作品で実行されている画面だけを見て、コードを見ないで書いてみた。ブレンドモードを効かせたかったのでp5.jsで書いた。

答え合わせでコードを比較すると、ちょっとずつ大きくするときに一定の値を半径に加えるのじゃなくて、乗算で比率を変えていくやり方だった。

コード

var r = 0;
// setup関数 : 初回1度だけ実行される
function setup() {
  createCanvas(windowWidth, windowHeight);
  colorMode(HSB, 360, 100, 100); // HSBでの色指定にする
  blendMode(ADD);
  background(0, 0, 0);
}

// draw関数 : setup関数実行後繰り返し実行される
function draw() {
  background(0, 0, 0);
  translate(width/2, height/2);
  rotate(r*0.001);
  stroke((frameCount*0.5)%360, 80, 100, 100);
  beginShape();
  for (var angle = 0; angle < 360; angle += 1) {
    var theta = radians(angle);
    var r1 = noise(theta, r*0.002, frameCount*0.01);
    r1 = map(r1, 0, 1, 0, r);
    vertex(cos(theta)*r1, sin(theta)*r1);
  }
  r += 5;
  noFill();
  endShape(CLOSE);
  if (r > windowWidth*1.5) {
    r = 0;
    blendMode(NORMAL);
    background(0, 0, 0);
    blendMode(ADD);
  }
}

リファレンス