UNIX実験
2D/3D Graphics, GUI
チーム名「Watering KissMint」
045753B 宮城 健(リーダー)
045702H 池原 匠
045721D 金城 巨樹
045737A 渡口 誠太
045742G 中西 洋貴
Level 1 ビットマップレベル
カラー画像の一点の色は、 RGB と呼ばれるように、三原色で表現することがで
きる。現在のコンピュータでは、8bit ずつ24bit のRGBでカラーを表現すること
が一般的である。画像自体は、これらの一点を二次元配列を使って構成すること
ができる。
適当なプログラム言語を用いて、
struct bitmap {
unsigned char r,g,b;
} frame_buffer[x][y];
のような構造を定義せよ。
これらの上に、
RGBの入れ換え
輝度変換
ガンマカーブ変換
拡大縮小、回転、平行移動などのアフィン変換
などの変換を施すプログラムを作成せよ。
また、netpbm ライブラリを用いて、実際に、変換がうまく行っていることを確
認せよ。そのためには、
pnmnraw などの出力を frame_buffer に読み込む関数
frame_buffer の内容をrawtoppm の入力に合わせて出力する関数
を作成するか、この frame_buffer の内容を表示する X11 lib レベルのプログ
ラムを作成する必要がある。(xloadimage などのソースを参考にして良い)
Level1:PDFファイル(level1.pdf)
Level1:プログラム(level1.tar.gz)
Level 2 直線の描画
frame_buffer をクリアする関数、および、任意の色の直線を描画する関数を作
成せよ。
三角函数を使わずに描画する方法が速度的、誤差的に有利である。
Level2:PDFファイル(lv2.pdf)
Level2:プログラム(level2.tar.gz)
Level 3 ワイヤフレーム3次元画像表示
上記のframe_bufferの絵を、各面に持つ立方体の3次元画像表示を作成したい。
とりあえず、
立方体の3次元画像表示を格納するframe_buffer
を作成する。
表示する立方体の角度や位置を指定するパラメータとしては、座標変換行列を用
いるのが簡単だと思われる。
座標変換行列は、単位行列を回転や拡大縮小などのアフィン変換を利用して作成
する。3x3を用いるのが簡単だが、平行移動を入れた4x4の行列を用いる方法もあ
る。
これらの変換行列を使って、立方体の頂点を作り、直線描画を使って、ワイヤフ
レーム画像をframe_buffer内に描画し、表示してみよ。
Level3:PDFファイル()
Level3:プログラム(level3.tar.gz)
Level 4 ポリゴン表示
立方体を描画する際に、各面に別な frame_buffer を表示したい。これはテクス
チャ・マッピングと呼ばれる。
各面は、テクスチャ画像を、アフィン変換したものになる。長方形は、平行四辺
形(遠近による縮小を考慮する場合は、4辺形)となる。
これらのアフィン変換を順番に適用し、立方体のポリゴン表示を行え。
適当な数の立方体の表示を行い、時間を測定せよ。プログラムを高速化するには
どうしたら良いか? ハードウェアで実現する場合を考慮して、考察し、実装せよ。
ポリゴンを書く順序を間違えると、おかしな画像を表示してしまう。これは、ク
リッピングと呼ばれる問題である。これを解決するのは、立方体ではやさしいが、
一般的には、それほど簡単ではない。
Level4:PDFファイル(lv4.pdf)
Level4:プログラム(level4.tar.gz)
Level 6 ツールキットレベルによる2Dドローツール
任意のツールキットを用いて、簡単な2Dドローツールを作成せよ。
直線、曲線、四角形、円、楕円
の描画ができること。
また、書いた内容を、SVGフォーマットなどに類似した XML で格納する機能を含
めること。
Javaが楽か?
Level6:PDFファイル(level6.pdf)
Level6:PDFファイル(level6.tar.gz)
参考文献
X Japanese Documentation Project
http://xjman.dsl.gr.jp/
独習 Java ジョゼフ・オニール著
改訂 新 Java 言語入門 ビギナー編 林晴比古著
X11 による画像処理基礎プログラミング ; 技術評論社 柴山守
2004 年度前期 2D/3D Graphics, GUI 「P 歩班」
http://www.ie.u-ryukyu.ac.jp/ j02005/Unix/X11/index.html
2004 年度前期 2D/3D Graphics, GUI 「ポロチラリッコロ」
http://www.ie.u-ryukyu.ac.jp/ j02023/UNIX/X11/index.html