初年次セミナー 第14回 2次元グラフィックス(2)
C言語におけるグラフィックス処理(復習) Windows上でグラフィックスを表示するにはWindows APIを利用する方法や、専用のソフトウエアを利用する方法などがあるが、いずれも作業が複雑になる 初年次セミナーではグラフィックス表示のために作成された「wingxa.h」というファイルを用いて、なるべく簡単にグラフィックス処理を体験しよう 参考テキスト:「Windowsですぐにできる C言語グラフィックス」、安居院猛、佐野元昭、関根詮明 共著、昭晃堂
wingxa.h の導入 「wingxa.h」は、参考テキストで使用されているグラフィックス処理のためのヘッダファイル Windows上でグラフィックス処理をするためのオリジナルの関数がまとめられている デスクトップに「wingxa.h」を配信するので、届いたことを確認して「14」フォルダにコピーすること(前回使用した「wingxa.h」を「14」フォルダにコピーしてもよい) 届かない場合は下記のホームページの「初年次セミナー」のリンクから右クリックでダウンロードし、「14」フォルダへコピー URL: http://ns1.shudo-u.ac.jp/~iyori/
ウインドウを描画する ウインドウの描画には以下のような関数を使う 描画色の指定には以下のような関数を使う ※ color16関数で指定できる色は以下の通り
様々な図形を描画する 図形描画に使用できる関数は以下のようなものがある 関数名 機能 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)に設定 左下の点はx座標を0から250まで 10ずつ増やす(y座標は0) 中央の点はy座標を0から250まで 10ずつ増やす(x座標は250) 右下の点はx座標を500から250まで 10ずつ減らす(y座標は0)
sin関数の描画 直線描画の関数を使って、sin関数のグラフを描いてみよう
sin関数の描画 原点を左下端から(50,200)に設定 (-50,0)から(650,0)へ線を引く(x軸) (0,200)から(0,-200)へ線を引く(y軸) (x1,y1)から(x2,y2)までの短い直線 をいくつも描いてグラフにする m_rad は角度をラジアンに変換する ための係数 100倍しているのは、そのままだと グラフが小さすぎるため
動画を描く:ボールの運動 ウインドウ内をボールが跳ねる動画を描いてみよう ・・・
ボールの運動:前半部分 動画の際はginit(2)とする (x,y)・・・ボールの中心座標 r・・・ボールの半径 vx・・・x方向の移動距離 vy・・・y方向の移動距離 0~359°の間で進行方向 の角度をランダムに決める srand関数で毎回進行方向 がランダムになるようにする (time.hが必要)
ボールの運動:後半部分 何かキーが押されるまで実行継続 x-r, x+r はそれぞれボール の左端と右端の座標 ボールがウインドウの外に の左端と右端の座標 ボールがウインドウの外に 出たら、枠内に戻して進行 方向を変更する 左右いずれかにはみ出し たときには、x方向を反転 上下いずれかにはみ出し たときには、 y方向を反転 バッファの切り替えをして画像を 描画することで、チラツキを抑える
第14回のレポート 以下のプログラムを作成し、メールで提出してください 宛先: (1)ボールの運動プログラムで、壁に当たるたびにボールの色が変わるもの (2)sin関数のグラフを右に少しずつずらしながら、多数の線を描画するプログラム