多角形の描画

GWpolygon() 関数を利用して多角形を描くことが出来る。
例えば以下のような三角形を描く場合は、その頂点(例では三つ)の座標位置をそれぞれ配列変数 [1] に格納し、GWpolygon() に対して配列そのものと、要素の数を引数に指定する。

まず以下のサンプルプログラムを実行して、どのような記述でどのような図形が描かれるのか試すと良い。

サンプルプログラム poly.c 結果

プログラム解説

polygon

試みに上のような三角形を描く。この三角形の各頂点の座標位置は、それぞれ以下のような値になるだろう。

 ( 100.0, 100.0 )
 ( 200.0, 100.0 )
 ( 150.0, 250.0 )

プログラムの中では、それを points という名前の実数型の配列変数に格納し、その後の GWpolygon という関数で多角形として描かせている。配列についての詳細は配列の項を参照。具体的には以下のように宣言することで、3 つの座標を x, y の 2 つについて格納できる状態になる。

   float points[3][2];

8角形を描く場合はこれが points[8][2] となる。この points という名前の変数に、以下の三行(一行に 2 文あるので合計 6 文)の代入文によって、それぞれの x, y 座標位置を格納する。[ ] の中の数字の変化に注目。

   points[0][0]=100.0;  points[0][1]=100.0;
   points[1][0]=200.0;  points[1][1]=100.0;
   points[2][0]=150.0;  points[2][1]=250.0;

8角形を描く場合はこれが points[7][0] と points[7][1] まで繰り返されることになる。( 0-7 までを使って 8 つ )

こうした後で、

   GWpolygon(*points,3,0);

と指定することで、3つの頂点をもつ多角形として描かれる。8角形なら二番目の引数は 3 ではなく 8 になるだろう。

なおサンプルプログラムでは GWpolygon() 関数を呼び出す直前に、以下のように色指定をすることで、中を塗りつぶした赤色の三角形を描いた。

  GWsetpen(13, -1, -1, 4);
  GWsetbrs(13, 1, -1);    

色番号についてはGWcolor() 関数を参照。GWsetpen(), GWsetbrs() についてはそのすぐ次の「GWcolor で効果がないとき」を参照。

GWsetpen() の第一引数である 13 は赤色を意味する。GWsetbrs(13, 1, -1) は塗りつぶしの指定。塗りつぶさない場合は (13, 0, -1) と指定する。



Yutaka Yasuda (yasuda@cc.kyoto-su.ac.jp)