9.8 その他の図形描画サンプル
EGGXでは基本的な図形しかサポートしていません。そのかわりにプログラマが自分で目的とする図形を描く関数を作ればよいのです。
ここでは幾らか描画のサンプルを示します。
傾いた楕円を描く
楕円、特に傾いた楕円は登場する場面が多いのでここにサンプルをおいておきます。楕円を非常に頂点数の多い多角形として描画するのですが、各頂点の座標位置を指定の角度傾けた位置にする加工をしています。
eclipse.c (実行結果)
特定の座標位置を回転させる
次により汎用的に、座標位置を回転させる関数を紹介します。座標(x,y) を、(ox,oy) を中心にthだけ回転させた座標位置 (x', y')は、以下のようにして得る事が出来ます。(x' などと書かれている事から分かるでしょうが、以下はCのプログラムとしてそのまま使える記述ではありません。)
xx = x - ox yy = y - oy x' = xx * cos(th) - yy * sin(th) + x y' = xx * sin(th) + yy * cos(th) + y
そこでこの「ある座標を、ある座標を中心にこれだけ回転させた座標位置」を求める関数を rotateX(), rotateY() として作り、それを用いて幾つかサンプルを用意しました。
・傾いた楕円を描く:rotate1.c (実行結果)
・傾いた四角形を描く:rotate2.c (実行結果)
・星形を回転させる:rotate3.c (実行結果)