Python에서 Convex Hull 계산 및 표시

Rohan Timalsina 2023년6월21일
Python에서 Convex Hull 계산 및 표시

볼록한 물체는 내각이 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 avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website