Phaser API Documentation

  Version: 
Filter
This is a beta release of our new docs system. Found an issue?
Please tell us about it in the #📖-newdocs-feedback channel on the Phaser Discord

Phaser . Geom . Polygon

This is a beta release of our new docs system. Found an issue?
Please tell us about it in the #📖-newdocs-feedback channel on the Phaser Discord

Phaser . Geom . Polygon

A Polygon object

The polygon is a closed shape consists of a series of connected straight lines defined by list of ordered points. Several formats are supported to define the list of points, check the setTo method for details. This is a geometry object allowing you to define and inspect the shape. It is not a Game Object, in that you cannot add it to the display list, and it has no texture. To render a Polygon you should look at the capabilities of the Graphics class.

Constructor:

new Polygon([points])

Parameters:

name type arguments description
points string | Array.<number> | Array.<Phaser.Types.Math.Vector2Like> <optional>

List of points defining the perimeter of this Polygon. Several formats are supported:

  • A string containing paired x y values separated by a single space: '40 0 40 20 100 20 100 80 40 80 40 100 0 50'
  • An array of Point objects: [new Phaser.Point(x1, y1), ...]
  • An array of objects with public x y properties: [obj1, obj2, ...]
  • An array of paired numbers that represent point coordinates: [x1,y1, x2,y2, ...]
  • An array of arrays with two elements representing x/y coordinates: [[x1, y1], [x2, y2], ...]
Since: 3.0.0

Members

area: number
Focus
Focus

Description:

The area of this Polygon.

Type:
number
Default: 0
Since: 3.0.0
Focus
Focus
points: Array.<Phaser.Geom.Point>
Focus
Focus

Description:

An array of number pair objects that make up this polygon. I.e. [ {x,y}, {x,y}, {x,y} ]

Type:
Since: 3.0.0
Focus
Focus
<readonly> type: number
Focus
Focus

Description:

The geometry constant type of this object: GEOM_CONST.POLYGON. Used for fast type comparisons.

Type:
number
Since: 3.19.0
Focus
Focus

Methods

calculateArea()
Focus
Focus

Description:

Calculates the area of the Polygon. This is available in the property Polygon.area

Returns:
Description:

The area of the polygon.

Type:
  • number
Examples:
Since: 3.0.0
Focus
Focus
contains(x, y)
Focus
Focus

Description:

Check to see if the Polygon contains the given x / y coordinates.

Parameters:

name type description
x number

The x coordinate to check within the polygon.

y number

The y coordinate to check within the polygon.

Returns:
Description:

true if the coordinates are within the polygon, otherwise false.

Type:
  • boolean
Examples:
Since: 3.0.0
Focus
Focus
getPoints(quantity, [stepRate], [output])
Focus
Focus

Description:

Returns an array of Point objects containing the coordinates of the points around the perimeter of the Polygon, based on the given quantity or stepRate values.

Parameters:

name type arguments description
quantity number

The amount of points to return. If a falsey value the quantity will be derived from the stepRate instead.

stepRate number <optional>

Sets the quantity by getting the perimeter of the Polygon and dividing it by the stepRate.

output array | Array.<Phaser.Geom.Point> <optional>

An array to insert the points in to. If not provided a new array will be created.

Returns:
Description:

An array of Point objects pertaining to the points around the perimeter of the Polygon.

Type:
Examples:
Since: 3.12.0
Focus
Focus
setTo([points])
Focus
Focus

Description:

Sets this Polygon to the given points.

The points can be set from a variety of formats:

  • A string containing paired values separated by a single space: '40 0 40 20 100 20 100 80 40 80 40 100 0 50'
  • An array of Point objects: [new Phaser.Point(x1, y1), ...]
  • An array of objects with public x/y properties: [obj1, obj2, ...]
  • An array of paired numbers that represent point coordinates: [x1,y1, x2,y2, ...]
  • An array of arrays with two elements representing x/y coordinates: [[x1, y1], [x2, y2], ...]

setTo may also be called without any arguments to remove all points.

Parameters:

