用Python计算和显示凸面体

凸形物体是指没有内角大于180度的物体。壳是物体的外部部分。

因此,凸面壳意味着凸面物体形状周围的边界。本教程将教你在Python中计算和显示一组随机点的凸面壳。

在Python中计算和显示凸面体

一组点的凸面体是由一组中的所有点组成的最小的凸面多边形的边界。

让我们看一个点集的凸壳的例子。

给出这些点:

用Python计算和显示凸面体

凸壳是:

用Python计算和显示凸面体

下面是一个在Python中显示随机点的凸壳的简单实现。

导入所需的模块:

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

在二维中使用随机点:

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计算和显示凸面体

现在你应该知道在Python中生成一组随机点并显示一个凸面体。我们希望这个教程对你有帮助。