# Class: Point

## Phaser. Point

#### new Point( [x] [, y])

A Point object represents a location in a two-dimensional coordinate system, where x represents the horizontal axis and y represents the vertical axis. The following code creates a point at (0,0): `var myPoint = new Phaser.Point();` You can also use them as 2D Vectors and you'll find different vector related methods in this class.

##### Parameters:
Name Type Argument Default Description
`x` number <optional>
0

The horizontal position of this Point.

`y` number <optional>
0

The vertical position of this Point.

Source:
src/geom/Point.js line 18

### Members

#### <readonly> type : number

The const type of this object.

##### Type:
• number
Source:
src/geom/Point.js line 38

#### x : number

The x value of the point.

##### Type:
• number
Source:
src/geom/Point.js line 27

#### y : number

The y value of the point.

##### Type:
• number
Source:
src/geom/Point.js line 32

### Methods

#### <static> add(a, b [, out])

Adds the coordinates of two points together to create a new point.

##### Parameters:
Name Type Argument Description
`a` Phaser.Point

The first Point object.

`b` Phaser.Point

The second Point object.

`out` Phaser.Point <optional>

Optional Point to store the value in, if not supplied a new Point object will be created.

Source:
src/geom/Point.js line 684
##### Returns:

The new Point object.

Type
Phaser.Point

#### <static> angle(a, b)

Returns the angle between two Point objects.

##### Parameters:
Name Type Description
`a` Phaser.Point

The first Point object.

`b` Phaser.Point

The second Point object.

Source:
src/geom/Point.js line 806
##### Returns:

The angle, where b is the vertex. Within [-pi, pi].

Type
number

#### <static> centroid(points [, out])

Calculates centroid (or midpoint) from an array of points. If only one point is provided, that point is returned.

##### Parameters:
Name Type Argument Description
`points` Array.<Phaser.Point>

The array of one or more points.

`out` Phaser.Point <optional>

Optional Point to store the value in, if not supplied a new Point object will be created.

Source:
src/geom/Point.js line 1064
##### Returns:

The new Point object.

Type
Phaser.Point

#### <static> distance(a, b [, round])

Returns the euclidian distance of this Point object to the given object (can be a Circle, Point or anything with x/y properties).

##### Parameters:
Name Type Argument Default Description
`a` object

The target object. Must have visible x and y properties that represent the center of the object.

`b` object

The target object. Must have visible x and y properties that represent the center of the object.

`round` boolean <optional>
false

Round the distance to the nearest integer.

Source:
src/geom/Point.js line 910
##### Returns:

The distance between this Point object and the destination Point object.

Type
number

#### <static> divide(a, b [, out])

Divides the coordinates of two points to create a new point.

##### Parameters:
Name Type Argument Description
`a` Phaser.Point

The first Point object.

`b` Phaser.Point

The second Point object.

`out` Phaser.Point <optional>

Optional Point to store the value in, if not supplied a new Point object will be created.

Source:
src/geom/Point.js line 747
##### Returns:

The new Point object.

Type
Phaser.Point

#### <static> equals(a, b)

Determines whether the two given Point objects are equal. They are considered equal if they have the same x and y values.

##### Parameters:
Name Type Description
`a` Phaser.Point

The first Point object.

`b` Phaser.Point

The second Point object.

Source:
src/geom/Point.js line 768
##### Returns:

A value of true if the Points are equal, otherwise false.

Type
boolean

#### <static> interpolate(a, b, f [, out])

Interpolates the two given Points, based on the `f` value (between 0 and 1) and returns a new Point.

##### Parameters:
Name Type Argument Description
`a` Phaser.Point

The first Point object.

`b` Phaser.Point

The second Point object.

`f` number

The level of interpolation between the two points. Indicates where the new point will be, along the line between pt1 and pt2. If f=1, pt1 is returned; if f=0, pt2 is returned.

`out` Phaser.Point <optional>

Optional Point to store the value in, if not supplied a new Point object will be created.

Source:
src/geom/Point.js line 857
##### Returns:

The new Point object.

Type
Phaser.Point

#### <static> isPoint(obj)

Tests a Point or Point-like object.

##### Parameters:
Name Type Description
`obj` object

The object to test.

Source:
src/geom/Point.js line 1155
##### Returns:
• True if the object has numeric x and y properties.
Type
boolean

#### <static> multiply(a, b [, out])

Multiplies the coordinates of two points to create a new point.

##### Parameters:
Name Type Argument Description
`a` Phaser.Point

The first Point object.

`b` Phaser.Point

