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.