cutPolygonByGrid
Subdivides a polygon by intersecting with a uniform grid.
import {cutPolygonByGrid} from '@math.gl/polygon';
cutPolygonByGrid([0, 15, 15, 0, 0, -15, 0, 15], {size: 2, gridResolution: 20});
// returns [
// [15, 0, 0, -15, 0, 0, 15, 0],
// [15, 0, 0, 0, 0, 15, 15, 0]
// ]
]
Usage
cutPolygonByGrid(positions, holeIndices, [options]);
Arguments:
positions(Array|TypedArray) - a flat array of the vertex positions that define the polygon's rings.holeIndices(Array|TypedArray|null) - the indices inpositionswhere each hole starts. Ifnull, the polygon has no holes.options(Object, optional)size(Number) - the number of elements in each vertex. Size2will interpretpositionsas[x0, y0, x1, y1, ...]and size3will interpretpositionsas[x0, y0, z0, x1, y1, z1, ...]. Default2.gridResolution(Number, optional) - the grid size. Default10.gridOffset(Array, optional) - the grid offset in[x, y]. Default[0, 0]i.e. the grid starts from the coordinate origin.edgeTypes(Boolean) - iftrue, returns an additional array for each polygon that describes the nature of each vertex. See "returns" below.
Returns:
An array of polygons. Each polygons is represented by an object with the following fields:
-
positions(Array|TypedArray) - a flat array of the vertex positions that define the polygon's rings. -
holeIndices(Array|TypedArray) - the indices inpositionswhere each hole starts. Not present if the polygon has no holes. -
edgeTypes(Array) - describes the nature of each vertex inpositions:0- the segment connecting this vertex to the next is inside the original polygon1- the segment connecting this vertex to the next is on the border of the original polygon