Visual情報論 課題(2001年度)
下記のプログラミング課題において5問中少なくとも4問
(課題4か課題5を選択)を提出せよ。
プログラミング課題
インタラクティブ性のあるプログラムが理想であり、それを遠隔地でも評価するには
Javaで作成すると効果的であるので、可能な人はできるだけJavaを試みて下さい(この場合画像サイズは300x300以下でもよい)。X-Windowを用いてスクリーン上に表示する方法でもよい。
この際、出力例がカラー画像の場合、それを評価して欲しい人は、自分のホームページに画像を置いて見れるようにしてもよい。
課題1
4辺形のウィンドウに対する、任意の多角形のクリッピングのプログラムを作成せよ。
- クリッピングはウインドウを構成してる各辺について、
逐次処理する方法を利用する。
この方法は配布資料[1](p.106 )を参照のこと。
- n多角形とし、会話的に頂点はマウスで入力するかファイルから読むこととする。
- ウインドウを任意の凸角形にした場合のクリッピングの
プログラムも作成せよ。
課題2
任意の位置からみた凸多面体を線画表示せよ。
- 立方体、4面体などの凸多面体のモデル(頂点の座標、面の構成頂点)を作成し、形状および透視変換の確認のため、線画(ワイヤーフレーム)で表示せよ。
- 透視変換は教科書[2]を参照のこと。平行投影にしてもよい。
視点位置はファイルで指定するか、初期値をマウスで回転させるのでもよい。
- 他の表示法として、輪郭線とその他の線は異なる色で表示せよ(裏と裏との稜線は表示しない)。
なお、凸多面体であるので、隠面消去は表の面の表示のみで実現できる。
課題3
凸多角形の走査変換(塗りつぶし)のプログラムを作成せよ。
- 走査変換は教科書[3](P.134)を参照のこと。
走査線と多角形との交点計算は増分法を使用する。
- n多角形とし、会話的に頂点はマウスで入力するかファイルから読むこととする。
- 多角形内の色は次の2種とする。1)同一色,2)各頂点の色(輝度)を与え内部は線形補間する(補間にはスムーズシェーディング法を使用し、その方法は教科書[3](p.156)を参照のこと)。
課題4
任意の位置からみた凸多面体を陰影表示せよ。
- 課題2と課題3を組合す問題である。
- 構成面のうち、裏の面は除外し、表の面に課題3.の走査変換を利用しての面を塗りつぶす。
- 面の色は各面が異なる色の場合と、同一色だが光源の方向によって陰影が異なる場合とを表示せよ。
- 後者の場合、面の明るさは、光源が平行光線に対する輝度(拡散光と環境光)を算出せよ。
- 基本的には次の手順である。1)透視変換、2)裏面除去、3)面の輝度計算、4)各面の走査変換
課題5 Bezier曲線の描画プログラムを作成せよ。
- 任意の次数の曲線を描画する。曲線の式は配布資料[3](P.75)を参照のこと。
- 複数の曲線をスムーズに結合して曲線形状を表現しなさい。
次数は3に制限してよいが、
例として、複数のBezier曲線を組み合わせて円(真円でなくてよい)
、アウトラインフォントなどを描画せよ。
JavaやX-windowを使用方法を勉強する時間のない場合は、次の方法でもよい。すなわち、スクリーンを想定した配列を準備し、それに輝度情報を書き込み、準備したツールで可視化する。画像サイズは500x400程度とする。ただし、プログラムリストと結果のハードコピー(PostScript形式にし印字)を提出すること。この際、画像をセーブすることが必要になるが、保存の画像形式およびそのプログラムは添付資料を参考にして下さい。
注:プログラミングが困難な学生は相談に応じてレポート課題を提出する方法も考慮します。
参考文献(図書)
- [1] 配布資料; 中前、西田 「3次元コンピュータグラフィックス」昭晃堂 (p.63 -109 )
- [2] /~nis/CG/cgtxt/cg2/cg026.htm#cg26
- [3] 「 技術編CG標準テキストブック」、 CGARTS(画像情報教育振興協会)
- 参照URL
CG関連図書: /~nis/junk/cg_books.html
- 締切
: 9月13日(木曜)
結果は各自のホームページに置くか、印字して事務室に提出、あるいはメイルに添付して下さい。
連絡先:email: nis@is.s.u-tokyo.ac.jp
電話:内線4106 (西田研究室)
/~nis/
西田友是
東京大学理学部 情報科学科
email: nis@is.s.u-tokyo.ac.jp