The second Point object.

`out` Phaser.Point <optional>

Optional Point to store the value in, if not supplied a new Point object will be created.

Source:
src/geom/Point.js line 726
##### Returns:

The new Point object.

Type
Phaser.Point

#### <static> multiplyAdd(a, b, s [, out])

Adds two 2D Points together and multiplies the result by the given scalar.

##### Parameters:
Name Type Argument Description
`a` Phaser.Point

The first Point object.

`b` Phaser.Point

The second Point object.

`s` number

The scaling value.

`out` Phaser.Point <optional>

Optional Point to store the value in, if not supplied a new Point object will be created.

Source:
src/geom/Point.js line 838
##### Returns:

The new Point object.

Type
Phaser.Point

#### <static> negative(a [, out])

Creates a negative Point.

##### Parameters:
Name Type Argument Description
`a` Phaser.Point

The first Point object.

`out` Phaser.Point <optional>

Optional Point to store the value in, if not supplied a new Point object will be created.

Source:
src/geom/Point.js line 821
##### Returns:

The new Point object.

Type
Phaser.Point

#### <static> normalize(a [, out])

Normalize (make unit length) a Point.

##### Parameters:
Name Type Argument Description
`a` Phaser.Point

The Point object.

`out` Phaser.Point <optional>

Optional Point to store the value in, if not supplied a new Point object will be created.

Source:
src/geom/Point.js line 994
##### Returns:

The new Point object.

Type
Phaser.Point

#### <static> normalRightHand(a [, out])

Right-hand normalize (make unit length) a Point.

##### Parameters:
Name Type Argument Description
`a` Phaser.Point

The Point object.

`out` Phaser.Point <optional>

Optional Point to store the value in, if not supplied a new Point object will be created.

Source:
src/geom/Point.js line 977
##### Returns:

The new Point object.

Type
Phaser.Point

#### <static> parse(obj [, xProp] [, yProp])

Parses an object for x and/or y properties and returns a new Phaser.Point with matching values. If the object doesn't contain those properties a Point with x/y of zero will be returned.

##### Parameters:
Name Type Argument Default Description
`obj` object

The object to parse.

`xProp` string <optional>
'x'

The property used to set the Point.x value.

`yProp` string <optional>
'y'

The property used to set the Point.y value.

Source:
src/geom/Point.js line 1106
##### Returns:

The new Point object.

Type
Phaser.Point

#### <static> perp(a [, out])

Return a perpendicular vector (90 degrees rotation)

##### Parameters:
Name Type Argument Description
`a` Phaser.Point

The Point object.

`out` Phaser.Point <optional>

Optional Point to store the value in, if not supplied a new Point object will be created.

Source:
src/geom/Point.js line 876
##### Returns:

The new Point object.

Type
Phaser.Point

#### <static> project(a, b [, out])

Project two Points onto another Point.

##### Parameters:
Name Type Argument Description
`a` Phaser.Point

The first Point object.

`b` Phaser.Point

The second Point object.

`out` Phaser.Point <optional>

Optional Point to store the value in, if not supplied a new Point object will be created.

Source:
src/geom/Point.js line 927
##### Returns:

The new Point object.

Type
Phaser.Point

#### <static> projectUnit(a, b [, out])

Project two Points onto a Point of unit length.

##### Parameters:
Name Type Argument Description
`a` Phaser.Point

The first Point object.

`b` Phaser.Point

The second Point object.

`out` Phaser.Point <optional>

Optional Point to store the value in, if not supplied a new Point object will be created.

Source:
src/geom/Point.js line 952
##### Returns:

The new Point object.

Type
Phaser.Point

#### <static> rotate(a, x, y, angle [, asDegrees] [, distance])

Rotates a Point object, or any object with exposed x/y properties, around the given coordinates by the angle specified. If the angle between the point and coordinates was 45 deg and the angle argument is 45 deg then the resulting angle will be 90 deg, as the angle argument is added to the current angle.

The distance allows you to specify a distance constraint for the rotation between the point and the coordinates. If none is given the distance between the two is calculated and used.

##### Parameters:
Name Type Argument Default Description
`a` Phaser.Point

The Point object to rotate.

`x` number

The x coordinate of the anchor point

`y` number

The y coordinate of the anchor point

`angle` number

The angle in radians (unless asDegrees is true) to rotate the Point by.

`asDegrees` boolean <optional>
false

Is the given angle in radians (false) or degrees (true)?

`distance` number <optional>

An optional distance constraint between the Point and the anchor.

