Processing
4. 多角形の描画
ここでは多角形の描画について説明します。
矩形を描く
size( 500, 500 ); background( #ffffff ); stroke( #339933 ); rect( 100, 100, 300, 300 ); strokeWeight( 5 ); fill( #ffcc00 ); rect( 150, 150, 200, 200 ); noStroke(); fill( #339933 ); rect( 200, 200, 100, 100 );
5行目、rect()は矩形を描く命令です。デフォルトでは左上の座標と矩形の幅と高さを指定します。
rect( 左上のx座標, 左上のy座標, 矩形の幅, 矩形の高さ );
x座標、y座標、矩形の幅、矩形の高さはピクセルで指定します。
8行目、fill()は塗りの色を指定する命令です。stroke()同様、()の中に色の値を指定します。
11行目、noStroke()とは線を消す(描画しないようにする)命令です。
13行目で描かれている矩形には、線が描画されていません。
塗りを消す(図形を塗らないようにする)には、noFill()という命令を使います。
矩形の描画モード
矩形は描画の基準となる座標を変えることができます。
size( 500, 500 ); background( #ffffff ); noStroke(); fill( #339933 ); rectMode( CORNER ); //デフォルト。左上を基準にする rect( 0, 0, 100, 100 ); rectMode( CENTER ); //中心を基準にする rect( 250, 250, 100, 100 ); rectMode( CORNERS ); //左上と右下を基準にする rect( 400, 400, 500, 500 );
rectMode()は、どこの座標を指定して描画するかというモードを決める命令です。()内に、「CORNER」「CENTER」「CORNERS」のいずれかを指定します。
7行目、rectMode( CORNER )はデフォルトですが、左上の座標と矩形の幅と高さを指定するモードです。
10行目、rectMode( CENTER )は、中心の座標と矩形の幅と高さを指定するモードです。こちらが便利な時も多々あります。
13行目、rectMode( CORNERS)は、左上と右下、対角の2つの座標を指定します。
1度モードを変えると、再び変更するまで同じモードが続きます。
四角形を描く
矩形は4つの角が直角な四角形(正方形を含む長方形)のことですが、Processingにはそれ以外の四角形を描く命令もあります。
size( 500, 500 ); background( #ffffff ); stroke( #339933 ); quad( 40, 60, 470, 30, 460, 470, 60, 440 ); noStroke(); fill( #339933 ); quad( 110, 100, 400, 120, 380, 420, 100, 390 ); stroke( #ffcc00 ); strokeWeight( 6 ); noFill(); quad( 170, 180, 360, 170, 330, 360, 200, 340 );
5、9、14行目、quad()は、4つの頂点の座標を指定して四角形を描く命令です。
多角形を描く
四角形以外でも、三角形、多角形、座標を曲線でつなぐ方法などが用意されています。
size( 500, 500 ); background( #ffffff ); stroke( #339933 ); //三角形を描く triangle( 50, 450, 250, 50, 450, 450 ); stroke( #cc0000 ); //多角形を描く beginShape(); vertex( 100, 100 ); vertex( 400, 100 ); vertex( 300, 250 ); vertex( 400, 400 ); vertex( 100, 400 ); vertex( 200, 250 ); endShape( CLOSE ); noFill(); stroke( #0000cc ); //曲線でつなぐ多角形 beginShape(); curveVertex( 100, 100 ); curveVertex( 100, 100 ); curveVertex( 400, 100 ); curveVertex( 300, 250 ); curveVertex( 400, 400 ); curveVertex( 100, 400 ); curveVertex( 200, 250 ); curveVertex( 100, 100 ); curveVertex( 400, 100 ); curveVertex( 400, 100 ); endShape();
詳細はリファレンスなどを参照して下さい。triangle() besigShape() vertex() curveVertex()