情報工学実験4:2D/3D Grahpics,GUI
チーム名
『2次元-3次元-真次元』
メンバー
045708G 上原研大
045726E 島袋吉騎
045730C 高村隆孝
045735D 多和田真二
045759B 山城拓也
045762B 義永栄史
pdfファイル
プログラムソースの一括ダウンロード
目的
この実験では、UNIX上で動作するGUI(Graphical User Interface)
の代表的なシステムのプログラムを行う。
一番低レベルなビットマップ(Frame Buffer)レベル
X Window Systemレベル
ツールキットレベル
スクリプト言語レベル
Open/GLライブラリ
これらを用いて、コンピュータのインタフェースの設計に関する理解を深め、
経験を積むことが出来る。また、GUIはイベント駆動型のプログラムとオブジェクト指向
計算が必須であり、これらの理解を深めることが出来る。
Level1 ビットマップレベル
カラー画像の一点の色は、 RGB と呼ばれるように、三原色で表現することができる。現在のコンピュータでは、8bit ずつ24bit のRGBでカラーを表現することが一般的である。画像自体は、これらの一点を二次元配列を使って構成することができる。
適当なプログラム言語を用いて、
struct bitmap {
unsigned char r,g,b;
} frame_buffer[x][y];
のような構造を定義せよ。
これらの上に、
RGBの入れ換え
輝度変換
ガンマカーブ変換
拡大縮小、回転、平行移動などのアフィン変換
などの変換を施すプログラムを作成せよ。
実行結果
Level1プログラムソースのダウンロード
Level2 直線の描画
frame_buffer をクリアする関数、および、任意の色の直線を描画する関数を作成せよ。
実行結果
Level2プログラムソースのダウロード
Level3 ワイヤーフレーム3次元画像表示
立方体の3次元画像表示を格納するframe_bufferを作成せよ。
表示する立方体の角度や位置を指定するパラメータとしては、座標変換行列を用いて、
単位行列を回転や拡大縮小などのアフィン変換を利用して作成する。
これらの変換行列を使って、立方体の頂点を作り、直線描画を使って、
ワイヤフレーム画像をframe_buffer内に描画し、表示してみよ。
実行結果
Level3プログラムソースのダウンロード
Level4 ポリゴン表示
立方体を描画する際に、各面に別な frame_buffer を表示したい。
これはテクスチャ・マッピングと呼ばれる。各面は、テクスチャ画像を、
アフィン変換したものになる。長方形は、平行四辺形(遠近による縮小を考慮する場合は、4辺形)となる。
これらのアフィン変換を順番に適用し、立方体のポリゴン表示を行え。
適当な数の立方体の表示を行い、時間を測定せよ。プログラムを高速化するにはどうしたら良いか?
ハードウェアで実現する場合を考慮して、考察し、実装せよ。
実行結果
Level4プログラムソースのダウンロード
Level5 ツールキットレベル
Mesa などの Open/GL を用いて、上記の立方体の表示と同じことを行え。時間も測定し、
自分で書いたプログラムと比較せよ。時間の差は、どこから来るのか考察せよ。
実行結果
Level5プログラムソースのダウンロード
Level6 ツールキットレベルによる2Dドローツール
任意のツールキットを用いて、簡単な2Dドローツールを作成せよ。
直線、曲線、四角形、円、楕円
の描画ができること。
また、書いた内容を、SVGフォーマットなどに類似した XML で格納する機能を含めること。
実行結果
Level6プログラムソースのダウンロード
LevelX
新しいレベルを提案し、実装および評価を行え。
実行結果
LevelXプログラムソースのダウンロード
参考文献
梨II
2006年前期UNIX実験「Watering KissMint」チーム
2006年前期UNIX実験「又又」チーム
X Window System(Xウィンドウシステム)の動作原理 Xプロトコル
Quick introduction to XWindow Graphics
X アプリケーション工房
Electronic Textbook index0
Welcome to Rio's Laboratory
井門研究室ホームページ
OpenGL入門
GLUTによる「手抜き」OpenGL入門
X Japanese Documentation Pro ject
ゲームとアフィン変換
X-Window Programming
Xlib-C Language X interface
独習Java ジョゼフ・オニール著 トップスタジオ訳 武藤健志監修 翔泳社
改訂新Java言語入門 林晴比古著 ソフトバンクパブリッシング