voronoin

Диаграмма Вороного N-D

Синтаксис

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

Описание

[V,C] = voronoin(X) возвращает вершины Voronoi V и ячейки Voronoi C Диаграммы Вороного X. V является numv-by-n массив вершин Voronoi numv в n-мерном пространстве, каждая строка соответствует вершине Voronoi. C является векторным массивом ячеек, где каждый элемент содержит индексы в V вершин соответствующей ячейки Voronoi. X является m-by-n массив, представляя m n-мерные точки, где n > 1 и  m >= n+1.

Первая строка V является бесконечно удаленной точкой. Если каким-либо индексом в ячейке массива ячеек является 1, то соответствующая ячейка Voronoi содержит первую точку в V, бесконечно удаленной точке. Это означает, что ячейка Voronoi неограниченна.

voronoin использует Qhull.

[V,C] = voronoin(X,options) задает массив ячеек опций Qhull. Опции по умолчанию:

  • {'Qbb'} для 2-и 3-мерный вход

  • {'Qbb','Qx'} для 4 и более многомерный вход

Если options является [], опции по умолчанию используются. Если code является {''}, никакие опции не используются, даже значение по умолчанию. Для получения дополнительной информации о Qhull и его опциях, смотрите http://www.qhull.org.

Визуализация

Можно построить ограниченные ячейки человека n-мерной Диаграммы Вороного. Для этого используйте convhulln, чтобы вычислить вершины фасетов, которые составляют ячейку Voronoi. Затем используйте patch и другие функции построения графика, чтобы сгенерировать фигуру.

Примеры

свернуть все

Вычислите вершины Voronoi и схематически изобразите ячейки.

Задайте 2D массив точек и вычислите вершины и схематически изобразите ячейки.

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 = 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(X)
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.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 и схематически изобразите ячейки 2D набора точек путем определения параметров выпуклой оболочки. Первая строка C содержит бесконечно удаленную точку.

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

   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] Стригите, C. B. Д.П. Добкин и Х.Т. Хухдэнпэа, “Алгоритм Quickhull для Выпуклых оболочек”, Транзакции ACM на Mathematical Software, Издании 22, № 4, декабрь 1996, p. 469-483.

Смотрите также

| | | | |

Представлено до R2006a