Voronoi 圖
給定一組點,Voronoi 圖將平面分割成代表最接近對應點的平面區域的儲存格。Voronoi 圖是 Delaunay 三角剖分 的對偶。
delaunay.voronoi(bounds)
原始碼 · 傳回給定 Delaunay 三角剖分 的 Voronoi 圖。在繪製時,圖形將會裁剪為指定的 bounds = [xmin, ymin, xmax, ymax]。
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 圖仍然會傳回。
voronoi.delaunay
Voronoi 圖關聯的 Delaunay 三角剖分。
voronoi.circumcenters
Delaunay 三角形的 外心,以 Float64Array [cx0, cy0, cx1, cy1, …] 表示。每對連續的座標 cx, cy 是對應三角形的外心。這些外心形成 Voronoi 儲存格多邊形的座標。
voronoi.vectors
一個 Float64Array [vx0, vy0, wx0, wy0, …],其中每個非零四元組描述外殼上的開放(無限)單元格,提供兩個開放半線的方向。
voronoi.xmin
voronoi.ymin
voronoi.xmax
voronoi.ymax
用於繪製 Voronoi 圖的視窗範圍 [xmin, ymin, xmax, ymax]。這些值僅影響繪製方法 (voronoi.render、voronoi.renderBounds、voronoi.renderCell)。
voronoi.contains(i, x, y)
來源 · 如果索引 i 所指定的單元格包含指定的點 ⟨x, y⟩,則傳回 true;即,點 i 是否為圖中與指定點最接近的點。(此方法不受相關 Voronoi 圖的視窗 範圍 影響。)
voronoi.neighbors(i)
voronoi.neighbors(-1) // []
來源 · 傳回與指定的單元格 i 共用邊緣的單元格索引的 iterable。Voronoi 鄰居在 Delaunay 圖中永遠都是鄰居,但當 Voronoi 圖的視窗裁剪掉共用邊緣時,反之則不然。
voronoi.render(context)
來源 · 將 Voronoi 單元格網格繪製到指定的 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)
原始碼 · 傳回凸閉多邊形 [[x0, y0], [x1, y1], …, [x0, y0]],表示指定點 i 的儲存格。另請參閱 voronoi.renderCell。
voronoi.update()
原始碼 · 在點已就地修改後更新 Voronoi 圖和基礎三角剖分 — 適用於 Lloyd 的放鬆。在基礎 Delaunay 三角剖分上呼叫 delaunay.update。