PythonとShapelyを使用した正N角形の頂点計算

GISでよく使う数学

 

 

PythonとShapelyを使用した正N角形の頂点計算

この記事では、PythonのShapelyライブラリを使用して、指定された一辺の長さと辺数(N)に基づいて正N角形の頂点を計算し、描画する方法を紹介します。

手順

以下は、コードの実装手順の概要です。

  • ユーザーが一辺の長さと正N角形の辺数を入力します。
  • その情報を基に、正N角形の外接円の半径を計算します。
  • Shapelyを使用して、各頂点の座標を計算し、多角形を作成します。
  • Matplotlibを使用して、正N角形を描画します。

Pythonコード


import math
from shapely.geometry import Polygon
import matplotlib.pyplot as plt

 

def regular_polygon_with_side_length(n, side_length):
# 一辺の長さと辺の数 n を使って正 n 角形の頂点座標を計算する
radius = side_length / (2 * math.sin(math.pi / n)) # 半径を計算

# 頂点の座標を計算
vertices = []
for i in range(n):
angle = 2 * math.pi * i / n # 各頂点の角度を計算
x = radius * math.cos(angle) # x座標
y = radius * math.sin(angle) # y座標
vertices.append((x, y))
return vertices, radius

# ユーザーからの入力
n = int(input(“正多角形の辺数を入力してください(例: 5):”))
side_length = float(input(“一辺の長さを入力してください(例: 3.0):”))

# 頂点を計算
polygon_coords, radius = regular_polygon_with_side_length(n, side_length)

# ShapelyのPolygonクラスを使用してN角形を作成
polygon = Polygon(polygon_coords)

# 正N角形の情報を表示
print(f”正{n}角形の面積: {polygon.area}”)
print(f”正{n}角形の周囲長: {polygon.length}”)
print(f”外接円の半径: {radius}”)
print(f”頂点座標: {polygon_coords}”)

# Matplotlibを使ってN角形を描画
x, y = polygon.exterior.xy

plt.plot(x, y)
plt.fill(x, y, alpha=0.5, fc=’lightblue’, ec=’black’)
plt.gca().set_aspect(‘equal’) # アスペクト比を正方形にする
plt.title(f’一辺の長さ{side_length}の正{n}角形’)
plt.show()

実行結果

  • ユーザーが指定した正N角形の一辺の長さと辺数に基づいて、正N角形が描画されます。
  • 外接円の半径、面積、周囲長が計算され、表示されます。

結論

このコードを使用することで、Pythonを使って任意の正多角形を簡単に描画し、その特性を分析することができます。ShapelyとMatplotlibは、ジオメトリ操作やデータの視覚化に非常に便利なライブラリです。

 

コメント

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