練習課題
練習問題を行なうに当たっては、マウスの機能の有無、背景や線の色の変更、画面サイズの変更、見る方向の変更などを試みて、下記のように自分なりのプログラムに修正して下さい。
- Bresenhamの直線描画:
- ファイルで描画する2端点の座標を指定できるように変更してみる。
- 乱数を使用して2端点の座標を生成し、複数の線分をスクリーン中に描画する。なお、生成した端点の座標がスクリーン内になるように制限すること。
- ガスケットの描画;
- マウスで画面をクリックするごと複雑な図形になるようにする。すなわちレベルnをマウスクリックで1づつ増加するように変更する。
- 再帰のレベレ毎に色を変更する。
- 一価関数曲面の表示:
- 関数を変更する。
- 見る方向をHTMLファイルで指定できるようにする、あるいは曲面の裏側の色を変更する。
- 現在はZ成分(すなわちz軸に垂直な平面での曲面の断面曲線)を変化(等間隔で移動)させて描画しているが、x成分を変更して描画するように変更。
プログラミング課題
インタラクテイブ性のあるプログラムが理想であり、それを遠隔地でも評価するにはJavaで作成すると効果的であるの
で、可能な人はできるだけJavaを試みて下さい(この場合画像サイズは300x300以下でもよい)。 OpenGLあるいはX-Windowを用い
てスクリーン上に表示する方法でもよい。この際、出力例がカラー画像の場合、それを評価して欲しい人は、自分のホ
ームページに画像を置いて見れるようにしても良い。
課題1. 線分の4辺形ウインドウによるのクリッピングプログラムを作成せよ
課題2. Scan Conversionの方法で線分を描画するプログラムを作成せよ。
- 資料[1]p.309参照
- この方法はBrsenham の方法よりは効率が悪いが簡単である。
レポート :プログラミングがどうしても困難な場合は下記のレポート提出のこと。
- 隠面消去の方法を分類し、それらの特徴を述べよ。
- 資料[3]を読んで、リアルな画像をえるための技術をまとめよ。
参考
- Java の場合;
- C言語の場合;
これらの課題において、画像をセーブすることが必要になるが、保存の画像形式およびそのプログラムは下記を参考にして下さい。
/~nis/junk/ppm.html
- 参考資料
- [1] E. Angle, "Implementation of a Renderer," Interactive Computer Graphics, Addison Wesley, p.281-321
- [2] java文法および例題の説明
- [3] フォトリアリステックレンダリングの最新技術
締切: 8月19日(月曜)17時まで
各自のホームページに置いてメイル連絡するか、ファイルを添付してメイルする。
連絡先: email: nis@is.s.u-tokyo.ac.jp
/~nis/
本課題の公開URL:
/~nis/lecture/ShuRep02.html
例題解説
・ 例題1:ブレゼンハムの直線描画
(マウスで2端点指定,増分法)
プログラム例
Applet例,
(簡略版; プログラム例1
Applet例1)
/~nis/javaexampl/javtool/Bresen.html
・ 例題2:シルビンスキーのギャスケット
(自己相似、再帰法)
プログラム例,
Applet例
・ 例題3:3Dデータのワイヤーフレームモデルの表示
(データ構造、透視変換)
プログラム例
Applet例
・ 例題4:一価関数の隠線表示
プログラム例,
Applet例
/~nis/javaexampl/curve/hidfunc.htm
・例題実習
(参考; JavaGraphics基本例;
プログラム例1,
Applet例
,
プログラム例2,
Applet例
)