d3-polygon
此模块为二维多边形提供了一些基本几何运算。每个多边形都表示为一个二维数组数组 [[x0, y0], [x1, y1], …],并且可以是闭合的(其中第一个点和最后一个点相同)或开放的(其中它们不同)。通常,多边形的顺序为逆时针顺序,假设坐标系中原点位于左上角。
polygonArea(polygon)
js
d3.polygonArea([[1, 1], [1.5, 0], [2, 1]]) // -0.5
源代码 · 返回指定 polygon 的带符号面积。如果多边形的顶点按逆时针顺序排列(假设坐标系中原点位于左上角),则返回的面积为正;否则为负或零。
polygonCentroid(polygon)
js
d3.polygonCentroid([[1, 1], [1.5, 0], [2, 1]]) // [1.5, 0.6666666666666666]
polygonHull(points)
js
d3.polygonHull(points) // [[3.0872864263338777, -1.300100095019402], [1.6559368816733773, -2.5092525689499605], …]
源代码 · 使用 安德鲁单调链算法 返回指定 points 的 凸包。返回的凸包表示为一个数组,其中包含以逆时针顺序排列的输入 points 的子集。如果 points 的元素少于三个,则返回 null。
polygonContains(polygon, point)
js
d3.polygonContains([[1, 1], [1.5, 0], [2, 1]], [1.5, 0.667]) // true
源代码 · 如果且仅当指定 point 位于指定 polygon 内部时返回 true。
polygonLength(polygon)
js
d3.polygonLength([[1, 1], [1.5, 0], [2, 1]]) // 3.23606797749979
源代码 · 返回指定 polygon 周长的长度。