Python에서 Convex Hull 계산 및 표시
Rohan Timalsina
2023년6월21일
볼록한 물체는 내각이 180도보다 크지 않은 물체입니다. 헐은 물체의 외부 부분입니다.
따라서 Convex Hull은 볼록한 물체의 모양 주위의 경계를 의미합니다. 이 튜토리얼은 Python에서 임의의 점 집합의 Convex Hull을 계산하고 표시하는 방법을 알려줍니다.
Python에서 Convex Hull 계산 및 표시
점 집합의 볼록 선체는 집합의 모든 점으로 구성된 가장 작은 볼록 다각형의 경계입니다.
점 집합의 볼록 선체의 예를 살펴보겠습니다.
다음과 같은 점을 감안할 때:
볼록 선체는 다음과 같습니다.
다음은 파이썬에서 무작위 포인트의 볼록 선체를 표시하는 간단한 구현입니다.
필요한 모듈 가져오기:
from scipy.spatial import ConvexHull
import matplotlib.pyplot as plt
import numpy as np
2D에서 임의의 점 사용:
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