name type arguments description
points string | Array.<number> | Array.<Phaser.Types.Math.Vector2Like> <optional>

Points defining the perimeter of this polygon. Please check function description above for the different supported formats.

Returns:
Description:

This Polygon object.

Examples:
Since: 3.0.0
Focus
Focus
<static> Clone(polygon)
Focus
Focus

Description:

Create a new polygon which is a copy of the specified polygon

Parameters:

name type description
polygon Phaser.Geom.Polygon

The polygon to create a clone of

Returns:
Description:

A new separate Polygon cloned from the specified polygon, based on the same points.

Examples:
Since: 3.0.0
Source: src/geom/polygon/Clone.js (Line 9)
Focus
Focus
<static> Contains(polygon, x, y)
Focus
Focus

Description:

Checks if a point is within the bounds of a Polygon.

Parameters:

name type description
polygon Phaser.Geom.Polygon

The Polygon to check against.

x number

The X coordinate of the point to check.

y number

The Y coordinate of the point to check.

Returns:
Description:

true if the point is within the bounds of the Polygon, otherwise false.

Type:
  • boolean
Examples:
Since: 3.0.0
Focus
Focus
<static> ContainsPoint(polygon, point)
Focus
Focus

Description:

Checks the given Point again the Polygon to see if the Point lays within its vertices.

Parameters:

name type description
polygon Phaser.Geom.Polygon

The Polygon to check.

point Phaser.Geom.Point

The Point to check if it's within the Polygon.

Returns:
Description:

true if the Point is within the Polygon, otherwise false.

Type:
  • boolean
Examples:
Since: 3.0.0
Focus
Focus
<static> Earcut(data, [holeIndices], [dimensions])
Focus
Focus

Description:

This module implements a modified ear slicing algorithm, optimized by z-order curve hashing and extended to handle holes, twisted polygons, degeneracies and self-intersections in a way that doesn't guarantee correctness of triangulation, but attempts to always produce acceptable results for practical data.

Example:

const triangles = Phaser.Geom.Polygon.Earcut([10,0, 0,50, 60,60, 70,10]); // returns [1,0,3, 3,2,1]

Each group of three vertex indices in the resulting array forms a triangle.

// triangulating a polygon with a hole
earcut([0,0, 100,0, 100,100, 0,100,  20,20, 80,20, 80,80, 20,80], [4]);
// [3,0,4, 5,4,0, 3,4,7, 5,0,1, 2,3,7, 6,5,1, 2,7,6, 6,1,2]

// triangulating a polygon with 3d coords
earcut([10,0,1, 0,50,2, 60,60,3, 70,10,4], null, 3);
// [1,0,3, 3,2,1]

If you pass a single vertex as a hole, Earcut treats it as a Steiner point.

If your input is a multi-dimensional array (e.g. GeoJSON Polygon), you can convert it to the format expected by Earcut with Phaser.Geom.Polygon.Earcut.flatten:

var data = earcut.flatten(geojson.geometry.coordinates);
var triangles = earcut(data.vertices, data.holes, data.dimensions);

After getting a triangulation, you can verify its correctness with Phaser.Geom.Polygon.Earcut.deviation:

var deviation = earcut.deviation(vertices, holes, dimensions, triangles);

Returns the relative difference between the total area of triangles and the area of the input polygon. 0 means the triangulation is fully correct.

For more information see https://github.com/mapbox/earcut

Parameters:

name type arguments Default description
data Array.<number>

A flat array of vertex coordinate, like [x0,y0, x1,y1, x2,y2, ...]

holeIndices Array.<number> <optional>

An array of hole indices if any (e.g. [5, 8] for a 12-vertex input would mean one hole with vertices 5–7 and another with 8–11).

dimensions number <optional> 2

The number of coordinates per vertex in the input array (2 by default).

Returns:
Description:

An array of triangulated data.

Type:
  • Array.
Examples:
Since: 3.50.0
Source: src/geom/polygon/Earcut.js (Line 7)
Focus
Focus
<static> GetAABB(polygon, [out])
Focus
Focus

Description:

Calculates the bounding AABB rectangle of a polygon.

