beginShape, endShape
beginShape と endShape という2つの命令の間に頂点の座標を任意の数だけ指定することで、それらを結んだ図形を描くことができます。
サンプル
コード
void setup(){
size( 600, 400 );
}
void draw(){
background( 20, 0, 60 );
noStroke();
fill( 255, 255, 0 );
beginShape();
vertex( 300, 100);
vertex( 325, 160);
vertex( 380, 160);
vertex( 340, 200);
vertex( 360, 260);
vertex( 300, 220);
vertex( 240, 260);
vertex( 260, 200);
vertex( 215, 160);
vertex( 280, 160);
endShape( CLOSE );
}
補足
beginShape 関数に引数を与えることで様々な描画パターンを作ることができます。詳しくは公式ドキュメントを参照。頂点を結ぶ線は直線だけでなく曲線も使うことができます。詳しくは詳しくは公式ドキュメントを参照。
補足2
上記の星を描く処理を関数化してみましょう。
サンプル
コード
void setup(){
size( 600, 400 );
}
void draw(){
background( 20, 0, 60 );
noStroke();
fill( 255, 255, 0 );
drawStar( 150, 150, 40, 0.2 );
drawStar( 300, 250, 50, 0.6 );
drawStar( 450, 200, 30, 0.4 );
}
void drawStar( int x, int y, float s, float r ){
pushMatrix();
translate( x, y );
rotate( radians( -90 ) );
beginShape();
for( int i=0; i<10; i++){
float px;
float py;
if( i % 2 == 0 ){
px = s * cos( radians( 36 * i ) );
py = s * sin( radians( 36 * i ) );
} else {
px = s * r * cos( radians( 36 * i ) );
py = s * r * sin( radians( 36 * i ) );
}
vertex( px, py );
}
endShape(CLOSE);
popMatrix();
}
補足
星形を描くための処理をまとめた drawStar という関数を作りました。vertex の座標を三角関数を使って計算しています。関数の引数 r を用いて星の膨らみ具合を調整できるようにしています。
コメント