Python で凸包を計算して表示する
Rohan Timalsina
2023年6月21日
凸オブジェクトは、180 度を超える内角を持たないオブジェクトです。 ハルはオブジェクトの外側の部分です。
したがって、凸包は、凸オブジェクトの形状の周囲の境界を意味します。 このチュートリアルでは、Python でランダムなポイント セットの凸包を計算して表示する方法を説明します。
Python で凸包を計算して表示する
ポイントのセットの凸包は、セット内のすべてのポイントで構成される最小の凸多角形の境界です。
点集合の凸包の例を見てみましょう。
これらの点を考えると:
凸包は次のとおりです。
以下は、Python でランダムな点の凸包を表示する簡単な実装です。
必要なモジュールのインポート:
from scipy.spatial import ConvexHull
import matplotlib.pyplot as plt
import numpy as np
2 次元でランダムな点を使用する:
points = np.random.randint(0, 10, size=(15, 2))
凸包の場合、次のようになります。
hull = ConvexHull(points)
それでは、点と凸包をプロットしましょう。
fig, (ax1, ax2) = plt.subplots(ncols=2, figsize=(10, 3))
for ax in (ax1, ax2):
ax.plot(points[:, 0], points[:, 1], ".", color="k")
if ax == ax1:
ax.set_title("Given points")
else:
ax.set_title("Convex hull")
for simplex in hull.simplices:
ax.plot(points[simplex, 0], points[simplex, 1], "c")
ax.plot(
points[hull.vertices, 0],
points[hull.vertices, 1],
"o",
mec="r",
color="none",
lw=1,
markersize=10,
)
ax.set_xticks(range(10))
ax.set_yticks(range(10))
plt.show()
出力:
これで、ランダムな点のセットを生成し、Python で凸包を表示する方法を理解できたはずです。 このチュートリアルがお役に立てば幸いです。
著者: Rohan Timalsina