ファーストイヤー・セミナーⅡ 第14回 2次元グラフィックス(2) グラフィックの利用(復習) 最初に #include<igraph.h> を忘れずに ←間違えないよう注意 直線を描く関数(復習) Line(x1, y1, x2, y2) は点(x1, y1)から点(x2, y2)まで直 線を引く関数である Line(10, 10, 50, 50) なら点(10, 10)から点(50, 50)まで直 線が引かれる 直線の設定(復習) 直線を描く場合には、 (1)直線の色を指定する SetLineColor( 色指定 ); (2)直線の形式・太さを指定する SetLineStyle( 形式,太さ ); (3)線を描く Line (始点のx座標, 始点のy座標, 終点のx座標, 終点のy座標) とする。 色指定 色指定は以下のようになる。 色の指定は、実際に描画する部分の直前におこなうこと。 グラフィックの位置(復習) グラフィックでは左上が(0, 0)となり、x 座標は右へ、y 座 標は下へ行くほど大きくなる (0, 0) x軸 (10, 10) (50, 50) y軸 直線移動による図形の描画 山形の直線を少しずつずらして図形を描く ←忘れずに書いておくこと ←線の色を赤に変更 ←左下から山の頂点まで線を引く ←線の色を青に変更 ←頂点から右下まで線を引く 描画の手順 以下のように、少しずつ移動しながら山を連続して描いている スタート地点から中間点、ゴール地点 へと線を引く (320,310) (10,320) スタート、ゴールを少し(10ずつ)内側へ、 中間点を少し(10ずつ)上へずらして描画 (630,320) この作業を繰り返す グラフの描画 y = sin x のグラフ(正弦波)を描いてみよう ←math.h も必要 ←「P」をあらかじめ定義し、プログラム中で使う 角度(°)をラジアンに変換するためのもの ←x軸、y軸の描画 ←線の色を赤に変更 ←角度を1度ずつ変化させ、 前の点(x1, y1) から 次の点(x2, y2)まで線を引く #define の利用 プログラム中で使用する定数を、あらかじめプログラム ファイルの最初の部分(#include~の後)に書いておくこ とができる 書式: #define 変数名 数値 例) #define Pai 3.14159 ケタの長い数値や、頻繁に出てくる定数などをあらかじ め書いておくと便利 表示例 まずグラフの軸を引き、そのあと少しずつ (x1, y1)、(x2, y2) を 計算しながら連続線を引いていく (50,20) (50,200) (50,370) (700,200) 練習 y = cos x のグラフ(余弦波)を描け 様々な図形の描画 四角形を描く関数 Rectangle (x1, y1, x2, y2); 左上の座標が (x1, y1)、右下の座標が (x2, y2) の四角形 円(だ円)を描く関数 Ellipse (x1, y1, x2, y2); 左上の座標が (x1, y1)、右下の座標が (x2, y2) の四角形 に内接する円(だ円) 図形内部の色指定 SetFillColor (色指定); 色指定をしない場合は黒で塗りつぶされる 練習:様々な図形の描画 赤い四角形と青い円を描いてみよう ボールの運動 四角形の中をボールが跳ね回るプログラムを作ってみよう プログラムが長いので資料の方も参照して作成してください プログラム冒頭部分 ←rand関数を使うので stdlib.h も入れる L: 四角形の左側の x 座標 R: 四角形の右側の x 座標 T: 四角形の上側の y 座標 B: 四角形の下側の y 座標 r: ボールの半径 ボールの運動(2) メイン関数冒頭部分 x, y : ボールの中心座標 vx, vy : ボールの進行方向と進む距離 x, y, vx, vy の初期化 vx, vy はマイナスの場合もありえるので ランダムに(50%の確率で)-1をかけておく ボールの運動(3) 繰り返し部分 白い四角形を描く x, yの位置を計算する x 軸方向に vx、y 軸方向に vy だけ移動 x, yの位置を判定し、枠をはみ出したら 枠内に戻し、進行方向を変える (左へはみ出したら右へ、 下へはみ出したら上へ、 というように) ボールの運動(4) ボール描画部分 塗る色を赤色に設定 x, y を中心に半径 r の 円を描画 ↑ このままだと実行が早すぎて見えないので 無意味な計算をして時間稼ぎ (普通は sleep 関数などを使いますが、 Ultra-Cでは使えないので苦肉の策 ちょっと恥ずかしい力技なので将来 プログラマなどになる人はマネしないように) 第14回のレポート 以下のプログラムを作成し、メールで提出してください 宛先: 先程のボールの運動で、壁にぶつかるごとに色 がボールの色が変わるようにしてみてください 考え方:vx, vy の正負によって進行方向を4つに 分け、if 文を使ってボールの色を変えてみる
© Copyright 2024 ExpyDoc