Radiosity法の課題

概要

 このJavaアプレットは、1998年度の「情報科学特論IV」課題1を実現したものです。

 このJavaプログラムは、JDK1.1に完全準拠していますので、Netscape 4.5以上・Internet Explorer 4以上でないと正常に動作しません。御了承下さい。


画面の説明

 上の黒い画面に部屋のレイアウトが表示されます。それぞれの色は以下の通りです。

赤色
障害物
黄色
光源
白色
ドア
シアン

 下の黒い画面には、上の画面に表示されている部屋の、下の壁の輝度を棒グラフ化したものです。棒が長いほど、それに対応する壁の輝度が高い(明るい)ことを意味します。また、棒の色は、輝度が高い程、白く表示されます。

操作方法

向きの回転

 前節で説明したように、グラフに表れている輝度は、表示されている部屋の下の壁の輝度を表しています。「回転」ボタンを押すことによって、部屋の他の壁の輝度のグラフを見ることができます。

部屋のレイアウト変更

 部屋のレイアウトは、「レイアウトファイル」を変更することによって行います。現在は以下の3通りしかありませんが、機能的には、このページと同じディレクトリに、レイアウトファイルを追加することによって、他のレイアウトを試すことができます(いまのところ、追加する予定はありません。)。選択できるファイルの反射率は、以下の通りです。なお、「---」は、存在しないことを表します。

ファイル名 上の壁左の壁右の壁下の壁 ドア光源障害物
sample1.txt 0.90.90.90.9 0.50.00.8
sample2.txt 0.90.90.90.9 0.50.0---
sample3.txt 0.90.80.70.6 0.90.10.1
sample2.txtは、sample1.txtと全く同じですが、障害物が無いものです。sample3.txtは、他の2つとは違うレイアウトになっており、反射率も、壁ごとに違う設定にしてあります。

注意

プログラムソース

JDK-1.1に準拠したJavaプログラムです。クラス名と説明は以下の通 り。

RadioSity.java メインのクラス。
DummyFrame.java エラーメッセージのダイアログボックスを表示するクラス
GivenData.java レイアウトファイルをHTTPで読み込むクラス
IllegalFormatException.java レイアウトファイルのフォーマットがおかしい時に投げられる例外クラス
ControlPanel.java ボタンなどのUI部品を配置するクラス
FormFactor.java フォームファクターを計算するクラス
Room.java 部屋のレイアウトを表示するクラス
RoomElement.java 部屋のエレメントに関する各種情報を保持するクラス
LinearSystem.java 連立一次方程式を解くクラス
LightSource.java 光源の情報を保持するクラス
RoomObstacle.java 障害物の情報を保持するクラス
RoomWindow.java ドア(Windowとかいてあるが、上の説明では「ドア」と言っています)に関する情報を保持するクラス


TOYAMA Sumio <sumio@is.s.u-tokyo.ac.jp>