📜  SciPy-空间

📅  最后修改于: 2020-11-05 04:36:50             🧑  作者: Mango


scipy.spatial软件包可以利用Qhull库来计算一组点的三角剖分,Voronoi图和凸包。此外,它包含用于最近邻点查询的KDTree实现以及用于各种度量中距离计算的实用程序。

Delaunay三角剖分

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

什么是Delaunay三角剖分?

在数学和计算几何形状,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()

上面的程序将生成以下输出。

Delaunay三角剖分

共面点

让我们了解什么是共面点以及它们如何在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中使用它们。

什么是凸包?

在数学中,在欧几里得平面或欧几里得空间(或更普遍地,在实数上的仿射空间)中的一组点X的凸包凸包络是包含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()

上面的程序将生成以下输出。

凸包