情報処理演習 (2)C言語の入門

情報処理演習
(9)グラフィックス
システム科学領域 日浦 慎作
グラフィックス
• C言語には,グラフィックス表示
に関する機能は備わらない
– コンピュータシステムの種類に依存
– いろいろなグラフィックス表示の形態がある
• ビジネスソフトウェアの表示(数式やグラフなど)
• 立体的な表示(3次元コンピュータグラフィックス)
• ビデオ,アニメーションのような動画表示
など.これらに合わせてそれぞれ適した
グラフィックス表示ライブラリを用いる.
情報処理演習では
• “HandyGraphics” ライブラリを使用
– 単純,簡単
#include <stdio.h>
#include <handy.h>
•handy.h の include を忘れない
•コンパイルオプションに -lhg を入れる
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()
– 始点と終点の 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 () : 画面に文字を表示
–
–
画面に出すにはいいが,計算機内での処理には不向き
例えば,数値に対応する文字列を得る場合
•
•
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);
図形の描き方
• 座標変換を駆使する
一次変換:拡大縮小,回転等
• 配列をうまく使う
同じような図形をたくさん描く,曲線を描くなど
• 関数をうまく使う
座標の計算,座標変換,一定処理の繰り返しなど
に関数をうまく使うとシンプルなプログラムになる