《Processing 番外編》 円

円を描く

Processingには正円を描く専用の関数が用意されていないことから、「円」、「半円」を描くのに悩む人が多いようなので、そこだけピックアップしておきます。

以前投稿した「弧」 などの描画について

円を描く

size(500,500);
ellipse(250,250,110,110);

ellipse(x,y,幅x,幅y);

ここまでは、“ellipse”を使えば、とくに悩むことはないかと思います。

問題はここから。「半円」「部分的に円を描く」場合

size(500,140);
arc(90,60,80,80,0,HALF_PI);
arc(190,60,80,80,0,PI+HALF_PI);
arc(290,60,80,80,PI,TWO_PI+HALF_PI);
arc(390,60,80,80,QUARTER_PI,PI+QUARTER_PI);

パラメーターは、arc(円弧の楕円のx座標,円弧の楕円のy座標,幅,高さ,円弧start,角度);
角度の単位は「ラジアン(英: radian, 記号: rad)」
Processingではよく使う4つの角度に固有の名称をつけている。
PI(180度)
QUARTER_PI(45度)
HARLF_PI(90度)
TWO_PI(360度)
弧度法とも呼ばれる「ラジアン(360度=2π)」
度数法(degree)を弧度法(radian)にするには、90度の場合は「90°×π÷180=1.57 rad」
Processingでは関数で度数法(degree)に変換可能です。
以下は、radians()で全く同じ描画をしたもの。

size(500,140);
arc(90,60,80,80,0,radians(90));
arc(190,60,80,80,0,radians(270));
arc(290,60,80,80,radians(180),radians(450));
arc(390,60,80,80,radians(45),radians(225));

場合によっては、arc()関数は滑らかな描画には十分正確ではありません。例えば、ゆっくり回転させるとジラつく(Jitter)する場合もあります。レンダリング時にそれを感じる場合は、illustraterなどで作成したベクター画像をPShapeで読みこむ方がベストです。

半円を描く

size(500,250);
background(0);
noStroke();
fill(255);
arc(250, 150, 150, 150, PI, TWO_PI);