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角形の頂点を指定して面積と重心を計算することができます。
頂点は任意の順序で入力できますが、時計回りまたは反時計回りに一貫して入力する必要があります。




コメント