情報処理演習 (9)グラフィックス システム科学領域 日浦 慎作
グラフィックス C言語には,グラフィックス表示 に関する機能は備わらない コンピュータシステムの種類に依存 いろいろなグラフィックス表示の形態がある ビジネスソフトウェアの表示(数式やグラフなど) 立体的な表示(3次元コンピュータグラフィックス) ビデオ,アニメーションのような動画表示 など.これらに合わせてそれぞれ適した グラフィックス表示ライブラリを用いる.
情報処理演習では “HandyGraphics” ライブラリを使用 単純,簡単 handy.h の include を忘れない コンパイルオプションに -lhg を入れる #include <stdio.h> #include <handy.h> int main (void) { int w; w = HgWOpen( 200.0, 150.0, 500.0, 400.0); HgInitEPS( w, “file.eps”); /* 絵を描く関数を呼び出す */ HgWClose (w); return 0; }
HandyGraphics で使える関数 直線 : HgWLine() 円 : HgWCircle() 四角形 : HgWBox() 始点と終点の x, y 座標を指定 円 : HgWCircle() 中心の x,y 座標と半径を指定 塗りつぶしあり : HgWCircleFill() 四角形 : HgWBox() 左下隅の座標と,幅,高さを指定 塗りつぶしあり : HgWBoxFill() 文字列 : HgWText() 文字を表示する場所の左下隅の座標と,文字列を指定
その他の関数 HgWClear ( w ); 画面のクリア HgColor(HgRGB (R, G, B)); 色の設定 HgWWidth( w, t); 線の幅の指定 など
曲線の表示 曲線を数値で表すことは難しい 例えば sin 曲線を書く場合 曲線は「折れ線」で表示 分割数を増やすと事実上曲線に見える y = sin(x) の x を変化させながら y の値を求める 一つ前の座標から新しい座標までを直線で結ぶ
sprintf() printf () : 画面に文字を表示 sprintf では画面に表示する代わりに文字列に結果を入れることが出来る 画面に出すにはいいが,計算機内での処理には不向き 例えば,数値に対応する文字列を得る場合 double の数値 123.4 5文字の文字列 “123.4” sprintf では画面に表示する代わりに文字列に結果を入れることが出来る char str[100]; double a = 123.4; sprintf(str, “%f”, a); /* str には文字列 “123.4” が入る */
多角形の描画 座標の配列を用いる double x[4] = {1.0, 2.0, 3.0, 2.0}; double y[4] = {2.0, 1.0, 2.0, 3.0}; HgWPolygon (w, 4, x, y);
図形の描き方 座標変換を駆使する 配列をうまく使う 関数をうまく使う 一次変換:拡大縮小,回転等 同じような図形をたくさん描く,曲線を描くなど 関数をうまく使う 座標の計算,座標変換,一定処理の繰り返しなどに関数をうまく使うとシンプルなプログラムになる