Processing Advent Calendar 2013 参加記事
pict01816

Processingでは、beginShape()endShape()
vertex()を用いることで、色々な図形を描くことができます。

正多角形を描く
pict0231
正多角形は以下のようなコードで描くことができます。
int vertex_num = 6; //頂点数(六角形を描画)
int R = 200; //頂点から中心までの距離(半径)

int centerX = width/2; //図形の中心のx座標
int centerY = height/2; //図形の中心のy座標

float x; //頂点のx座標の計算用
float y; //頂点のy座標の計算用

pushMatrix();
translate(centerX, centerY);

beginShape();
for (int i = 0; i < vertex_num; i++) {
x = R * cos(radians(360/vertex_num * i));
y = R * sin(radians(360/vertex_num * i));

vertex(x, y);
}
endShape(CLOSE);

popMatrix();

正多角形を描く処理の考え方は以下のとおりです。

pict02835
1、半径Rの円を描きます。
pict03053
2、円を等分し、点を打ちます。
今回は六角形を描こうと思うので、6等分します。
pict03414
3、点を線でつなぎあわせます。
pict03431
4、六角形の完成です。


星を描く
pict104
星やギザギザの吹き出しのような「とげ」のついた図形も、
先ほどの正多角形の応用で描くことができます。
int vertex_num = 5*2; //頂点数(星を描画、とげの数*2)
int R; //頂点から中心までの距離(半径)
int R_out = 200; //中心からとげまでの距離(半径)
int R_in = R_out/2; //中心から谷までの距離(半径)

int centerX = width/2; //図形の中心のx座標
int centerY = height/2; //図形の中心のy座標

float x; //頂点のx座標の計算用
float y; //頂点のy座標の計算用

pushMatrix();
translate(centerX, centerY);

beginShape();
for (int i = 0; i < vertex_num; i++) {
if (i%2 == 0) {
R = R_out;
} else {
R = R_in;
}

x = R * cos(radians(360/vertex_num * i));
y = R * sin(radians(360/vertex_num * i));

vertex(x, y);
}
endShape(CLOSE);

popMatrix();

星を描く処理の考え方は以下のとおりです。

pict1542
1、半径R_outの円の上に、とげの数×2の点を打ちます。
今回は 5×2=10個の点を打ちます。
pict181
2、点についている番号(=forループのi)を偶数と奇数で分けます。
この図では、偶数を青い点、奇数をピンクの点で示しています。
pict11946
3、奇数の点を半径R_inの円の上に移動させます。
pict12444
4、番号の順に点を線でつなぎます。
pict1256
5、星の完成です。
pict175235
6、i=0の点が緑の点の位置にあるため、
このように少し傾いた図形ができてしまいます。
pict175256
そこで、先ほどの図形を90度回転すると、見慣れた図形の位置になります。
pushMatrix();
translate(centerX, centerY);
rotate(radians(-90));

beginShape();
for (int i = 0; i < vertex_num; i++) {
if (i%2 == 0) {
R = R_out;
} else {
R = R_in;
}

x = R * cos(radians(360/vertex_num * i));
y = R * sin(radians(360/vertex_num * i));

vertex(x, y);
}
endShape(CLOSE);

popMatrix();

処理速度を求める場合は、こちらの方法が参考になります。
Proce55ing.walker,blog » Blog Archive » Processingで五角形・六角形・ハート形を描く


---
[2015/10/15 - 追記]
コードをより見やすく書きなおしました。
「Processingによる図形の描画」にご興味がある方は、ぜひ以下もご覧ください。
Processing で描ける図形まとめ - Qiita