Parameters:

name type arguments description
polygon Phaser.Geom.Polygon

The polygon that should be calculated.

out object | Phaser.Geom.Rectangle <optional>

The rectangle or object that has x, y, width, and height properties to store the result. Optional.

Returns:
Description:

The resulting rectangle or object that is passed in with position and dimensions of the polygon's AABB.

Type:
Examples:
Since: 3.0.0
Focus
Focus
<static> GetNumberArray(polygon, [output])
Focus
Focus

Description:

Stores all of the points of a Polygon into a flat array of numbers following the sequence [ x,y, x,y, x,y ], i.e. each point of the Polygon, in the order it's defined, corresponds to two elements of the resultant array for the point's X and Y coordinate.

Parameters:

name type arguments description
polygon Phaser.Geom.Polygon

The Polygon whose points to export.

output array | Array.<number> <optional>

An array to which the points' coordinates should be appended.

Returns:
Description:

The modified output array, or a new array if none was given.

Type:
  • array
  • Array.
Examples:
Since: 3.0.0
Focus
Focus
<static> GetPoints(polygon, quantity, [stepRate], [output])
Focus
Focus

Description:

Returns an array of Point objects containing the coordinates of the points around the perimeter of the Polygon, based on the given quantity or stepRate values.

Parameters:

name type arguments description
polygon Phaser.Geom.Polygon

The Polygon to get the points from.

quantity number

The amount of points to return. If a falsey value the quantity will be derived from the stepRate instead.

stepRate number <optional>

Sets the quantity by getting the perimeter of the Polygon and dividing it by the stepRate.

output array <optional>

An array to insert the points in to. If not provided a new array will be created.

Returns:
Description:

An array of Point objects pertaining to the points around the perimeter of the Polygon.

Type:
Examples:
Since: 3.12.0
Focus
Focus
<static> Perimeter(polygon)
Focus
Focus

Description:

Returns the perimeter of the given Polygon.

Parameters:

name type description
polygon Phaser.Geom.Polygon

The Polygon to get the perimeter of.

Returns:
Description:

The perimeter of the Polygon.

Type:
  • number
Examples:
Since: 3.12.0
Focus
Focus
<static> Reverse(polygon)
Focus
Focus

Description:

Reverses the order of the points of a Polygon.

Parameters:

name type description
polygon Phaser.Geom.Polygon

The Polygon to modify.

Returns:
Description:

The modified Polygon.

Examples:
Since: 3.0.0
Focus
Focus
<static> Simplify(polygon, [tolerance], [highestQuality])
Focus
Focus

Description:

Takes a Polygon object and simplifies the points by running them through a combination of Douglas-Peucker and Radial Distance algorithms. Simplification dramatically reduces the number of points in a polygon while retaining its shape, giving a huge performance boost when processing it and also reducing visual noise.

Parameters:

name type arguments Default description
polygon Phaser.Geom.Polygon

The polygon to be simplified. The polygon will be modified in-place and returned.

tolerance number <optional> 1

Affects the amount of simplification (in the same metric as the point coordinates).

highestQuality boolean <optional> false

Excludes distance-based preprocessing step which leads to highest quality simplification but runs ~10-20 times slower.

Returns:
Description:

The input polygon.

Examples:
Since: 3.50.0
Focus
Focus
<static> Smooth(polygon)
Focus
Focus

Description:

Takes a Polygon object and applies Chaikin's smoothing algorithm on its points.

Parameters:

name type description
polygon Phaser.Geom.Polygon

The polygon to be smoothed. The polygon will be modified in-place and returned.

Returns:
Description:

The input polygon.

Examples:
Since: 3.13.0
Focus
Focus
<static> Translate(polygon, x, y)
Focus
Focus

Description:

Tranlates the points of the given Polygon.

Parameters:

name type description
polygon Phaser.Geom.Polygon

The Polygon to modify.

x number

The amount to horizontally translate the points by.

y number

The amount to vertically translate the points by.

Returns:
Description:

The modified Polygon.

Examples:
Since: 3.50.0
Focus
Focus