本文简要介绍 python 语言中 scipy.spatial.Delaunay
的用法。
用法:
class scipy.spatial.Delaunay(points, furthest_site=False, incremental=False, qhull_options=None)#
N 维的 Delaunay 细分。
- points: 浮点数数组,形状(npoints,ndim)
要进行三角剖分的点坐标
- furthest_site: 布尔型,可选
是否计算furthest-site Delaunay 三角剖分。默认值:假
- incremental: 布尔型,可选
允许增量添加新点。这会占用一些额外的资源。
- qhull_options: str,可选
传递给 Qhull 的其他选项。有关详细信息,请参阅 Qhull 手册。选项“Qt” 始终启用。默认值:ndim > 4 时为“Qbb Qc Qz Qx Q12”,否则为“Qbb Qc Qz Q12”。增量模式省略“Qz”。
- QhullError
当 Qhull 遇到错误条件时引发,例如在未启用解决选项时出现几何退化。
- ValueError
如果将不兼容的数组作为输入给出,则引发。
参数 ::
抛出 ::
注意:
使用 Qhull 库 Qhull library 计算曲面细分。
注意
除非您传入 Qhull 选项 “QJ”,否则 Qhull 不保证每个输入点在 Delaunay 三角剖分中都显示为一个顶点。省略的点列在共面属性中。
例子:
一组点的三角剖分:
>>> import numpy as np >>> points = np.array([[0, 0], [0, 1.1], [1, 0], [1, 1]]) >>> from scipy.spatial import Delaunay >>> tri = Delaunay(points)
我们可以绘制它:
>>> import matplotlib.pyplot as plt >>> plt.triplot(points[:,0], points[:,1], tri.simplices) >>> plt.plot(points[:,0], points[:,1], 'o') >>> plt.show()
形成三角剖分的两个三角形的点索引和坐标:
>>> tri.simplices array([[2, 3, 0], # may vary [3, 1, 0]], dtype=int32)
请注意,根据舍入误差的方式,单纯形的顺序可能与上述不同。
>>> points[tri.simplices] array([[[ 1. , 0. ], # may vary [ 1. , 1. ], [ 0. , 0. ]], [[ 1. , 1. ], [ 0. , 1.1], [ 0. , 0. ]]])
三角形 0 是三角形 1 的唯一邻居,它与三角形 1 的顶点 1 相对:
>>> tri.neighbors[1] array([-1, 0, -1], dtype=int32) >>> points[tri.simplices[1,1]] array([ 0. , 1.1])
我们可以找出哪些三角形点在:
>>> p = np.array([(0.1, 0.2), (1.5, 0.5), (0.5, 1.05)]) >>> tri.find_simplex(p) array([ 1, -1, 1], dtype=int32)
数组中返回的整数是对应点所在单纯形的索引。如果返回 -1,则该点不在单纯形中。请注意,以下示例中的快捷方式仅适用于有效点,因为无效点会导致 -1,而 -1 本身就是列表中最后一个单纯形的有效索引。
>>> p_valids = np.array([(0.1, 0.2), (0.5, 1.05)]) >>> tri.simplices[tri.find_simplex(p_valids)] array([[3, 1, 0], # may vary [3, 1, 0]], dtype=int32)
我们还可以为这些点计算三角形 1 中的重心坐标:
>>> b = tri.transform[1,:2].dot(np.transpose(p - tri.transform[1,2])) >>> np.c_[np.transpose(b), 1 - b.sum(axis=0)] array([[ 0.1 , 0.09090909, 0.80909091], [ 1.5 , -0.90909091, 0.40909091], [ 0.5 , 0.5 , 0. ]])
第一个点的坐标均为正值,这意味着它确实在三角形内部。第三个点位于边上,因此其第三个坐标为空。
- points: ndarray of double, shape (npoints, ndim)
输入点的坐标。
- simplices: 整数的ndarray,形状(nsimplex,ndim + 1)
在三角剖分中形成单纯形的点的索引。对于二维,点是逆时针方向的。
- neighbors: 整数的ndarray,形状(nsimplex,ndim + 1)
每个单纯形的相邻单纯形的索引。第 k 个邻居与第 k 个顶点相对。对于边界处的单纯形,-1 表示没有邻居。
- equations: ndarray of double, shape (nsimplex, ndim+2)
[正常,偏移] 形成抛物面上刻面的超平面方程(更多信息请参见Qhull documentation)。
- paraboloid_scale, paraboloid_shift: 浮点数
额外抛物面尺寸的缩放和移动(更多信息请参见Qhull documentation)。
transform
ndarray of double, shape (nsimplex, ndim+1, ndim)从
x
到重心坐标c
的仿射变换。vertex_to_simplex
ndarray int, shape (npoints,)查找数组,从一个顶点到它所属的某个单纯形。
convex_hull
ndarray int, shape (nfaces, ndim)构成点集凸包的面的顶点。
- coplanar: int,形状的ndarray(ncoplanar,3)
共面点的索引以及最近小平面和最近顶点的相应索引。共面点是由于数值精度问题而未包含在三角剖分中的输入点。
如果未指定选项“Qc”,则不计算此列表。
vertex_neighbor_vertices
两个 int ndarray 的元组; (indptr, index )顶点的相邻顶点。
- furthest_site:
如果这是最远的站点三角剖分,则为 True,否则为 False。
属性 ::
相关用法
- Python SciPy spatial.tsearch用法及代码示例
- Python SciPy spatial.Voronoi用法及代码示例
- Python SciPy spatial.procrustes用法及代码示例
- Python SciPy spatial.SphericalVoronoi用法及代码示例
- Python SciPy spatial.minkowski_distance用法及代码示例
- Python SciPy spatial.HalfspaceIntersection用法及代码示例
- Python SciPy spatial.voronoi_plot_2d用法及代码示例
- Python SciPy spatial.minkowski_distance_p用法及代码示例
- Python SciPy spatial.geometric_slerp用法及代码示例
- Python SciPy spatial.distance_matrix用法及代码示例
- Python SciPy spatial.ConvexHull用法及代码示例
- Python SciPy spatial.convex_hull_plot_2d用法及代码示例
- Python SciPy spatial.delaunay_plot_2d用法及代码示例
- Python SciPy sparse.isspmatrix用法及代码示例
- Python SciPy sparse.save_npz用法及代码示例
- Python SciPy sparse.issparse用法及代码示例
- Python SciPy sparse.coo_matrix用法及代码示例
- Python SciPy sparse.isspmatrix_csc用法及代码示例
- Python SciPy sparse.isspmatrix_csr用法及代码示例
- Python SciPy sparse.tril用法及代码示例
- Python SciPy sparse.coo_array用法及代码示例
- Python SciPy sparse.dia_array用法及代码示例
- Python SciPy sparse.bmat用法及代码示例
- Python SciPy sparse.hstack用法及代码示例
- Python SciPy sparse.rand用法及代码示例
注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.spatial.Delaunay。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。