今週は,お口直しに,コンピュータで絵を描く方法を学ぶ。
コンピュータの画面は,画素(ピクセル:色の点)の集まりで表現される。つまり,コンピュータの画面は点描になっている。
画面の左上を原点(0,0),X座標は左から右へ増加,Y座標は上から下へ増加し,座標値は正の整数である。
コンピュータの画面上の座標は,一般の感覚とは上下逆であることに注意しよう。
画面にグラフィックスを表示するための関数の集まりをダウンロードする。
ここ(mogra.f)を右クリックして,ソースファイルを保存するフォルタと同じ場所に保存する。
(この時,「ファイルの種類」は「テキスト文書」ではなく「すべてのファイル」に変更すること。)
これは,グラフィックスの基本的な関数を集めたプログラムで,使える命令は下記の通りである。
これらの関数を組み合わせて,画面に絵を描く。
#include <stdio.h>
#include "mogra.f" /* この行を忘れないこと */
void main()
{
g_int(640, 480); /* 640*480ピクセルのウインドウを開く */
line(0,20, 40,0, 5); /* 線を引く */
box(400,400, 560,479, 2); /* 四角を書く */
circle(256,256, 100, 3); /* 円を描く */
gend(); /* 終了処理. */
}
このサンプルプログラムを実行すると,新しいウィンドウが開き,線・四角・円が描画される。絵が描画されたウインドウを閉じるには,コマンドプロンプトのウィンドウで,Ctrl+C(コントロールキーを押しながら,Cを押す。)によりプログラムを終了させる。
(1) 中心を(10,240),半径10の円を描画するプログラム。
(2) 半径10の円の中心を,(10,240)から(630,240)まで20おきにずらして描画するプログラム。
(3) 画面の中心を円の中心として,半径を5, 10, 15 と5おきに画面いっぱいに同心円を描画するプログラム。
(4) 画面の中心を中心として,一辺の長さが8, 16, 24 と8おきに増加する同心の四角形を描画するプログラム。
(5) y = sin(x)ののグラフを,角度0度から360度までの1周期分を画面に表示したい。順番に考えて完成させよう。
・グラフを書くには,1度おきにxとyの座標を求めて,点を描画すればよい。ただし,
・xの変域は,0〜360。これは,そのままでも良さそう。
・yの変域は,-1〜1。これをそのまま座標にすると,ほとんど,何も表示されない。そこで,
・yを,画面いっぱいに広がるよう,200〜-200の値をとるように,変換(正負逆転&200倍)しよう。
この考えで,うまくサインカーブが描画できる。
(6)同様に考えて,y=x2のグラフを画面いっぱいに表示されるように作成せよ。