ソフトウェア概要
二つの三角形が重なっている部分の面積を求めます. 面積を求める方法に,モンテカルロ法とラッピング法を用意しました. ラッピング法とは,ラッピング問題を解くときに使うアルゴリズムです. 使用したのは,一番愚直なやつです.
デモ
画面の説明
左側に二つの三角形(赤と青)が表示されてます. 初期状態では,三角形は重なっていますので,適当にずらしてください. 右側には,計算方法と面積,あと計算の進行具合が表示されます.
三角形は,それぞれの頂点をドラッグすることで大きさ・形を変更することができます. 各頂点には,現在の座標が表示されています.
計算方法は,右側のCalculation Methodの部分で選択します. monte carloは,モンテカルロ法です. Wrappingは,ラッピング法です. モンテカルロ法では,緑点をたくさん打ち,三角形の内外判定をすることで面積を求めています. ラッピング法では,実際に重なっている部分の図形を構成する辺が緑色で表示されます.
三角形とその重なりの面積は,右側のareaに表示されます. Redは,赤色の三角形の面積です. Blueは,青色の三角形の面積です. Bothは,重なっている部分の三角形の面積です.
計算の進行具合は,右下のプログレスバーで表されます.
動作環境
- Flash Player 7以上がインストールされている環境
ダウンロード
swfファイル単体と,ソースコード一式を置いておいたので,欲しい方は適当にダウンロードしてください. なお,FlashMX 2004で開発しましたので,それ以外で読み込めるかどうかは分かりません.
既知のバグ
wrappingのときに,二つの三角形が微妙なずれで重なってしまうと,交差判定に失敗するときがある. 計算誤差まわりの話だとは思うんだけど,まだデバッグしきれてません.
ラッピング法を使ったとき,計算終了にもかかわらず,プログレスバーが100%にならない. そのうち直します.
注意事項
本プログラムにより発生したいかなる損害も,私は責任を負いません. swfファイルの再配布は自由とします. ソースコード一式をダウンロードし,改変した後に,公開することも自由とします. ただし,先の行為により発生したいかなる問題や損害も,私は責任を負いません.