ProcessingでVJ素材を作るブログ 第五回 translateとrotate( iii )


pushMatrix()とpopMatrix()

前回までで基準点の移動、基準座標の傾きを見てきました。

さらっと見た感じ基準点の移動は、引数の計算で代替えきくのでは?とか思ったりしますが、まぁ複雑なコードを読み解く力もないので置いときましょう。

今日はpushMatrix(), popMatrix()。
pushMatrix()は基準点、基準座標の傾き情報の保存、
popMatrix()はpushMatrix()で保存した情報の展開。

translate()は面白くないので、rotate()を使ってみました。

sample.pde
void setup(){ 
  size(640, 640);
  background(0);
  stroke(255);
  frameRate(10);

  translate(width/2, height/2 );
  rotate(-PI/2);
  pushMatrix();
  fill(255,0,0);
  rect(100,0,100,30);
  rotate(PI/6);
  fill(255);
  rect(100,0,100,30);
  popMatrix();
  fill(255);
  rotate(PI/3);
  rect(100,0,100,30);

}

完成図はこんな感じ。

popMatrix()を使わない以下のコードだと、

sample.pde
void setup(){ 
  size(640, 640);
  background(0);
  stroke(255);
  frameRate(10);

  translate(width/2, height/2 );
  rotate(-PI/2);
  //pushMatrix();
  fill(255,0,0);
  rect(100,0,100,30);
  rotate(PI/6);
  fill(255);
  rect(100,0,100,30);
  //popMatrix();
  fill(255);
  rotate(PI/3);
  rect(100,0,100,30);

}

完成図は以下になります。
(3回目のrotateがPI/6+PI/3=PI/2になってしまうんですね。)

も少しVJっぽい動画を作りたいですが、まぁまぁゆっくりとやってければなと思います。
動画作るにしてもアイデアが必要ですしねぇ。どうしようかな。

以上、translateとrotateでした。