Gear

What

それぞれ回転する歯車を、かみ合わせるように描いています。歯車の回転はrotate関数を使うことで簡単に実装することができます。
画面をクリックすると回転が止まったり再度動いたりします。

rotate関数は原点中心の回転なので、歯車たちは描かれた時点では原点中心です。translate関数によって表示位置まで移動しています。
原点中心で描画 + rotate + translateは、任意の場所で回転させる際のテクニックです。

How


var w = 400;
var h = 400;
var loopStatus = true;
function setup() {
  createCanvas(w, h);
  background(100);//white
  frameRate(5);
}

function draw() {
  background(100);
  push();
  stroke(color(200, 0, 0));
  translate(200, 200);
  rotate(frameCount / 10);
  drawGear(20, 50);
  pop();

  push();
  stroke(color(0, 200, 0));
  translate(92, 200);
  rotate(-frameCount / 10 + 120);
  drawGear(20, 50);
  pop();

  push();
  stroke(color(0, 0, 200));
  translate(200, 92);
  rotate(-frameCount / 10);
  drawGear(20, 50);
  pop();

  push();
  stroke(color(0, 255, 255));
  translate(277, 277);
  rotate(-frameCount / 10 + 44);
  drawGear(20, 50);
  pop();
}

function drawGear(n, r){
  var rad = TWO_PI / n;

  for(i = 0; i < TWO_PI; i += 0.01){
    var y1 = 0;
    var y2 = 0;
    if(sin(i * n) >= 0){
      y1 = r;
    }else{
      y1 = r * 1.1;
    }
    line(y1 * cos(i), y1 * sin(i), 0, 0);
  }
  ellipse(0, 0, 10);
}

function mousePressed(){
  if(loopStatus){
    noLoop();
    loopStatus = false;
  }else{
    loop();
    loopStatus = true;
  }
}
        

Where

関連するチュートリアル・リファレンスへのリンクです。