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

# Polygon

Allows an array of points (whether closed or non-closed) to be treated as a Polygon.

Implements the Shoelace formula for determining the area and winding direction of an arbitrary polygon.

## Usage

``import {Polygon} from '@math.gl/polygon';``

## Methods

### constructor

Creates a new Polygon object.

The polygon object will reference the provided points, assuming them to not be modified for the lifetime of the Polygon object.

### getSignedArea

`polygon.getSignedArea()`

### getArea

`polygon.getArea()`

Note:

• A convenience method that returns `Math.abs(polygon.getSignedArea())`.

### getWindingDirection

Returns the direction of the polygon path.

`polygon.getWindingDirection()`

• A positive number is clockwise.
• A negative number is counter clockwise.

Note:

• A convenience method that returns `Math.sign(polygon.getSignedArea())`

### forEachSegment

Lets the application iterate over each segment.

`polygon.forEachSegment((p1, p2) => ...);`

### modifyWindingDirection

Checks winding direction of the polygon and reverses the polygon in case if opposite winding direction. Note: points of the polygon are modified in-place.

• A positive number is clockwise.
• A negative number is counter clockwise.

`polygon.modifyWindingDirection(direction);`

Returns:

Returns true if the winding direction was changed.

## Remarks

• To avoid having to copy a non-closed path to be able to treat it as a polygon (by adding a copy of the first vertex to then end of the path), instead we define a `forEachSegment` iteration method that makes sure the last segment is iterated over.