初年次セミナー 第13回 2次元グラフィックス(1)
前回のレポート解答例 「氏名と番号」を入力したファイル(ここではdata3.txt)を読み込んで、画面に表示するプログラム
前回のレポート解答例 関数 y = x2 のx, y の組を計算し、ファイルに書き出すプログラム(x は –3 から 3 まで 0.1 間隔) ↑ 生成されるファイルと それをExcelでグラフ にしたもの
実行準備 Mドライブの割り当てが済んでいることを確認し、Mドライブ内の「FPS」フォルダに移動してください 今日作成するファイルの保存用に、「13」フォルダを作ってください
C言語におけるグラフィックス処理 C言語で画面上にグラフィックスを表示する場合、処理系や使用するアプリケーションによって様々な違いがある Windows上でグラフィックスを表示するにはWindows APIを利用する方法や、専用のソフトウエアを利用する方法などがあるが、いずれも作業が複雑になる 初年次セミナーではグラフィックス表示のために作成された「wingxa.h」というファイルを用いて、なるべく簡単にグラフィックス処理を体験しよう 参考テキスト:「Windowsですぐにできる C言語グラフィックス」、安居院猛、佐野元昭、関根詮明 共著、昭晃堂
wingxa.h の導入 「wingxa.h」は、参考テキストで使用されているグラフィックス処理のためのヘッダファイル Windows上でグラフィックス処理をするためのオリジナルの関数がまとめられている デスクトップに「wingxa.h」を配信するので、届いたことを確認して「13」フォルダにコピーすること 届かない場合は下記のホームページの「初年次セミナー」のリンクから右クリックでダウンロードし、「13」フォルダへコピー URL: http://ns1.shudo-u.ac.jp/~iyori/
ウインドウを作成してみよう 「wingxa.h」が「13」フォルダにあることを確認し、以下のようなプログラムを書いてコンパイルし、実行してみよう ※ 実行後は、開いたウインドウ上で何かキーを押せば終了できる コンパイル時に必要 おまじないと思って 書いておくこと “”で囲むことに注意 ウインドウを作成する関数
ウインドウサイズの指定と原点の設定 ginit(1) はウインドウを作成する関数 ウインドウの大きさは gwinsize(横幅, 縦幅) で指定できる ウインドウ内に図形を描画する際、座標を指定するために座標の「原点」を gsetorg(x, y) で指定する(x, yはウインドウ左下端からの距離) 大きさ 600×400ピクセルで、左下端を原点とするウインドウを作成してみよう
直線を引いてみよう 直線を引く関数は gline(始点のx座標, 始点のy座標, 終点のx座標, 終点のy座標); 直線を引く関数は gline(始点のx座標, 始点のy座標, 終点のx座標, 終点のy座標); である。先ほど作成したウインドウ上に直線を引いてみよう ←座標(10,10)から(590,390)へ 直線を引く
色の指定 デフォルトでは描画の色は白になっている 描画の色を指定するには 描画の色を指定するには gcolor(r, g, b); (※r, g, bは0~255の整数)または color16(0~15の整数); を用いる gcolor関数で指定する値はRGB値で、それぞれ赤・緑・青の分量を示す(gcolor(255,0,0);とすれば赤になる) color16関数では事前によく使う16色が定義されており、0~15の整数で指定する(数値と色の対応は以下の表の通り)
色つきの直線を描いてみよう 描画の色を指定する場合は、「色の設定」→「描画」の順で指定する gcolorで「赤」を指定し、(10,10)から (590,390)まで直線を引く color16で「黄色」を指定し、(10,390)から (590,10)まで直線を引く
様々な図形を描画する 図形描画に使用できる関数は以下のようなものがある 関数名 機能 glinewidth(w) gpnt(x, y) 座標(x, y)に1ドットの点を描く gline(x1,y1,x2,y2) 座標(x1, y1)から(x2,y2)まで直線を引く gtriangle(x1,y1,x2,y2,x3,y3) 座標(x1,y1)、(x2,y2)、(x3,y3)を頂点とする三角形の辺を描く gtri(x1,y1,x2,y2,x3,y3) 座標(x1,y1)、(x2,y2)、(x3,y3)を頂点とする三角形を描く(中は塗りつぶし) gtetragon(x1,y1,x2,y2,x3,y3,x4,y4) 座標(x1,y1)、(x2,y2)、(x3,y3)、(x4,y4)を頂点とする四角形の辺を描く gtetra(x1,y1,x2,y2,x3,y3,x4,y4) 座標(x1,y1)、(x2,y2)、(x3,y3)、(x4,y4)を頂点とする四角形を描く(中は塗りつぶし) grectangle(x1,y1,x2,y2) 座標(x1, y1)、(x2,y2)を対角点とする長方形の辺を描く grect(x1,y1,x2,y2) 座標(x1, y1)、(x2,y2)を対角点とする長方形を描く(中は塗りつぶし) gcircle(x,y,r) 座標(x, y)を中心とする半径rの円周を描く gcirc(x,y,r) 座標(x, y)を中心とする半径rの円を描く(中は塗りつぶし) gellipse(x,y,rx,ry) 座標(x, y)を中心とし、x方向の半径xr、y方向の半径yrの楕円の周を描く gellip(x,y,rx,ry) 座標(x, y)を中心とし、x方向の半径xr、y方向の半径yrの楕円を描く(中は塗りつぶし)
図形を描いてみよう 図形描画の関数を使って、様々な図形を描いてみよう
練習:図形を描く 図形描画の関数および座標に注意して設定する 色を黄色に設定し、(50,50)、(20,200) を対角点とする長方形を描く 色を赤に設定し、(200,200)を中心と する半径100の円を描く 色を緑に設定し、(500,300)、(200,250)、 (300,100)を頂点とする三角形を描く 色を深紅色に設定し、(400,350)、 (550,300)、(450,100)、(350,50) を頂点とする四角形を描く
第13回のレポート 以下のプログラムを作成し、メールで提出してください 宛先: 様々な図形を組み合わせて、自分のオリジナルの模様を描くプログラム 図形の数、色、形は自由に設定してよい