SciPy - 空间

  • 简述

    scipy.spatial package可以计算一组点的三角剖分、Voronoi 图和凸包,通过利用Qhull library. 此外,它还包含KDTree implementations用于最近邻点查询和各种度量中距离计算的实用程序。
  • Delaunay 三角剖分

    让我们了解什么是 Delaunay 三角剖分以及它们如何在 SciPy 中使用。

    什么是德劳内三角剖分?

    在数学和计算几何中,给定集合的 Delaunay 三角剖分P平面上的离散点是三角剖分DT(P)这样没有意义P在 DT(P) 中任意三角形的外接圆内。
    我们可以通过 SciPy 进行同样的计算。让我们考虑下面的例子。
    
    from scipy.spatial import Delaunay
    points = np.array([[0, 4], [2, 1.1], [1, 3], [1, 2]])
    tri = Delaunay(points)
    import matplotlib.pyplot as plt
    plt.triplot(points[:,0], points[:,1], tri.simplices.copy())
    plt.plot(points[:,0], points[:,1], 'o')
    plt.show()
    
    上述程序将生成以下输出。
    德劳内三角剖分
  • 共面点

    让我们了解什么是共面点以及它们在 SciPy 中的使用方式。

    什么是共面点?

    共面点是位于同一平面上的三个或更多点。回想一下,平面是一个平面,它向所有方向无限延伸。它通常在数学教科书中显示为一个四边形的图形。
    让我们看看如何使用 SciPy 找到它。让我们考虑下面的例子。
    
    from scipy.spatial import Delaunay
    points = np.array([[0, 0], [0, 1], [1, 0], [1, 1], [1, 1]])
    tri = Delaunay(points)
    print tri.coplanar
    
    上述程序将生成以下输出。
    
    array([[4, 0, 3]], dtype = int32)
    
    这意味着点 4 位于三角形 0 和顶点 3 附近,但不包括在三角剖分中。
  • 凸壳

    让我们了解什么是凸包以及它们在 SciPy 中的使用方式。

    什么是凸壳?

    在数学中,convex hull要么convex envelope在欧几里得平面或欧几里得空间(或更一般地,在实数上的仿射空间)中的一组点 X 是最小的convex set包含 X。
    让我们考虑下面的例子来详细理解它。
    
    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()
    
    上述程序将生成以下输出。
    凸壳