ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

voronoin

N 次元ボロノイ線図

構文

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

説明

[V,C] = voronoin(X) は、X のボロノイ線図のボロノイ頂点 V とボロノイ cell C を返します。V は、n 次元空間での numv 個のボロノイ頂点からなる numvn 列の配列です。各行は、ボロノイ頂点に対応します。C は、各要素が対応するボロノイ cell の頂点の V のインデックスを格納したベクトルの cell 配列です。X は、mn 列の配列で、m 個の n 次元の点を表します。ここで、n > 1 かつ m >= n+1 です。

V の最初の行は無限大になります。cell 配列内のセルのあるインデックスが 1 の場合、対応するボロノイ セルには、V の最初の点、無限大が含まれます。これは、ボロノイ セルに境界がないことを意味しています。

voronoin は Qhull を使用します。

[V,C] = voronoin(X,options) は Qhull オプションの cell 配列を指定します。既定のオプションは、以下のとおりです。

  • 2 次元および 3 次元入力の場合、{'Qbb'}

  • 4 次元以上の入力の場合、{'Qbb','Qx'}

options[] の場合、既定のオプションが使用されます。code{''} の場合、既定の設定も含め、オプションは使用されません。Qhull とそのオプションの詳細は、http://www.qhull.org を参照してください。

可視化

n 次元のボロノイ線図の個々に閉じられたセルをプロットできます。これを行うには、convhulln を使用して、ボロノイ セルを構成している面の頂点を計算します。次に、patch と他のプロット関数を使用して図を作成します。

すべて折りたたむ

ボロノイ頂点とボロノイ線図のセルを計算します。

点の 2 次元配列を定義し、頂点と図のセルを計算します。

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 ループを使用して cell 配列 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

凸包のパラメーターを指定して、2 次元の点集合のボロノイ頂点とボロノイ線図のセルを計算します。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] 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 より前に導入