概要

多角形の面積を計算する。

多角形の面積を求める公式が存在し、\(N\)個の点\(\mathbf{p_i} = (x_i, y_i)\)から成る多角形の面積\(S\)は以下の式で計算できる。

\(\displaystyle S = \frac{1}{2} \left| \sum_{k=1}^n \mathbf{p_k} \times \mathbf{p_{k+1}} \right| = \frac{1}{2} \left| \sum_{k=1}^n x_k y_{k+1} - x_{k+1} y_k \right|\)

ただし \(\mathbf{p_{n+1}} = \mathbf{p_1}\)

実装

def polygon_area(N, P):
    return abs(sum(P[i][0]*P[i-1][1] - P[i][1]*P[i-1][0] for i in range(N))) / 2.

print(polygon_area(3, [(0, 0), (3, 1), (2, 5)]))
# => "6.5"

Verified

  • AOJ: "CGL_3_A: Polygon - Area": source (Python2, 0.01sec)

  • AOJ: "1100: Area of Polygon": source (Python3, 0.03sec)

参考