1. 程式人生 > >計算二維空間中點的集合的最小凸包

計算二維空間中點的集合的最小凸包

from scipy import spatial
import numpy as np
import matplotlib.pyplot as plt


np.random.seed(42)
points2d=np.random.rand(10,2)#一組二維平面上的隨機點
#convexHull計算包含N維空間中點的集合的最小凸包
ch2d=spatial.ConvexHull(points2d)
#繪圖
poly=plt.Polygon(points2d[ch2d.vertices],fill=None,lw=2,color='r',alpha=0.5)
ax=plt.subplot(aspect='equal')
plt.plot(points2d[:,0],points2d[:,1],'go')
for i ,pos in enumerate(points2d):
    plt.text(pos[0],pos[1],str(i),color='blue')


ax.add_artist(poly)
plt.show()

ConvexHull.simplices是凸包每條邊線的兩個頂點在二維平面上的下標

ConvexHull.vertices是凸多邊形的每個頂點在二維平面上的下標