Source:
src/geom/Point.js line 1018
##### Returns:

The modified point object.

Type
Phaser.Point

#### <static> rperp(a [, out])

Return a perpendicular vector (-90 degrees rotation)

##### Parameters:
Name Type Argument Description
`a` Phaser.Point

The Point object.

`out` Phaser.Point <optional>

Optional Point to store the value in, if not supplied a new Point object will be created.

Source:
src/geom/Point.js line 893
##### Returns:

The new Point object.

Type
Phaser.Point

#### <static> subtract(a, b [, out])

Subtracts the coordinates of two points to create a new point.

##### Parameters:
Name Type Argument Description
`a` Phaser.Point

The first Point object.

`b` Phaser.Point

The second Point object.

`out` Phaser.Point <optional>

Optional Point to store the value in, if not supplied a new Point object will be created.

Source:
src/geom/Point.js line 705
##### Returns:

The new Point object.

Type
Phaser.Point

#### <static> trunc(obj)

Truncates the x and y values, removing any fractional parts.

##### Parameters:
Name Type Description
`obj` object

The Point.

Source:
src/geom/Point.js line 1139
##### Returns:

The modified Point.

Type
object

Adds the given x and y values to this Point.

##### Parameters:
Name Type Description
`x` number

The value to add to Point.x.

`y` number

The value to add to Point.y.

Source:
src/geom/Point.js line 128
##### Returns:

This Point object. Useful for chaining method calls.

Type
Phaser.Point

#### angle(a [, asDegrees])

Returns the angle between this Point object and another object with public x and y properties.

##### Parameters:
Name Type Argument Default Description
`a` Phaser.Point | any

The object to get the angle from this Point to.

`asDegrees` boolean <optional>
false

Return a value in radians (false) or degrees (true)?

Source:
src/geom/Point.js line 367
##### Returns:

The angle, where this Point is the vertex. Within [-pi, pi] or [-180deg, 180deg].

Type
number

#### angleXY(x, y [, asDegrees])

Returns the angle between this Point object and an x-y coordinate pair.

##### Parameters:
Name Type Argument Default Description
`x` number

The x-coordinate

`y` number

The y-coordinate

`asDegrees` boolean <optional>
false

Return a value in radians (false) or degrees (true)?

Source:
src/geom/Point.js line 382
##### Returns:

The angle, where this Point is the vertex. Within [-pi, pi] or [-180deg, 180deg].

Type
number

#### atan( [asDegrees])

Returns the arctangent of this Point.

##### Parameters:
Name Type Argument Default Description
`asDegrees` boolean <optional>
false

Return a value in radians (false) or degrees (true)?

Source:
src/geom/Point.js line 407
##### Returns:

The angle, where the vertex is (0, 0). Within [-pi, pi] or [-180deg, 180deg].

Type
number

#### ceil()

Math.ceil() both the x and y properties of this Point.

Source:
src/geom/Point.js line 641
##### Returns:

This Point object.

Type
Phaser.Point

#### clamp(min, max)

Clamps this Point object values to be between the given min and max.

##### Parameters:
Name Type Description
`min` number

The minimum value to clamp this Point to.

`max` number

The maximum value to clamp this Point to.

Source:
src/geom/Point.js line 228
##### Returns:

This Point object.

Type
Phaser.Point

#### clampX(min, max)

Clamps the x value of this Point to be between the given min and max.

##### Parameters:
Name Type Description
`min` number

The minimum value to clamp this Point to.

`max` number

The maximum value to clamp this Point to.

Source:
src/geom/Point.js line 196
##### Returns:

This Point object.

Type
Phaser.Point

#### clampY(min, max)

Clamps the y value of this Point to be between the given min and max

##### Parameters:
Name Type Description
`min` number

The minimum value to clamp this Point to.

`max` number

The maximum value to clamp this Point to.

Source:
src/geom/Point.js line 212
##### Returns:

This Point object.

Type
Phaser.Point

#### clip(rect)

If this Point is not within the given object, moves it inside (at the nearest edge).

##### Parameters:
Name Type Description
`rect` any

A Phaser.Rectangle or any object with left, top, right, and bottom properties.

Source:
src/geom/Point.js line 245
##### Returns:

This Point object.

Type
Phaser.Point

#### clone( [output])

Creates a copy of the given Point.

##### Parameters:
Name Type Argument Description
`output` Phaser.Point <optional>

Optional Point object. If given the values will be set into this object, otherwise a brand new Point object will be created and returned.

Source:
src/geom/Point.js line 269
##### Returns:

The new Point object.

