総合科目
例題の実習およびプログラミング課題
情報科学科 西田 友是
プログラム実習
(総合科目)
練習問題を行なうに当たっては、マウスの機能の有無、背景や線の色の変更、画面サイズの変更、見る方向の変更などを試みて、下記のように自分なりのプログラムに修正して下さい。
- Bresenham
の直線描画:
・HTMLファイルで描画する2端点の座標を指定できるように変更してみる。
・乱数を使用して2端点の座標を生成し、複数の線分をスクリーン中に描画する。
なお、生成した端点の座標がスクリーン内になるように制限すること。
コッホ曲線の描画;
- マウスで画面をクリックするごと複雑な図形になるようにする。
すなわちレベルnをマウスクリックで1づつ増加するように変更する。
- 再帰のレベレ毎に色を変更する。
一価関数曲面の表示:
- 関数を変更する。
- 見る方向をHTML
ファイルで指定できるようにする、あるいは曲面の裏側の色を変更する。
- 現在はZ成分(すなわちz軸に垂直な平面での曲面の断面曲線)を変化(等間隔で移動)させて描画しているが、x成分を変更して描画するように変更。
多面体のワイヤーフレーム表示
- 立方体のデータを直方体に変更する(プログラム中の頂点データの値を変更)。
- データの表示倍率を変更する。
プログラミング課題
下記課題のプログラミングを行ないなさい。ただし、課題2と3はどちらかを選択してよい。なお、課題2,3以外で3次元CGの適当なプログラムを作成するのでもよい。
1.コッホの曲線を幾つか組み合わすことにより、雪の結晶のような形状を作成せよ(下図はレベル5)。
ヒント;
オリジナルのコッホ曲線を数回回転すれば生成できる(すなわち、レベレ0の時正n角形)。関数paintのみを変更すれば実現できる。
2.一価関数の隠線消去のプログラムにおいて、次の条件を満たすように改良せよ。
- 例題の一価関数は見る方向が限られている。どの方向から見てもエラーなく表示されるように改良せよ。
- 2こぶが生じるような曲面形状となるように適当な関数を用いて表示せよ。
- 標高により線の色を変更して表示せよ(2または3段階程度)。
3)
ヒント:
・視点位置により、描かせる曲線の順番を変更できるようにする(視点に近い順に曲線を描画すれ
ばよい)。
・正規分布(ガウス分布)を表現する関数を中心位置をずらせて重ねればよい。
・標高がある値より大きい場合は線の色を変更すればよい。山岳の上部に積雪がある場合を想定すればよい。
3.多面体のワイヤーフレーム表示において、次の条件を満たすように改良せよ。
- 練習問題では、面と頂点がクラスとして定義してあるが、立方体も新たにクラスとして定義し、複数の立方体を生成して表示しなさい。
- 基本的にはコピーして平行移動することにより複数とするが、一つ一つはサイズ(x、y、zの倍率が異なる)や方向(回転)が異なること(物体ごと色を変えても良い)。
- 多面体を描画する際に辺の2度描きを避けるように改良せよ。
ヒント;
- 物体のクラスを定義し、その配列を準備することで複数処理が可能とする。
- 物体のクラスに、x、y、z方向のサイズ変更、移動、回転のメソッドを準備する(CG入門の配布資料中の座標変換を参考)。
- 2度描きを避ける簡単な方法は、辺の2端点の頂点番号の値(大小)のみで判定する方法がある。
提出方法;下記にソースプログラムとHTMLファイルを添付してメイルする。
nis@is.s.u-tokyo.ac.jp
アプレットの実行状況を評価し易くするため、各自のディレクトリに実行可能なファイルを置いてくれることを歓迎する。この際、他人が読めるようにファイルの属性を変更しておき、そのファイル名も連絡すること。
締め切り: 平成11年 7月27日19時