Visual情報論 課題(99年度)
下記のプログラミング課題4問中少なくとも2問を提出する。
プログラミング課題
インタラクテイブ性のあるプログラムが理想であり、それを遠隔地でも評価するには
Javaで作成すると効果的であるので、可能な人はできるだけJavaを試みて下さい(この場合画像サイズは300x300以下でもよい)。 X-Windowを用いてスクリーン上に表示する方法でもよい。この際、出力例がカラー画像の場合、それを評価して欲しい人は、自分のホームページに画像を置いて見れるようにしても良い。
課題1
多角形の走査変換(塗りつぶし)のプログラムを作成せよ。
- 走査変換は教科書[1]を参照のこと。走査線と多角形との交点計算は増分法を使用する。
- 多角形内の色は次の2種とする。1)同一色,2)各頂点の色(輝度)を与え内部は線形補間する(補間にはスムーズシェーディング法を使用し、その方法は教科書[1]を参照のこと)。
- n多角形とし(nは4以上)、会話的に頂点はマウスで入力するかファイルから読むこととする。時間が無い人は、凸多角形に限ってもよい。
- 余裕のある人は、仮想的な矩形ウインドウを想定し、ウインドウの外部をクリップした後に走査変換してもよい。
課題2.
優先順位法を用いた多面体の隠面消去プログラムを作成せよ。
- 多面体を複数準備し、多面体を遠い順に優先順位を算出し(Zソート)、課題1.の走査変換を利用して、遠方の多面体に属す面から順に塗りつぶす。この際、裏の面は除外する。
- 基本的には次の手順である。
1)透視変換、2)裏面除去、3)多面体の優先順位、4)面の輝度計算、5)各面の走査変換
- 多面体のデータ(頂点の座標、面の構成頂点)は、基本的にはファイルから読むものとするがプログラム中に記述するのでもいい。
- 透視変換は教科書[1]を参照のこと。平行投影にしてもよい。
- 面の明るさは、光源は平行光線に対する輝度を算出せよ。
課題3 閉曲線の走査変換プログラムを作成せよ。
- 曲線を組み合わせて閉曲線を作成し、その内部を走査変換せよ。例えば3次のBezier曲線を用いて閉曲線を作成する。(この際、曲線がスムースに接続されるためには、制御多角形同士が同一直線になること)。
- 走査線を上から下へと移動させ、走査線と曲線との交点を算出し、交点間を結ぶ。
- 交点の計算は3次Bezier曲線の場合、3次式を解くようなので、ニュートン法を使用して解け(厳密には3次式も解析解はある)。
- 例えばアウトラインフォントを例にするのも興味深い。シンプルな例の場合、4つのBezier曲線を組み合わせた円でもよい。さらに簡単化したい人は2次Bezier曲線でもいい(この場合は解析的に交点が計算できる)。
課題4
Raytracing法は透過・屈折が表現できる方法である。屈折率に違いによる見え方をシミュレートするRaytracingプログラムを作成せよ。
- 簡単な例として、球(または楕円体)が一つで、背景として室内(5面または1面)を考え、球の屈折率を変化させた場合の背景の見え方を表示せよ。
透過率は、空気、ガラス、ダイアモンドなどを想定せよ。
Java
やX-windowを使用方法を勉強する時間のない場合は、次の方法でもよい。すなわち、スクリーンを想定した配列を準備し、それに輝度情報を書き込み、準備したツールで可視化する。画像サイズは500x400程度とする。ただし、プログラムリストと結果のハードコピー(PostScript形式にし印字)を提出すること。この際、画像をセーブすることが必要になるが、保存の画像形式およびそのプログラムは添付資料を参考にして下さい。
注:プログラミングが困難な学生は相談に応じてレポート課題を提出する方法も考慮します。
参考文献(図書)
- [1] 中前、西田 「3次元コンピュータグラフックス」昭晃堂
- 参照URL
CG関連図書: /~nis/junk/cg_books.html
参考:
Webでの課題公開
/~nis/junk/VisualProj99.html
-
- 締切
: 8月17日(火曜)
結果は各自のホームページに置くか、印字して事務室に提出、あるいはメイルに添付して下さい。
連絡先: email: nis@is.s.u-tokyo.ac.jp
電話:内線4106 (西田研究室)
/~nis/
- [
home]
西田友是
東京大学理学部 情報科学科
email: nis@is.s.u-tokyo.ac.jp