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は、ジオメトリ操作やデータの視覚化に非常に便利なライブラリです。


コメント