第10回:グラフィックス

今週は,お口直しに,コンピュータで絵を描く方法を学ぶ。


グラフィック入門編

コンピュータの画面は,画素(ピクセル:色の点)の集まりで表現される。つまり,コンピュータの画面は点描になっている。
画面の左上を原点(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のグラフを画面いっぱいに表示されるように作成せよ。