文档

本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

voronoin

N 维 Voronoi 图

语法

[V,C] = voronoin(X)
[V,C] = voronoin(X,options)

说明

[V,C] = voronoin(X) 返回 Voronoi 图 X 的 Voronoi 顶点 V 和 Voronoi 元胞 CV 是由 n 维空间中的 numv Voronoi 顶点组成的 numv×n 数组,每行对应于一个 Voronoi 顶点。C 是一个向量元胞数组,其中每个元素包含指向对应 Voronoi 元胞的顶点的 V 的索引。Xm×n 数组,表示 m×n 维点,其中 n > 1 并且 m >= n+1

V 的第一行是无穷大处的点。如果元胞数组的元胞中的任何索引为 1,则对应的 Voronoi 元胞将包含 V 中的第一个点,即无穷大处的点。这意味着 Voronoi 元胞无边界。

voronoin 使用 Qhull。

[V,C] = voronoin(X,options) 指定 Qhull 选项元胞数组。默认选项为:

  • {'Qbb'}(对于二维和三维输入)

  • {'Qbb','Qx'}(对于四维和更高维的输入)

如果 options[],将使用默认选项。如果 code{''},将不使用包括默认选项在内的任何选项。有关 Qhull 及其选项的详细信息,请参阅 http://www.qhull.org

可视化

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

示例

全部折叠

计算 Voronoi 顶点和图元胞。

定义点的二维数组,并计算顶点和图元胞。

X = [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]
X = 

    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(X)
V = 

       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.2875         0
         0         0

C = 7x1 cell array
    {1x4 double}
    {1x5 double}
    {1x4 double}
    {1x4 double}
    {1x4 double}
    {1x5 double}
    {1x4 double}

使用 for 循环显示元胞数组 C 的内容。

for i = 1:length(C)
    disp(C{i});
end
     9     2     1     8

     8     1     6     5     7

     6     1     2     4

     6     4     3     5

    10     3     5     7

    10     3     4     2     9

    10     7     8     9

通过指定凸包参数计算二维点集的 Voronoi 顶点和图元胞。C 的第一行包含无穷大处的点。

X = [-1 -1; 1 -1; 1 1; -1 1];
[V,C] = voronoin(X,{'Qbb','Qz'})
V = 

   Inf   Inf
     0     0

C = 4x1 cell array
    {1x2 double}
    {1x2 double}
    {1x2 double}
    {1x2 double}

算法

voronoin 基于 Qhull [1]。有关 Qhull 的信息,请参阅 http://www.qhull.org/

参考

[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 之前推出

此主题对您有帮助吗?