■Flash:ピックの定理

 前回の「コマネチ大学数学科66講:ピックの定理」の復習。格子点を繋いで描いた多角形の面積は、ピックの定理によって「面積(S)=内包点(I)+境界点(B)÷2-1」と表すことができる。いろいろな多角形を描き、ピックの定理で面積を計算するFlashムービーを作成した。

 格子点をクリックして多角形を描く。終点を始点に結ぶと多角形の内部が塗りつぶされるので「計算」ボタンを押してほしい。

20071108_001

 格子点が多角形の内部にあるか、境界線上にあるか、人間には一目瞭然、それを数え上げれば済む話だけれど、同じことをコンピュータにわからせるのは、やっかいだ。線分交差を計算で求めるのがまっとうな方法なんだろうけれど、数学落ちこぼれ爺には無理な話。そこで、インスタンスの当たり判定を用いた。

20071108_002

 格子点のX,Y座標が描いた多角形と重なっていれば、Trueを返す。これなら面倒な数式を用いなくても判定することができる。しかし、ピクセル単位の当たり判定ができるとは言え、厳密な判定はできない。

20071108_003

 このFlashムービーでは、内部に空洞のある多角形を描くことはできないが、前エントリーで書いたとおり、「空洞多角形の面積(S)=内包点(I)+境界点(B)/2+穴の数(H)-1」で表すことができる。
20071108_004_2

20071108_005
 また、多角形の線と線が交差した場合、正しい面積を表示することができない。左図の場合、ピックの定理をそのまま、当てはめると、「面積(2.5)=内包点(0)+境界点(7)/2-1」となってしまうが、「交差する多角形の面積(S)=内包点(I)+(境界点(B)-交差点(C))/2-1」とすると正しく計算される(たぶん^^;)。

20071108_006

 上図の場合、ひとつの三角形の面積は(4)なので、合計面積は(16)だ。交差する点は3箇所あるので、「内包点(4)+(境界点(29)-交差箇所(3))/2-1=16」と計算できる。交差する箇所が格子点上になくても、この計算式で求めることができる(と思う)。

■ダウンロード(pick.zip:16KB)
pick.fla(Flash8のソース)
pick.swf(パブリッシュしたファイル)
pick.html(pick.swfを表示するhtml)