プログラム実習(総合科目)

2000 6/27

情報科学科 西田 友是


練習問題を行なうに当たっては、マウスの機能の有無、背景や線の色の変更、画面サイズの変更、見る方向の変更などを試みて、下記のように自分なりのプログラムに修正して下さい。

  1. Bresenhamの直線描画:
  2. HTMLファイルで描画する2端点の座標を指定できるように変更してみる。

    ・乱数を使用して2端点の座標を生成し、複数の線分をスクリーン中に描画する。なお、生成した端点の座標がスクリーン内になるように制限すること。

  3. ガスケットの描画;
  1. 一価関数曲面の表示:
  1. 多面体のワイヤーフレーム表示

 


プログラミング課題

下記課題のプログラミングを行ないなさい。ただし、課題2と3はどちらかを選択してよい。なお、課題2,3以外で3次元CGの適当なプログラムを作成するのでもよい。

1.ガスケットの描画において、例では線画で描かれるが、3角形内を色を付けて塗りつぶすように変更せよ。 ただし、分割後の中央の3角形ではなく、3隅の3角形を塗りつぶす(例えば赤色で)ものとする。

ヒント;

・オリジナルでは、中央の3角形を再帰的に描画する形式なので、このままdrawPolygonfillPolygonにするのみでは実現できない。

2.一価関数の隠線消去のプログラムにおいて、次の条件を満たすように改良せよ。

  1. 例題の一価関数は見る方向が限られている。どの方向から見てもエラーなく表示されるように改良せよ。
  2. 2こぶが生じるような曲面形状となるように適当な関数を用いて表示せよ。

3) 標高により線の色を変更して表示せよ(2または3段階程度)。

ヒント:

・視点位置により、描かせる曲線の順番を変更できるようにする(視点に近い順に曲線を描画すれ

ばよい)。

・正規分布(ガウス分布)を表現する関数を中心位置をずらせて重ねればよい。

・標高がある値より大きい場合は線の色を変更すればよい。山岳の上部に積雪がある場合を想定すればよい。

3.多面体のワイヤーフレーム表示において、次の条件を満たすように改良せよ。

  1. 練習問題では、面と頂点がクラスとして定義してあるが、立方体も新たにクラスとして定義し、複数の立方体を生成して表示しなさい。
  2. 基本的にはコピーして平行移動することにより複数とするが、一つ一つはサイズ(x、y、zの倍率が異なる)や方向(回転)が異なること(物体ごと色を変えても良い)。

3)多面体を描画する際に辺の2度描きを避けるように改良せよ。

ヒント;

提出方法;下記にソースプログラムとHTMLファイルを添付してメイルする。

nis@is.s.u-tokyo.ac.jp

アプレットの実行状況を評価し易くするため、各自のディレクトリに実行可能なファイルを置いてくれることを歓迎する。また、プログラムの修正点等を説明する文も付けること。この際、他人が読めるようにファイルの属性を変更しておき、そのファイル名も連絡すること。

締め切り 平成12 8月2日19時

 

 


 

前回配布資料の訂正

1) 下記ディレクトリからJavaソースおよびHTMLファイルをコピーして練習して下さい。

ecc ~knis1482/sougou/source/

 

Java ソース

HTML

Bresenhamの直線描画

BresenS.javaBresen.java

BresenS.html, Bresen.html

ガスケットの表示

gasket.java

gasket.html

一価関数曲面の表示

hidfunc.java

hidfunc.html

多面体のワイヤーフレーム表示

wire.java

wire.html

また、練習課題に関する最新情報は ~knis1482/index.html をブラウザーで起動して参考にして下さい。