多角形の描画
GWpolygon() 関数を利用して多角形を描くことが出来る。
例えば以下のような三角形を描く場合は、その頂点(例では三つ)の座標位置をそれぞれ配列変数 [1]
に格納し、GWpolygon() に対して配列そのものと、要素の数を引数に指定する。
まず以下のサンプルプログラムを実行して、どのような記述でどのような図形が描かれるのか試すと良い。
プログラム解説
試みに上のような三角形を描く。この三角形の各頂点の座標位置は、それぞれ以下のような値になるだろう。
( 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) と指定する。