2.1 点・線・図形の描画

2.1.1 座標

Processingの場合は、左上が起点になります。これは多くのプログラミング言語と共通です。数学関数の座標と似ていますが、y軸の方向が逆になります。

図2.1-a

2.1.2 図形

簡単な図形を描くところから始めます。ひとつずつ描いてみましょう。

basicShapes
図2.1-b

●ウィンドウを作成

size(400, 400);  //ウィンドウのサイズ(幅, 高さ)

●点

point(100, 100);     //点の位置(x座標, y座標)

●線

stroke(0);     //線の色(0=黒)
strokeWeight(1);     //線の太さ(ピクセル数)
line(200, 80, 300, 80);     //線の描画(x座標1, y座標1, x座標2, y座標2)

strokeWeight(3);
line(200, 100, 300, 100);

●輪郭線/塗りを実行する・しない

Adobe IllustratorやPhotoshopと同じように、図形は輪郭線(stroke)塗り(fill)に別れています。どちらを実行するか(もしくは両方実行するか)は初めに決めてもいいですし、途中で変更することもできます。円(楕円)の描画はellipse(中心点のx座標, 中心点のy座標, 幅, 高さ)です。

strokeWeight(1);     //線の太さ(1ピクセル)
ellipse(100, 200, 50, 50);     //円の描画(中心点のx座標, 中心点のy座標, 幅, 高さ)

noStroke();     //輪郭線を描かない
ellipse(200, 200, 50, 50);     //円の描画

stroke(0);     //線の色(0=黒)
noFill();          //塗りを実行しない場合はnoFill()
ellipse(300, 200, 50, 50);     //円の描画    

●図形の基準点を変更する(例:四角形)

円の場合は、基準点の初期値が中央ですが、四角形は左上(CORNER)になります。長方形の描画はrect(左上のx座標, 左上のy座標, 幅, 高さ)です。
四角形の基準点を中央にしたい場合には、rectMode(CENTER)を使います。

rectMode(CENTER);     //基準点を図形の中心にする。基準点が左上の場合はrectMode(CORNER)。
rect(100, 300, 50, 50);     //四角形の描画(中心点のx座標, 中心点のy座標, 幅, 高さ)

最終的なコードは次のとおりです(リスト2.1-a)。

リスト2.1-a
size(400, 400);  //ウィンドウのサイズ(幅, 高さ)

point(100, 100);     //点の位置(x座標, y座標)

stroke(0);     //線を描く(0=黒)
strokeWeight(1);     //線の太さ(1ピクセル)

//線の描画(x座標1, y座標1, x座標2, y座標2)
line(200, 80, 300, 80);     
strokeWeight(3);     //線の太さ(3ピクセル)
line(200, 100, 300, 100);

strokeWeight(1);     //線の太さ(1ピクセル)

//円の描画(中心点のx座標, 中心点のy座標, 幅, 高さ)
ellipse(100, 200, 50, 50);

noStroke();     //線を描かない
ellipse(200, 200, 50, 50);     //円の描画

stroke(0);     //線を描く(0=黒)
noFill();          //図形の中に色を塗らない
ellipse(300, 200, 50, 50);     //円の描画     

rectMode(CENTER);     //基準点を図形の中心にする

//四角形の描画(中心点のx座標, 中心点のy座標, 幅, 高さ)
rect(100, 300, 50, 50);

2.1.3 プログラムが実行される順番

プログラムは必ず上の行から下の行に順番に実行されます。
次のサンプルを見てみます【リスト2.1-b】。

strokeWeight
図2.1-c

このサンプルでは、7行目にstrokeWeight(2)、9行目にstrokeWeight(5)が指定されています。必ず、後に書かれている命令がその後も有効になりますので、11行目に指定されている円のstrokeWeightも5になります。

リスト2.1-b
size(400, 400);  //ウィンドウのサイズ(幅, 高さ)
 
stroke(0);     //線を描く(0=黒)
fill(255);     //塗りを描く(255=白)

//何も指定しなければstrokeWeightは自動的に1になる
strokeWeight(2); 
ellipse(70, 200, 100, 100);     //左の円の描画
strokeWeight(5);
ellipse(200, 200, 100, 100);     //中央の円の描画
ellipse(330, 200, 100, 100);     //右の円の描画

また、後に書かれているコードの方が後に実行されるので、図形を重ねて描く時には、コード上で後に書かれている図形が手前になります。

2016_10_01_3_45
図2.1-d
リスト2.1-c
size(400, 400);  //ウィンドウのサイズ(幅, 高さ)
 
stroke(0);     //線を描く(0=黒)
fill(255);     //塗りを描く(255=白)

ellipse(150, 150, 200, 200);     //後ろの円の描画
ellipse(250, 250, 200, 200);     //手前の円の描画