Type
Phaser.Point

#### copyFrom(source)

Copies the x and y properties from any given object to this Point.

##### Parameters:
Name Type Description
`source` any

The object to copy from.

Source:
src/geom/Point.js line 44
##### Returns:

This Point object.

Type
Phaser.Point

#### copyTo(dest)

Copies the x and y properties from this Point to any given object.

##### Parameters:
Name Type Description
`dest` any

The object to copy to.

Source:
src/geom/Point.js line 292

The dest object.

Type
object

#### cross(a)

The cross product of this and another Point object.

##### Parameters:
Name Type Description
`a` Phaser.Point

The Point object to get the cross product combined with this Point.

Source:
src/geom/Point.js line 575

The result.

Type
number

#### distance(dest [, round])

Returns the distance of this Point object to the given object (can be a Circle, Point or anything with x/y properties)

##### Parameters:
Name Type Argument Description
`dest` object

The target object. Must have visible x and y properties that represent the center of the object.

`round` boolean <optional>

Round the distance to the nearest integer (default false).

Source:
src/geom/Point.js line 309
##### Returns:

The distance between this Point object and the destination Point object.

Type
number

#### divide(x, y)

Divides Point.x and Point.y by the given x and y values.

##### Parameters:
Name Type Description
`x` number

The value to divide Point.x by.

`y` number

The value to divide Point.x by.

Source:
src/geom/Point.js line 179
##### Returns:

This Point object. Useful for chaining method calls.

Type
Phaser.Point

#### dot(a)

The dot product of this and another Point object.

##### Parameters:
Name Type Description
`a` Phaser.Point

The Point object to get the dot product combined with this Point.

Source:
src/geom/Point.js line 561

The result.

Type
number

#### equals(a)

Determines whether the given objects x/y values are equal to this Point object.

##### Parameters:
Name Type Description
`a` Phaser.Point | any

The object to compare with this Point.

Source:
src/geom/Point.js line 324
##### Returns:

A value of true if the x and y points are equal, otherwise false.

Type
boolean

#### equalsXY(x, y)

Determines whether a set of x-y coordinates are equal to this Point's.

##### Parameters:
Name Type Description
`x` number

The x-coordinate to compare with this Point.

`y` number

The y-coordinate to compare with this Point.

Source:
src/geom/Point.js line 338
##### Returns:

A value of true if the Point's coordinates are identical to the arguments, otherwise false.

Type
boolean

#### expand(min)

Alters the Point object so its magnitude is at least the min value.

##### Parameters:
Name Type Description
`min` number

The minimum magnitude for the Point.

Source:
src/geom/Point.js line 528
See:
##### Returns:

This Point object.

Type
Phaser.Point

#### floor()

Math.floor() both the x and y properties of this Point.

Source:
src/geom/Point.js line 628
##### Returns:

This Point object.

Type
Phaser.Point

#### getMagnitude()

Calculates the length of the Point object.

Source:
src/geom/Point.js line 448
##### Returns:

The length of the Point.

Type
number

#### getMagnitudeSq()

Calculates the length squared of the Point object.

Source:
src/geom/Point.js line 461
##### Returns:

The length ^ 2 of the Point.

Type
number

#### invert()

Inverts the x and y values of this Point

Source:
src/geom/Point.js line 58
##### Returns:

This Point object.

Type
Phaser.Point

#### isZero()

Determine if this point is at 0,0.

Source:
src/geom/Point.js line 548
##### Returns:

True if this Point is 0,0, otherwise false.

Type
boolean

#### limit(max)

Alters the Point object so its magnitude is at most the max value.

##### Parameters:
Name Type Description
`max` number

The maximum magnitude for the Point.

Source:
src/geom/Point.js line 508
See:
##### Returns:

This Point object.

Type
Phaser.Point

#### multiply(x, y)

Multiplies Point.x and Point.y by the given x and y values. Sometimes known as `Scale`.

##### Parameters:
Name Type Description
`x` number

The value to multiply Point.x by.

`y` number

The value to multiply Point.x by.

Source:
src/geom/Point.js line 162
##### Returns:

This Point object. Useful for chaining method calls.

Type
Phaser.Point

#### normalize()

Alters the Point object so that its length is 1, but it retains the same direction.

Source:
src/geom/Point.js line 488
##### Returns:

This Point object.

Type
Phaser.Point

#### normalRightHand()

Right-hand normalize (make unit length) this Point.

Source:
src/geom/Point.js line 615
##### Returns:

This Point object.

Type
Phaser.Point

