コンテンツにスキップ

ボロノイ図

点集合が与えられた場合、ボロノイ図は平面を、対応する点に最も近い平面の領域を表すセルに分割します。ボロノイ図はドローネ三角形分割の双対です。

delaunay.voronoi(bounds)

ソース · 指定されたドローネ三角形分割のボロノイ図を返します。レンダリング時には、図は指定された *bounds* = [ *xmin*, *ymin*, *xmax*, *ymax*] にクリップされます。

js
const delaunay = d3.Delaunay.from([[0, 0], [0, 100], [100, 0], [100, 100]]);
const voronoi = delaunay.voronoi([0, 0, 640, 480]);

*bounds* が指定されていない場合、デフォルトは [0, 0, 960, 500] です。ボロノイ図は、三角形分割が存在しない縮退したケース、つまり0、1、または2点、および共線点の場合でも返されます。

*voronoi*.delaunay

ボロノイ図に関連付けられたドローネ三角形分割

*voronoi*.circumcenters

ドローネ三角形の外心を Float64Array [ *cx0*, *cy0*, *cx1*, *cy1*, …] として返します。連続する各座標ペア *cx*, *cy* は、対応する三角形の外心です。これらの外心は、ボロノイセルポリゴンの座標を形成します。

*voronoi*.vectors

Float64Array [ *vx0*, *vy0*, *wx0*, *wy0*, …]。各非ゼロの四つ組は、外殻上の開いた(無限の)セルを表し、2つの開いた半直線の方向を示します。

*voronoi*.xmin
*voronoi*.ymin
*voronoi*.xmax
*voronoi*.ymax

ボロノイ図をレンダリングするためのビューポートの範囲 [ *xmin*, *ymin*, *xmax*, *ymax*]。これらの値は、レンダリングメソッド( *voronoi*.render *voronoi*.renderBounds *voronoi*.renderCell)にのみ影響します。

*voronoi*.contains( *i*, *x*, *y*)

ソース · 指定されたインデックス *i* のセルが指定された点⟨ *x*, *y*⟩を含む場合、つまり、点 *i* が指定された点に最も近い図の点である場合、true を返します。(このメソッドは、関連付けられたボロノイ図のビューポート範囲の影響を受けません。)

*voronoi*.neighbors( *i*)

js
voronoi.neighbors(-1) // []

ソース · 指定されたセル *i* と共通の辺を共有するセルのインデックスのイテラブルを返します。ボロノイ近傍は常にドローネグラフ上の近傍ですが、共通の辺がボロノイ図のビューポートによってクリップされている場合、逆は偽になります。

*voronoi*.render( *context*)

ソース · ボロノイセルのメッシュを指定された *context* にレンダリングします。指定された *context* は、CanvasPathMethods API の *context*.moveTo メソッドと *context*.lineTo メソッドを実装する必要があります。 *context* が指定されていない場合、代わりにSVGパス文字列が返されます。

*voronoi*.renderBounds( *context*)

ソース · ビューポートの範囲を指定された *context* にレンダリングします。指定された *context* は、CanvasPathMethods API の *context*.rect メソッドを実装する必要があります。 *context*.rect( *voronoi*.xmin, *voronoi*.ymin, *voronoi*.xmax - *voronoi*.xmin, *voronoi*.ymax - *voronoi*.ymin) と同等です。 *context* が指定されていない場合、代わりにSVGパス文字列が返されます。

*voronoi*.renderCell( *i*, *context*)

ソース · 指定されたインデックス *i* のセルを指定された *context* にレンダリングします。指定された *context* は、CanvasPathMethods API の *context*.moveTo、 *context*.lineTo、および *context*.closePath メソッドを実装する必要があります。 *context* が指定されていない場合、代わりにSVGパス文字列が返されます。

*voronoi*.cellPolygons()

ソース · セルインデックスをプロパティとして持つ、空でない各セルのポリゴンのイテラブルを返します。 *voronoi*.renderCellも参照してください。

*voronoi*.cellPolygon( *i*)

ソース · 指定された点 *i* のセルを表す凸型の閉じたポリゴン [[ *x0*, *y0*], [ *x1*, *y1*], …, [ *x0*, *y0*]] を返します。 *voronoi*.renderCellも参照してください。

*voronoi*.update()

ソース · ポイントがインプレースで変更された後に、ボロノイ図と基になる三角形分割を更新します。これは、ロイドのリラックスに役立ちます。基になるドローネ三角形分割で *delaunay*.updateを呼び出します。