d3-voronoi

此模块实现了用于计算一组二维点的Voronoi diagramDelaunay triangulation的[Steven J. Fortune’s algorithm]([[[https://en.wikipedia.org/wiki/Fortune's\_algorithm\)。此实现很大程度上基于\[Raymond\]\(https://en.wikipedia.org/wiki/Fortune's\_algorithm\)。此实现很大程度上基于\[Raymond\]\(https://en.wikipedia.org/wiki/Fortune's\_algorithm\)。此实现很大程度上基于\[Raymond\]\(https://en.wikipedia.org/wiki/Fortune's\_algorithm\)。此实现很大程度上基于\[Raymond\)\](https://en.wikipedia.org/wiki/Fortune's_algorithm%29。此实现很大程度上基于[Raymond]%28https://en.wikipedia.org/wiki/Fortune's_algorithm%29。此实现很大程度上基于[Raymond]%28https://en.wikipedia.org/wiki/Fortune's_algorithm%29。此实现很大程度上基于[Raymond]%28https://en.wikipedia.org/wiki/Fortune's_algorithm%29。此实现很大程度上基于[Raymond%29\)\) Hill的研究](http://www.raymondhill.net/voronoi/rhill-voronoi.html)。

Voronoi diagrams(泰森多边形)不仅在视觉上具有吸引力,也是实用的交互工具,如在散点图中增加点的目标区域。另请参阅纽约时报的“Strikeouts on the Rise”和这个multi-line chart例子;也可以参阅Tovi Grossman关于bubble cursors的论文。Voronoi diagrams也可以用于automate label positioning(自动标注标签),Delaunay meshes在计算视觉元素的邻接或分组方面非常有用。

Installing

如果你使用npm,请键入npm install d3-voronoi。否则,请下载最新版本。你也可以直接从d3js.org加载,作为standalone library(独立库)或D3 4.0的一部分来使用。支持AMD,CommonJS和vanilla环境。在vanilla环境下,会输出一个全局的d3

<script src="https://d3js.org/d3-voronoi.v1.min.js"></script>
<script>

var voronoi = d3.voronoi();

</script>

API Reference

d3.voronoi()

用默认x accessor和y accessor以及为null的extent创建一个新的Voronoi布局。

voronoi(data)

计算给定data点的泰森多边形

voronoi.x([x])

如果指定了x,则设置横坐标accessor。如果不指定x,则返回当前的横坐标accessor,默认为:

function x(d) {
  return d[0];
}

voronoi.y([y])

如果指定了y,则设置纵坐标accessor。如果不指定y,则返回当前的纵坐标accessor,默认为:

function y(d) {
  return d[1];
}

voronoi.extent([extent])

如果指定了extent,则将Voronoi布局的剪裁区域设为给定的边界并返回布局。extent边界为数组[ [ x0,y0 ]、[ x1,y1 ] ],其中x0为区域的左侧,y0位上侧,x1为右侧,y1位下侧。如果不指定extent,则返回当前的剪裁区域,默认为null。当使用voronoi.polygons时,extent是必需的。

voronoi.size([size])

voronoi.extent的别名,区域的最小xy为⟨0,0⟩。相当于:

voronoi.extent([[0, 0], size]);

voronoi.polygons(data)

返回一个稀疏多边形数组,用于表示给定data点中的每个唯一输入点,对应计算出来的泰森多边形的单元格。相当于:

voronoi(data).polygons();

另请参阅diagram.polygons。注意:extent是必需的。

voronoi.triangles(data)

以三角形数组的形式返回给定data数组的Delaunay triangulation(德洛内三角剖分)。每个三角形都是由data中的三个元素组成的数组。相当于:

voronoi(data).triangles();

另请参阅diagram.triangles查看更多。

以link数组的形式返回给定data数组的Delaunay triangulation(德洛内三角剖分)。每个link都有sourcetarget属性指向data中的元素。相当于:

voronoi(data).links();

另请参阅diagram.links查看更多。

Voronoi Diagrams

diagram

voronoi返回的泰森多边形,具有以下属性:

  • edges- 数组.。
  • cells- 一组稀疏的单元格数组,每一个都有一个唯一的输入点。

对于每一组同时输入的点,任意选择一个点并分配相关的单元格;返回稀疏数组中的其他重合输入点的entry将丢失。

diagram.polygons()

返回一个剪裁为extent大小的稀疏多边形数组,表示diagram中的每个单元格(每个唯一输入点)。每个多边形都表示为一个点数组[x, y],其中x和y为点坐标,一个data字段指向data中的对应元素。多边形是开放的:它们不包含重复第一个点的闭合点;例如,三角形是一个由三个点组成的数组。多边形也是逆时针的,假设原点⟨0,0⟩为左上角。

对于每一组同时输入的点,任意选择一个点并分配相关的多边形;返回稀疏数组中的其他重合输入点的entry将丢失。

diagram.triangles()

以三角形数组的形式返回给定data数组的Delaunay triangulation(德洛内三角剖分)。每个三角形都是由data中的三个元素组成的数组。由于三角剖分是泰森多边形的对偶, 而泰森多边形由extent剪裁,因此返回Delaunay triangulation(德洛内三角剖分)的一个子集。

以link数组的形式返回给定data数组的Delaunay triangulation(德洛内三角剖分),表示网格中的每条边。每个link具有以下属性:

  • source- 源节点,data中的一个元素。
  • target- 目标节点,data中的一个元素。

由于三角剖分是泰森多边形的对偶, 而泰森多边形由extent剪裁,因此返回Delaunay triangulation(德洛内三角剖分)的一个子集。

diagram.find(x, y[, radius])

返回指向点[x,y]最近的site。如果指定了radius,则只考虑半径范围内的sites。

另请参阅Philippe Rivière的bl.ocks.org/1b7ddbcd71454d685d1259781968aefc

cell

diagram中的每个单元格都是具有以下属性的对象:

  • site- 单元格相关联输入点的site(位置)。
  • halfedges- diagram.edges的索引数组,表示单元格的多边形。
site

diagram中的每个site都是具有两个附加属性的数组[x, y]:

  • index- site的索引,对应于相关的输入点。
  • data- 与此site相对应的输入数据。
edge

diagram中的每条边都是具有两个附加属性的数组[[x0, y0], [x1, y1]]:

  • left- 边左侧的site
  • right- 边右侧的site;剪裁的边为null。

results matching ""

    No results matching ""