#### perp()

Make this Point perpendicular (90 degrees rotation)

Source:
src/geom/Point.js line 589
##### Returns:

This Point object.

Type
Phaser.Point

#### rotate(x, y, angle [, asDegrees] [, distance])

Rotates this Point around the x/y coordinates given to the desired angle.

##### Parameters:
Name Type Argument Default Description
`x` number

The x coordinate of the anchor point.

`y` number

The y coordinate of the anchor point.

`angle` number

The angle in radians (unless asDegrees is true) to rotate the Point to.

`asDegrees` boolean <optional>
false

Is the given angle in radians (false) or degrees (true)?

`distance` number <optional>

An optional distance constraint between the Point and the anchor.

Source:
src/geom/Point.js line 430
##### Returns:

The modified point object.

Type
Phaser.Point

#### round()

Math.round() both the x and y properties of this Point.

Source:
src/geom/Point.js line 654
##### Returns:

This Point object.

Type
Phaser.Point

#### rperp()

Make this Point perpendicular (-90 degrees rotation)

Source:
src/geom/Point.js line 602
##### Returns:

This Point object.

Type
Phaser.Point

#### set(x [, y])

Sets the `x` and `y` values of this Point object to the given values. If you omit the `y` value then the `x` value will be applied to both, for example: `Point.set(2)` is the same as `Point.set(2, 2)`

Identical to setTo.

##### Parameters:
Name Type Argument Description
`x` number

The horizontal value of this point.

`y` number <optional>

The vertical value of this point. If not given the x value will be used in its place.

Source:
src/geom/Point.js line 90
##### Returns:

This Point object. Useful for chaining method calls.

Type
Phaser.Point

#### set(obj, x [, y])

Sets the `x` and `y` values of an object and returns the object.

##### Parameters:
Name Type Argument Description
`obj` object

An object with numeric x and y properties.

`x` number

The x value.

`y` number <optional>

The y value. If not given the x value will be used in its place.

Source:
src/geom/Point.js line 1170
##### Returns:

The object. Useful for chaining method calls.

Type
object

#### setMagnitude(magnitude)

Alters the length of the Point without changing the direction.

##### Parameters:
Name Type Description
`magnitude` number

The desired magnitude of the resulting Point.

Source:
src/geom/Point.js line 474
##### Returns:

This Point object.

Type
Phaser.Point

#### setTo(x [, y])

Sets the `x` and `y` values of this Point object to the given values. If you omit the `y` value then the `x` value will be applied to both, for example: `Point.setTo(2)` is the same as `Point.setTo(2, 2)`

Identical to set.

##### Parameters:
Name Type Argument Description
`x` number

The horizontal value of this point.

`y` number <optional>

The vertical value of this point. If not given the x value will be used in its place.

Source:
src/geom/Point.js line 71
##### Returns:

This Point object. Useful for chaining method calls.

Type
Phaser.Point

#### setToPolar(azimuth [, radius] [, asDegrees])

Sets the `x` and `y` values of this Point object from a given polar coordinate.

##### Parameters:
Name Type Argument Default Description
`azimuth` number

The angular coordinate, in radians (unless `asDegrees`).

`radius` number <optional>
1

The radial coordinate (length).

`asDegrees` boolean <optional>
false

True if `azimuth` is in degrees.

Source:
src/geom/Point.js line 109
##### Returns:

This Point object. Useful for chaining method calls.

Type
Phaser.Point

#### sortClockwise(points [, center])

Sorts an array of points in a clockwise direction, relative to a reference point.

The sort is clockwise relative to the display, starting from a 12 o'clock position. (In the Cartesian plane, it is anticlockwise, starting from the -y direction.)

Example sequence: (0, -1), (1, 0), (0, 1), (-1, 0)

##### Parameters:
Name Type Argument Description
`points` array

An array of Points or point-like objects (e.g., sprites).

`center` object | Phaser.Point <optional>

The reference point. If omitted, the #centroid (midpoint) of the points is used.

Source:
src/geom/Point.js line 1190
##### Returns:

The sorted array.

Type
array

#### subtract(x, y)

Subtracts the given x and y values from this Point.

##### Parameters:
Name Type Description
`x` number

The value to subtract from Point.x.

`y` number

The value to subtract from Point.y.

Source:
src/geom/Point.js line 145
##### Returns:

This Point object. Useful for chaining method calls.

Type
Phaser.Point

#### toString()

Returns a string representation of this object.

Source:
src/geom/Point.js line 667
##### Returns:

A string representation of the instance.

Type
string