ビジュアル情報論 課題(2003年度)
下記のプログラミング課題において5問中少なくとも4問を提出せよ。
プログラミング課題
インタラクティブ性のあるプログラムが理想であり、
それを遠隔地でも評価するにはJavaで作成すると効果的であるので、可能な人はできるだけJavaを試みて下さい(この場合画像サイズは300x300以下でもよい)。X-Windowを用いてスクリーン上に表示する方法でもよい。
この際、出力例がカラー画像の場合、それを評価して欲しい人は、自分のホームページに画像を置いて見れるようにしてもよい。
課題1 Bezier曲線を描画するプログラムを作成せよ。
- 教科書p.77図3.2を参考にn次バーンスタイン関数のグラフを描画せよ[3]。なお、n(2から5まで)を指定できるものとする。
- (n+1)個の頂点を入力し、n次Bezier曲線を描画するプログラムを作成せよ。
課題2 3次Bezier曲線を組み合わせてアウトラインフォントを作成せよ。
- 複数のBezier曲線を描画するプログラムを作成し、隣接する曲線がスムーズに接続される条件を自動補正して閉曲線を描くプログラムを作成せよ。
- 例としてアルファベットあるいはひらかなのフォントの輪郭を、スムーズに接続した複数のBezier曲線で描画せよ。
課題3 多角形の走査変換プログラムを作成せよ。
- 教科書p.134を参考に凸多角形を走査変換するプログラムを作成せよ。
- 四辺形を与え、4点の色(または濃淡)を与えた際、領域内をグローのスムーズシェーデイングで塗りつぶすプログラムを作成せよ(p.156参照)。
課題4 多面体の座標変換のプログラムを作成せよ。
- 与えられた3次元座標に対して、p.105のアフィン変換を行う関数を作成せよ。
- アフィン変換の行例において、平行移動および回転を行うための行列要素を計算せよ。
- 多面体(たとえば四面体)の重心Cを求め、その点を中心にx軸に45度回転し、y軸に45度回転した後の多角形を線で描画(ワイヤーフレーム表示)せよ。なお、Cを原点としZ軸上に視点がある場合の多面体を透視投影[2]して描画せよ。
- 同様に、重心Cを中心に、y軸に45度回転し、x軸に45度回転した後の多角形を線で描画せよ。
課題5 4面体の陰影表示プログラムを作成せよ。
- 課題4と同じように重心を原点とした際、Z軸上の視点からみた4面体を陰影を付けて表示せよ
- 光源は、視点と同じ方向から平行光線とし、面は拡散反射面とせよ。
- 各頂点での明るさを計算し、多面体の構成面の内表の面を抽出し、これらの面を描画せよ。なお、多角形の描画は課題3のプログラムを利用する。
JavaやX-windowの使用方法を勉強する時間のない場合は、次の方法でもよい。
すなわち、スクリーンを想定した配列を準備し、それに輝度情報を書き込み、準備したツールで可視化する。
画像サイズは500x400程度とする。ただし、プログラムリストと結果のハードコピー(PostScript形式にしプリント)を提出すること。
この際、画像をセーブすることが必要になるが、保存の画像形式およびそのプログラムは資料を参考にして下さい。
注:プログラミングが困難な学生は相談に応じてレポート課題を提出する方法も考慮します(メイルしてください)。
参考文献(図書)
- [1] 配布資料; 中前、西田 「3次元コンピュータグラフィックス」昭晃堂 (p.63 -109 )
- [2] /~nis/CG/cgtxt/cg2/cg026.htm#cg26
- [3] 「技術編CG標準テキストブック」、 CGARTS(画像情報教育振興協会)
- 参照URL
- 締切
: 8月22日(金曜)
結果は各自のホームページに置くか、印字して事務室に提出、あるいはメイルに添付して下さい。
連絡先:email: nis@is.s.u-tokyo.ac.jp
電話:内線4106 (西田研究室)
/~nis/
西田友是
東京大学理学部 情報科学科
email: nis@is.s.u-tokyo.ac.jp