Main Content

voronoin

N 维 Voronoi 图

说明

示例

[v,c] = voronoin(P) 基于由矩阵 P 表示的 N 维点确定一个 Voronoi 图并返回其 Voronoi 顶点 v 和 Voronoi 元胞 c

[v,c] = voronoin(P,opts) 还指定用于计算 Voronoi 图的 Qhull 选项。

示例

全部折叠

创建一个由二维点组成的矩阵,并计算 Voronoi 顶点和图元胞。

P = [0.5 0; 0 0.5; -0.5 -0.5; -0.2 -0.1; -0.1 0.1; 0.1 -0.1; 0.1 0.1]
P = 7×2

    0.5000         0
         0    0.5000
   -0.5000   -0.5000
   -0.2000   -0.1000
   -0.1000    0.1000
    0.1000   -0.1000
    0.1000    0.1000

[v,c] = voronoin(P)
v = 10×2

       Inf       Inf
    0.7000   -1.6500
   -0.0500   -0.0500
   -0.0500   -0.5250
   -1.4500    0.6500
   -1.7500    0.7500
         0    0.2875
    0.3833    0.3833
         0         0
    0.2875         0

c=7×1 cell array
    {[  10 2 1 8]}
    {[ 8 1 6 5 7]}
    {[   6 1 2 4]}
    {[   6 4 3 5]}
    {[   9 3 5 7]}
    {[10 2 4 3 9]}
    {[  10 8 7 9]}

输入参数

全部折叠

点,指定为一个矩阵,其列包含对应维度的坐标。例如,要定义一组二维点,请将 x 坐标放在 P 的第一列中,将相应的 y 坐标放在第二列中。

Qhull 选项,指定为字符向量元胞数组,指示要使用的 Qhull 算法。如需选项列表,请参阅 Qhull 控制选项

默认情况下,对于二维和三维输入,opts 设置为 {'Qbb'}。对于四维及更高维输入,opts 设置为 {'Qbb','Qx'}

输出参数

全部折叠

Voronoi 顶点,以矩阵形式返回,矩阵的列数与输入相同。每行包含 Voronoi 图中一个 N 维点的坐标,第一行包含 Inf 值。由 Inf 值构成的一行表示一个无边界元胞。

索引,以元胞数组形式返回。c 的每个元素都包含构成 Voronoi 元胞的 Voronoi 顶点 v 的行索引。

详细信息

全部折叠

Voronoi 图

给定一组共面点中的一个点,您可以在它周围绘制一个边界,该边界中包含的所有点到该点的距离比到组中其他点的距离更近。该边界就定义了单个 Voronoi 多边形。组中所有点的所有 Voronoi 多边形的集合称为 Voronoi 图

提示

  • 可以绘制 N 维 Voronoi 图的各个有边界元胞。为此,请使用 convhulln 函数计算构成 Voronoi 元胞的各个面的顶点。然后,使用 patch 或其他绘图函数生成图窗。

算法

voronoin 基于 Qhull [1]。有关详细信息,请参阅 http://www.qhull.org/。有关版权信息,请参阅 http://www.qhull.org/COPYING.txt

参考

[1] Barber, C. B., D.P. Dobkin, and H.T. Huhdanpaa, “The Quickhull Algorithm for Convex Hulls,” ACM Transactions on Mathematical Software, Vol. 22, No. 4, Dec. 1996, p. 469-483.

扩展功能

版本历史记录

在 R2006a 之前推出