すでに例題としては触れていますが、座標の移動や回転について説明していきます。
移動(translate)
さて次は、以下のグラフィックを描画してみましょう。
translateという関数を使って移動させるのですが、ここで注意する必要があるのは、translateはオブジェクト単体を移動するのではなく、空間全体を移動するということなのです。ですから、複数のオブジェクトが画面上にある場合は、すべて移動します。
また、以下のサンプルのように、translateを繰り返すと、その結果は蓄積されます。
描画されるたびに基準点が変わります。
1 2 3 4 5 6 7 8 9 10 11 12 13 | void setup(){ size(400, 400, P3D); } void draw(){ background(0); translate(width/2, height/2); //立体の中心を画面中央に移動 for(int i = 0; i < 5; i ++){ //立方体を、30ピクセルごとに5個生成 translate(30, 0); box(20, 20, 20); //150 x 150 x 150pxの立方体を描 } } |
回転
次は回転です。
回転はrotateを使います。
rotateも、translateと同じように空間全体を回転します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | //Y軸を中心に回転する立方体 int angle; //角度を設定するための変数 void setup(){ size(400, 400, P3D); angle = 0; //60度を設定 } void draw(){ background(0); angle += 1; //角度を1ずつ足していく if(angle > 360) angle = 0; //360度を超えたら0に戻す translate(width/2, height/2); //立体の中心を画面中央に移動 rotateY(radians(angle)); //Y軸に対してangleの数値分だけ回転 box(150, 150, 150); //150 x 150 x 150pxの立方体を描 } |
上記のサンプルはY軸を中心に回転しています。
rotateX, rotateZを使って、他の軸を基準にした回転も加えてみましょう。