Scipy空间--计算凸包(convexHull)
程序员文章站
2022-07-12 22:19:09
...
凸包:数学上指,在实向量空间V中的一组点X的凸包或凸包络是包含X的最小凸集。通俗的来说就是包围一组散点的最小凸边形。
在scipy.spatial 中计算凸包的函数,scipy中convexHull输入的参数可以是m2的点坐标。其返回值的属性.verticess是所有凸轮廓点在散点(m2)中的索引值。
注意:属性.verticess绘制出来的轮廓点是按照逆时针排序
Scipy 计算得到的凸包见下图:
代码示例:
# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
import numpy as np
from scipy.spatial import ConvexHull
##########scipy 凸包################
points = np.random.rand(30, 2)
hull = ConvexHull(points)
plt.plot(points[:,0], points[:,1], 'o')
# hull.vertices 得到凸轮廓坐标的索引值,逆时针画
hull1=hull.vertices.tolist()#要闭合必须再回到起点[0]
hull1.append(hull1[0])
plt.plot(points[hull1,0], points[hull1,1], 'r--^',lw=2)
for i in range(len(hull1)-1):
plt.text(points[hull1[i],0], points[hull1[i],1],str(i),fontsize=20)
代码示例2:
from scipy.spatial import ConvexHull
points = np.random.rand(10, 2) # 30 random points in 2-D
hull = ConvexHull(points)
import matplotlib.pyplot as plt
plt.plot(points[:,0], points[:,1], 'o')
for simplex in hull.simplices:
plt.plot(points[simplex,0], points[simplex,1], 'k-')
plt.show()
上一篇: SciPy初学者(day one)