H5W3
当前位置:H5W3 > 其他技术问题 > 正文

SciPy spatial模块:实现三角剖分

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

  • Delaunay三角剖分

在数学和计算几何中, Delaunay三角剖分定义了三角形中的三个点在这些顶点接触圆的路径时会创建一个顶点。

圆的中心由三个点或三角形的半径确定。让我们考虑以下示例:

from scipy.spatial import Delaunay
import numpy as np
import matplotlib.pyplot as plt
points = np.array([[0, 3], [1, 1.1], [1, 4], [1, 2]])
triang = Delaunay(points)
plt.triplot(points[:, 0], points[:, 1], triang.simplices.copy())
plt.plot(points[:, 0], points[:, 1], 'o')
plt.show()

输出

SciPy spatial模块:实现三角剖分

共平面点

共面点是指同一平面上存在三个以上的点。该平面是平坦的表面, 可以在所有方向上无止境地扩展。让我们考虑以下示例:

from scipy.spatial import Delaunay
points = np.array([[0, 0], [0, 1], [1, 0], [1, 1], [1, 1]])
tri = Delaunay(points)
print(tri.coplanar)

输出

[[4 0 3]]

在上面的输出中, 三角剖分不包括点4;它存在于三角形0和顶点3附近。

凸包

在数学中, 欧几里得平面或欧几里得空间中的一组点X的凸包或凸包络。它是包含X的最小凸集。让我们考虑以下示例:

from scipy.spatial import ConvexHull
import matplotlib.pyplot as plt
points = np.random.rand(10, 2) # 30 random points in 2-D
hull = ConvexHull(points)
plt.plot(points[:, 0], points[:, 1], 'o')
for simplex in hull.simplices:
    plt.plot(points[simplex, 0], points[simplex, 1], 'k-')
plt.show()

输出

SciPy spatial模块:实现三角剖分

Scipy cdist

SciPy提供了space.distance.cdist, 用于计算两个输入集合中的每对之间的距离。以下是调用约定:

1. Y = cdist(XA, XB, ‘欧几里得’)

它使用欧几里得距离(2-范数)作为点之间的距离度量来计算m个点之间的距离。这些点在矩阵X中组织为m个n维行向量。

2. Y = cdist(XA, XB, ‘minkowski’, p = 2。)

它使用Minkowski距离|| u?v || p(p范数)计算距离, 其中p?1。

3. Y = cdist(XA, XB, ” cityblock”)

它计算点之间的城市街区或曼哈顿距离。

本文地址:H5W3 » SciPy spatial模块:实现三角剖分

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址