a-15 動き(6) 移動、回転、伸縮

a-15 移動、回転、伸縮

移動 translate()関数

void setup(){
  size(500,500);
  background(99,171,242);
  fill(254,253,108);
  noStroke();

}

void draw(){
  translate(mouseX,mouseY);
  rect(0,0,50,50);
}

translate()関数によって、マウスカーソルがある位置に四角形rect()が描かれます。

void setup(){
  size(500,500);
  background(99,171,242);
  fill(254,253,108);
  stroke(254,132,108);

}

void draw(){
  translate(mouseX,mouseY);
  rect(0,0,50,50);
  translate(60,25);
  rect(0,0,25,25);
}

2つめのtranslate()も表示されます。

void setup(){
  size(500,500);
  background(99,171,242);
  fill(254,253,108);
  stroke(254,132,108);

}

void draw(){
  pushMatrix();
  translate(mouseX,mouseY);
  rect(0,0,50,50);
  popMatrix();
  translate(60,25);
  rect(0,0,25,25);
}

pushMatrix()関数を実行する時の座標が記録され、その後にpopMatrix()を実行するとその座標に戻ります。

回転 rotate()関数

float angle = 0.0;

void setup(){
  size(500,500);
  background(99,171,242);
  fill(254,253,108);
  stroke(254,132,108);
}

void draw(){
  translate(mouseX,mouseY);
  rotate(angle);
  rect(-25,-25,50,50);
  angle += 0.1;
}

rotate()関数は、座標を回転させる。

float angle = 0.0;

void setup(){
  size(500,500);
  background(99,171,242);
  fill(254,253,108);
  stroke(254,132,108);
}

void draw(){
  rotate(angle);
  translate(mouseX,mouseY);
  rect(-25,-25,50,50);
  angle += 0.1;
}

回転軸を(0.0)にする時は、rotate()関数、translate()関数の順にする。逆に、図形の中心を軸にして回転させる場合は、一つ前のコードのようにtanslate()関数で座標をずらし、rotate()関数を呼び出す。

伸縮 scale()関数

float angle = 0.0;

void setup(){
  size(500,500);
  background(99,171,242);
  fill(254,253,108);
  stroke(254,132,108);

}

void draw(){
  translate(mouseX,mouseY);
  scale(sin(angle) + 2);
  rect(-25,-25,50,50);
  angle += 0.1;
}

scale()関数を使えば、座標を伸縮させることができる。rotate()と同じように(0.0)が基準点になるので、図形の中心から伸縮させる場合は、totanslate()、scale()、rect()の順に実行し、図形を(0.0)が中心となるように描く。