PythonでN角形の面積と重心を求める方法

GISでよく使う数学

 

 

PythonでN角形の面積と重心を求める方法

面積・重心計算は、 下記の多角形の面積と重心を求める計算式を利用しています。

多角形 図形 面積 重心
面積
多角形 面積 重心
重心の座標
多角形 面積 重心

多角形の面積と重心を求める式

上記の図に示されているように、N角形の頂点座標を利用して面積と重心を計算します。
この方法は、三角形に分割した面積の合計と、それに基づく重心の座標を使用します。

Pythonコードによる実装

上記の数式をPythonで実装することで、N角形の頂点座標を入力し、面積と重心を計算することができます。

# 必要なライブラリをインポート
import numpy as np

# N角形の面積と重心を計算する関数
def calculate_polygon_area_centroid(vertices):
    # 頂点の数
    n = len(vertices)

    # 面積の初期化
    area = 0.0

    # 重心座標の初期化
    centroid_x = 0.0
    centroid_y = 0.0

    # 面積と重心計算に必要なループ
    for i in range(n):
        # 現在の頂点
        x_i, y_i = vertices[i]
        
        # 次の頂点(最後の頂点の場合は最初の頂点に戻る)
        x_next, y_next = vertices[(i + 1) % n]
        
        # 三角形分割による面積計算のための共通部分
        cross_product = (x_i * y_next) - (x_next * y_i)
        
        # 面積に加算
        area += cross_product
        
        # 重心のX座標の計算
        centroid_x += (x_i + x_next) * cross_product
        
        # 重心のY座標の計算
        centroid_y += (y_i + y_next) * cross_product

    # 面積を最終的に2で割る
    area = area / 2.0

    # 重心の座標を面積で割って計算
    centroid_x = centroid_x / (6.0 * area)
    centroid_y = centroid_y / (6.0 * area)

    return abs(area), (centroid_x, centroid_y)

# 頂点の入力例(例として六角形)
vertices = [(1, 1), (4, 1), (6, 3), (4, 5), (1, 5), (-1, 3)]

# 面積と重心を計算
area, centroid = calculate_polygon_area_centroid(vertices)

# 結果を表示
print(f"面積: {area}")
print(f"重心: {centroid}")

統合された効率的なデータ管理

このコードを実行すると、N角形の頂点を指定して面積と重心を計算することができます。
頂点は任意の順序で入力できますが、時計回りまたは反時計回りに一貫して入力する必要があります。

この記事を通じて、Pythonを使ってN角形の面積と重心を効率的に計算する方法を学びました。
この技術は、さまざまな応用に役立ちます。

 

コメント

タイトルとURLをコピーしました