OpenGLで円を描画する
2月になりました。OpenGLの季節だ(え
今回はOpenGLで円を描画する方法を紹介。
DXlibではDrawCircleを呼ぶだけで簡単に円が描けるみたい。
ところが、OpenGLには一発で円を書けるようなAPIは用意されていない。
ので、「単純に三角関数でパラメータ表示して描けばいいんじゃね?」という発想。
中心(a,b)、半径rの円は
x = a + r * cos(θ)
y = b + r * sin(θ)
でいける。
Point2dは座標、Polygon2dは座標配列、EllipseはPolygon2dのコンストラクタを円用に最適化したもの。
Ellipseのコンストラクタで円一周分の座標を打つ。
第4引数のpは、円一周2πを何分割するかという引数。
ちなみにpの値はデフォルトで180。
本当はp=50でもほとんど円に見えるけど。
p=24
p=18
p=12
p=5
んー美しきかな正五角形。
座標配列が初期化できたら、継承元のPolygon2d::drawを呼べばOK。
通常はOpenGLのコールバックの中で呼べばいいのかな。