UNIX実験

2D/3D Graphics, GUI

チーム名「Watering KissMint」

  045753B   宮城 健(リーダー)
045702H   池原 匠   
045721D   金城 巨樹  
045737A   渡口 誠太  
045742G   中西 洋貴  



総合のPDFファイル




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