欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Scipy空间--计算凸包(convexHull)

程序员文章站 2022-07-12 22:19:09
...

凸包:数学上指,在实向量空间V中的一组点X的凸包或凸包络是包含X的最小凸集。通俗的来说就是包围一组散点的最小凸边形

在scipy.spatial 中计算凸包的函数,scipy中convexHull输入的参数可以是m2的点坐标。其返回值的属性.verticess是所有凸轮廓点在散点(m2)中的索引值。

注意:属性.verticess绘制出来的轮廓点是按照逆时针排序

Scipy 计算得到的凸包见下图:
Scipy空间--计算凸包(convexHull)
代码示例:

# -*- 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)

Scipy空间--计算凸包(convexHull)
代码示例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空间--计算凸包(convexHull)

相关标签: Scipy scipy