プログラミングを習っていない学生もあるので、次のような選択課題とする。プログラミング可能な学生は、下記のプログラミング課題中から選択した2課題以上を提出する(例えば課題1、2あるいは課題3、4の組み合わせが好ましい)。また、プログラミングが困難な学生はレポート課題の全問を提出すること。
T プログラミング課題
X-Windowを用いてスクリーン上に表示するのが理想であるが、X-windowを使用方法は知らなくてもできる方法とする。すなわち、スクリーンを想定した配列を準備し、それに輝度情報を書き込み、準備したツールで可視化する。画像サイズは500x400程度とする。ただし、プログラムリストと結果のハードコピー(PostScript形式にし印字)を提出すること。
なお、インタラクテイブ性を遠隔地でも評価するにはJavaで作成すると効果的であるので、可能な人は挑戦して見てください(この場合画像サイズは300x300以下でもよい)。あるいは、出力例がカラー画像の場合、それを評価して欲しい人は、自分のホームページにおいて見れるようようにしても良い。
課題1. 2次元平面におけるn次Bezier曲線を描くプログラムを作成せよ。
課題2. 3次元空間で定義されたBezier曲面の等パラメータ線を描くプログラムを作成せよ(隠線消去は不要)。
課題3. Zバッファ法を用いた多面体の隠面消去プログラムを作成せよ。
課題4. 3次元空間で定義されたBezier曲面を分割して多角形近似し、隠面消去(課題3利用)して表示するプログラムを作成せよ。
1. 隠面消去の方法を分類し、その特徴を述べよ。
2. レイトレーシング法において、視線と凸多面体の交差判定の方法を算出せよ。また、交点での法線ベクトル、反射方向の求め方も算出せよ。なお、視点位置をPv、視線の単位ベクトルをVとする。簡単のため、凸多面体は直方体(頂点Pi,i=1,2,..,8)を例にしてよい。
3. Gouraud(グロー)のスムースシェーディングは、2頂点での輝度を線形補間する方法を組み合わせて、多角形内の任意の点での輝度を求める。この方法の場合、多角形を回転(例えば45度)すると、多角形内の同一点での輝度が変化してしまうことを数式を用いて説明せよ。
4. エリアシングが発生する原因を説明し、アンチエリアシングの方法を幾つか説明せよ。
締切: 8月12日(火曜) 学科事務室に提出(担当
安住)
連絡先:
email: nis@eml.hiroshima-u.ac.jp
電話:0849-30-2001(西田研究室直通)
http://www.eml.hiroshima-u.ac.jp/~nis
付録1:Bezier曲面の例
原点中心の半径1の球である。
球のデータはこちらです。
付録2:正8面体の例
8面体のデータはこちらです。
この例では、頂点番号は0からカウントして、面の構成頂点が記述してあるが、1番から番号つけしてもよい。
6 頂点数
0.000000 0.000000 1.000000
0.000000 1.000000 0.000000
1.000000 0.000000 0.000000
-1.000000 0.000000 0.000000
0.000000 -1.000000 0.000000
0.000000 0.000000 -1.000000
8 面数
2 1 0
4 2 0
4 0 3
0 1 3
1 2 5
2 4 5
4 3 5
5 3 1