Overview
Developer Guide
Basics
3D Math
Geospatial Math
API Reference
@math.gl/culling
@math.gl/geoid
@math.gl/geospatial
@math.gl/proj4
@math.gl/sun
@math.gl/web-mercator
Concepts

# 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) - the indices in `positions` where each hole starts. If `null`, the polygon has no holes.
• `options` (Object, optional)
• `size` (Number) - the number of elements in each vertex. Size `2` will interpret `positions` as `[x0, y0, x1, y1, ...]` and size `3` will interpret `positions` as `[x0, y0, z0, x1, y1, z1, ...]`. Default `2`.
• `gridResolution` (Number, optional) - the grid size. Default `10`.
• `gridOffset` (Array, optional) - the grid offset in `[x, y]`. Default `[0, 0]` i.e. the grid starts from the coordinate origin.
• `edgeTypes` (Boolean) - if `true`, 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) - a flat array of the vertex positions that define the polygon's rings.

• `holeIndices` (Array) - the indices in `positions` where each hole starts. Not present if the polygon has no holes.

• `edgeTypes` (Array) - describes the nature of each vertex in `positions`:

• `0` - the segment connecting this vertex to the next is inside the original polygon
• `1` - the segment connecting this vertex to the next is on the border of the original polygon