座標から多角形の面積を求める方法(靴ひも公式)

頂点の座標を順に並べて、多角形の面積を靴ひも公式で求めます。三角形に切り分けなくても、隣り合う頂点どうしの掛け算を足し引きするだけで面積が出ます。周の長さもあわせて出します。

多角形の面積を求めるとき、三角形に切り分けて足していくのがふつうのやり方です。しかし頂点の座標が分かっていれば、切り分けなくても一度に求められます。それが靴ひも公式です。

S=12i=1n(xiyi+1xi+1yi)S = \dfrac{1}{2}\left| \sum_{i=1}^{n} (x_i y_{i+1} - x_{i+1} y_i) \right|

iinn のときの「次の頂点」は最初の頂点に戻ります。多角形は閉じているので、最後の頂点と最初の頂点を結ぶ辺も 1 辺として数えます。ですから、最初の点を最後にもう一度書き足す必要はありません。

靴ひもという名前は、計算のしかたの見た目から来ています。x と y を 2 列に並べて書き、斜めに掛け合わせて足し引きすると、線が交差して靴ひもを通したように見えます。

なぜこれで面積になるのか

和のひとつひとつの項は、原点とその辺の両端が作る三角形の面積の 2 倍にあたります。ただし符号つきです。原点から見て反時計回りに見える辺は正、時計回りに見える辺は負になります。

多角形を一周すると、はみ出して数えた部分は、逆向きの辺のところで必ず引かれます。差し引きが済んで、残るのは多角形の内側だけになります。原点が多角形の外にあっても内にあっても、この打ち消し合いは同じように働きます。

頂点を時計回りに並べると和は負になりますが、面積に向きは関係ないので絶対値を取ります。

既定の入力は 5 つの頂点 (0, 0)、(4, 0)、(6, 3)、(3, 5)、(0, 3) です。

項を順に計算すると、0×04×0=00 \times 0 - 4 \times 0 = 04×36×0=124 \times 3 - 6 \times 0 = 126×53×3=216 \times 5 - 3 \times 3 = 213×30×5=93 \times 3 - 0 \times 5 = 90×00×3=00 \times 0 - 0 \times 3 = 0 となります。

足すと 42 ですから、面積はその半分で 21 です。周の長さはおよそ 17.8167 になります。

注意

頂点は多角形の辺をたどる順に並べてください。順番を入れ替えると別の形になり、答えも変わります。

自分自身と交差する多角形では、正しい面積になりません。8 の字のような形では、交差した先の部分が逆向きに数えられて打ち消し合ってしまいます。

測量や地図から土地の面積を出すのに使われる公式です。三角形に分ける手間がなく、座標さえあれば頂点がいくつあっても同じ手順で済みます。