第8回:グラフィックス

今週は,関数の復習を兼ねて,コンピュータで絵を描く方法を学ぶ.


第7回演習:解答例


グラフィック入門編

まず,道具箱をダウンロードしよう.

ここ(mogla.zip)を右クリックして,ソースファイルを保存するフォルダと同じ場所に保存する.
(この時,「ファイルの種類」は「テキスト文書」ではなく「すべてのファイル」に変更する.)

これは,グラフィックスの基本的な関数を集めたライブラリ(OpenGL)を,borland C で使えるようにしたもので,ファイルをダブルクリックするとmogla という名前のフォルダができる.グラフィックスを利用してプログラムを組むときは,このフォルダの中で作業をする.

プログラムで,使える命令は下記の通りである. これらの関数を呼び出して,画面に絵を描いてみよう.


画面に絵を描画する場合,まず,座標系に注意しよう.
X座標は左から右へ増加,Y座標は下から上へ増加する.
原点は,新しくできるウインドウの中心となる.
座標値は整数である.
これらの特徴は,コンピュータのディスプレイの仕組みに依存する.



グラフィックのサンプルプログラム


#include <stdio.h>
#include "mogla.f"		/* この行を忘れないこと */

void graphic(void)		/* この関数の中で描画する */
{
	double x1,x2,x3,y1,y2,y3;

	gl_clearbuffer();		/* おまじない */

		x1=-200.0;
		y1=0.0;
		x2=0.0;
		y2=200.0;
		x3=(x1+x2)/2.0;
		y3=(y1+y2)/2.0;

	line(x1,y1,x2,y2,10);
	line(0.0,0.0,x3,y3,12);
	line(0,0,320,0,5);

	box(0,0,100,100,2);

	circle(256,256,100,3);
	
	gl_flush();			/* おまじない */

}

void main()
{
	gl_int(640, 480);		/*  640*480ピクセルのウインドウを開く  */

	gl_displayfunc(graphic);	/* 描画関数の呼び出し */

	gl_loop();			/* 再描画処理  */
}

このプログラムは,先ほどのmoglaフォルダに,mogla.cとして保存されている.これをコンパイルするには,bccglというコマンドを用いて,

bccgl mogla.c

とする.実行すると,新しいウィンドウが開いて,グラフィックが描かれる.(若干画面が乱れますが,画面を重ねると直ります)

絵が描画されたウインドウを閉じるには,ウインドウ右上の閉じるボタン「×」を押す.


【演習課題】

(1)台形を表示するプログラムを作成してみよう.

(2)y = x のグラフを表示するプログラムを作成してみよう.ただし,原点は画面の左下とし,コンピュータの画面の座標は一般の感覚とは上下逆であることに注意し,本来の形に戻して表示しよう.

(3)(2)と同様に y = x2 のグラフを表示するプログラムを作成してみよう.ただし,できるだけ見やすい形になるよう工夫しよう.

(4)(3)と同様に y = sin(x) および y = cos(x) のグラフを表示するプログラムを作成してみよう.ただし,原点は画面の左中央とする.また,それぞれのグラフで色分けしてみよう.

(5)前々回の演習で作成した"sin.csv" のファイルを読み込んで,(4)と同様に y = sin(x) のグラフを表示するプログラムを作成してみよう.

(6)16×16の2次元配列に配色のデータ(データの値を色の番号として考える)を書いてあります.配列をファイルから読み込み,グラフィックスを用いて画面に表示するプログラムを作成してみよう.どんな図柄が現れるかな??
配列は、次のファイルを(右クリック-->[対象をファイルに保存])で作成したプログラムと同じフォルダに入れること.
   [graphics.txt]

授業終了時までに完成したプログラムをoh-meijiシステムを使って提出すること.
(提出期限を厳守し,提出用の回に提出しないと採点を行わない)