ofCircleで楽に正多角形を描画する
oFでプリミティブな図形を描画する物には、
ofCircle
ofRect
ofTriangle
などなど様々な関数が用意されていますが、正方形や正三角形正以外の多角形を描画するには工夫が必要です。
まずは真面目に計算してみます。
/*中心点(center)と基準となる円の半径(radius)を定義*/ ofPoint center; float radius = 50.0; center.set(50,50); /*描画*/ ofBeginShape(); for (int i = 0;i < 360;i += (360/6)){ /*360を割る数で頂点数が決まる*/ ofVertex(center.x+cos(ofDegToRad(i))*radius, center.y+sin(ofDegToRad(i))*radius); } ofEndShape();
これは三角関数を用いて、中心点center、半径radiusの円周上に多角形の頂点をプロットしていく方法です。
この方法で描画することもできますが、少しプログラムの行数が多くなってしまいます。
そこで、ofSetCircleResolutionを裏技的に使います。
ofSetCircleResolution(6); ofCircle(50, 50, 50);
こうすると、たった2行で先ほどと同じように多角形を描画することができます。
実は、ofCircle命令で描画しているのは”限りなく円に近い多角形”です。
本来、より綺麗な円を描いたり、負荷を下げる目的で円の解像度を設定できるのですが、これを利用して正n角系をサクっと描くことができるわけです。