2010年10月2日土曜日

その点は囲まれたか?

フリーハンドで描かれた線で囲まれた中に、ある点が含まれるかどうか?それをチェックする方法を実装してみた。

いろいろ調べてみたところ、その点から360度を眺めてみたとき、どの方向にも線が見えたら「囲まれている」というアイデアに感銘を受けたので、それで実装してみた。ActionScriptだったら、囲まれた範囲を塗りつぶして、その図形と点とが交差するかどうか、hitTestするなんてこともできるが、あえてそれは避けてみた。

線上、頂点上に調べたい点がある場合、その点は含まれてないと判定されるようにしてみた。つまり、接しているのではなく「囲まれていること」とした。ただし、きっちり閉じた図形で囲む必要はないように実装している。

マウスの右ボタンを押しながらマウスを動かすと線が描けるようになっている。そうして描いた線で、虫を囲んでほしい。「囲まれた」と判断されると、他の場所に新たな虫が現れる。