Skip to main content
Version: Phaser v3.88.2

Phaser.Math

Scope: static

Source: src/math/index.js#L10

Static functions

Static functions

Average

<static> Average(values)

Description:

Calculate the mean average of the given values.

Parameters:

nametypeoptionaldescription
valuesArray.<number>NoThe values to average.

Returns: number - The average value.

Source: src/math/Average.js#L7
Since: 3.0.0


Bernstein

<static> Bernstein(n, i)

Description:

Calculates the Bernstein basis from the three factorial coefficients.

Parameters:

nametypeoptionaldescription
nnumberNoThe first value.
inumberNoThe second value.

Returns: number - The Bernstein basis of Factorial(n) / Factorial(i) / Factorial(n - i)

Source: src/math/Bernstein.js#L9
Since: 3.0.0


Between

<static> Between(min, max)

Description:

Compute a random integer between the min and max values, inclusive.

Parameters:

nametypeoptionaldescription
minnumberNoThe minimum value.
maxnumberNoThe maximum value.

Returns: number - The random integer.

Source: src/math/Between.js#L7
Since: 3.0.0


CatmullRom

<static> CatmullRom(t, p0, p1, p2, p3)

Description:

Calculates a Catmull-Rom value from the given points, based on an alpha of 0.5.

Parameters:

nametypeoptionaldescription
tnumberNoThe amount to interpolate by.
p0numberNoThe first control point.
p1numberNoThe second control point.
p2numberNoThe third control point.
p3numberNoThe fourth control point.

Returns: number - The Catmull-Rom value.

Source: src/math/CatmullRom.js#L7
Since: 3.0.0


CeilTo

<static> CeilTo(value, [place], [base])

Description:

Ceils to some place comparative to a base, default is 10 for decimal place.

The place is represented by the power applied to base to get that place.

Parameters:

nametypeoptionaldefaultdescription
valuenumberNoThe value to round.
placenumberYes0The place to round to.
basenumberYes10The base to round in. Default is 10 for decimal.

Returns: number - The rounded value.

Source: src/math/CeilTo.js#L7
Since: 3.0.0


Clamp

<static> Clamp(value, min, max)

Description:

Force a value within the boundaries by clamping it to the range min, max.

Parameters:

nametypeoptionaldescription
valuenumberNoThe value to be clamped.
minnumberNoThe minimum bounds.
maxnumberNoThe maximum bounds.

Returns: number - The clamped value.

Source: src/math/Clamp.js#L7
Since: 3.0.0


DegToRad

<static> DegToRad(degrees)

Description:

Convert the given angle from degrees, to the equivalent angle in radians.

Parameters:

nametypeoptionaldescription
degreesnumberNoThe angle (in degrees) to convert to radians.

Returns: number - The given angle converted to radians.

Source: src/math/DegToRad.js#L9
Since: 3.0.0


Difference

<static> Difference(a, b)

Description:

Calculates the positive difference of two given numbers.

Parameters:

nametypeoptionaldescription
anumberNoThe first number in the calculation.
bnumberNoThe second number in the calculation.

Returns: number - The positive difference of the two given numbers.

Source: src/math/Difference.js#L7
Since: 3.0.0


Factorial

<static> Factorial(value)

Description:

Calculates the factorial of a given number for integer values greater than 0.

Parameters:

nametypeoptionaldescription
valuenumberNoA positive integer to calculate the factorial of.

Returns: number - The factorial of the given number.

Source: src/math/Factorial.js#L7
Since: 3.0.0


FloatBetween

<static> FloatBetween(min, max)

Description:

Generate a random floating point number between the two given bounds, minimum inclusive, maximum exclusive.

Parameters:

nametypeoptionaldescription
minnumberNoThe lower bound for the float, inclusive.
maxnumberNoThe upper bound for the float exclusive.

Returns: number - A random float within the given range.

Source: src/math/FloatBetween.js#L7
Since: 3.0.0


FloorTo

<static> FloorTo(value, [place], [base])

Description:

Floors to some place comparative to a base, default is 10 for decimal place.

The place is represented by the power applied to base to get that place.

Parameters:

nametypeoptionaldefaultdescription
valuenumberNoThe value to round.
placenumberYes0The place to round to.
basenumberYes10The base to round in. Default is 10 for decimal.

Returns: number - The rounded value.

Source: src/math/FloorTo.js#L7
Since: 3.0.0


FromPercent

<static> FromPercent(percent, min, [max])

Description:

Return a value based on the range between min and max and the percentage given.

Parameters:

nametypeoptionaldescription
percentnumberNoA value between 0 and 1 representing the percentage.
minnumberNoThe minimum value.
maxnumberYesThe maximum value.

Returns: number - The value that is percent percent between min and max.

Source: src/math/FromPercent.js#L9
Since: 3.0.0


GetSpeed

<static> GetSpeed(distance, time)

Description:

Calculate a per-ms speed from a distance and time (given in seconds).

Parameters:

nametypeoptionaldescription
distancenumberNoThe distance.
timenumberNoThe time, in seconds.

Returns: number - The speed, in distance per ms.

Source: src/math/GetSpeed.js#L7
Since: 3.0.0


IsEven

<static> IsEven(value)

Description:

Check if a given value is an even number.

Parameters:

nametypeoptionaldescription
valuenumberNoThe number to perform the check with.

Returns: boolean - Whether the number is even or not.

Source: src/math/IsEven.js#L7
Since: 3.0.0


IsEvenStrict

<static> IsEvenStrict(value)

Description:

Check if a given value is an even number using a strict type check.

Parameters:

nametypeoptionaldescription
valuenumberNoThe number to perform the check with.

Returns: boolean - Whether the number is even or not.

Source: src/math/IsEvenStrict.js#L7
Since: 3.0.0


Linear

<static> Linear(p0, p1, t)

Description:

Calculates a linear (interpolation) value over t.

Parameters:

nametypeoptionaldescription
p0numberNoThe first point.
p1numberNoThe second point.
tnumberNoThe percentage between p0 and p1 to return, represented as a number between 0 and 1.

Returns: number - The step t% of the way between p0 and p1.

Source: src/math/Linear.js#L7
Since: 3.0.0


LinearXY

<static> LinearXY(vector1, vector2, [t])

Description:

Interpolates two given Vectors and returns a new Vector between them.

Does not modify either of the passed Vectors.

Parameters:

nametypeoptionaldefaultdescription
vector1Phaser.Math.Vector2NoStarting vector
vector2Phaser.Math.Vector2NoEnding vector
tnumberYes0The percentage between vector1 and vector2 to return, represented as a number between 0 and 1.

Returns: Phaser.Math.Vector2 - The step t% of the way between vector1 and vector2.

Source: src/math/LinearXY.js#L7
Since: 3.60.0


MaxAdd

<static> MaxAdd(value, amount, max)

Description:

Add an amount to a value, limiting the maximum result to max.

Parameters:

nametypeoptionaldescription
valuenumberNoThe value to add to.
amountnumberNoThe amount to add.
maxnumberNoThe maximum value to return.

Returns: number - The resulting value.

Source: src/math/MaxAdd.js#L7
Since: 3.0.0


Median

<static> Median(values)

Description:

Calculate the median of the given values. The values are sorted and the middle value is returned.

In case of an even number of values, the average of the two middle values is returned.

Parameters:

nametypeoptionaldescription
valuesArray.<number>NoThe values to average.

Returns: number - The median value.

Source: src/math/Median.js#L7
Since: 3.54.0


MinSub

<static> MinSub(value, amount, min)

Description:

Subtract an amount from value, limiting the minimum result to min.

Parameters:

nametypeoptionaldescription
valuenumberNoThe value to subtract from.
amountnumberNoThe amount to subtract.
minnumberNoThe minimum value to return.

Returns: number - The resulting value.

Source: src/math/MinSub.js#L7
Since: 3.0.0


Percent

<static> Percent(value, min, [max], [upperMax])

Description:

Work out what percentage value is of the range between min and max.

If max isn't given then it will return the percentage of value to min.

You can optionally specify an upperMax value, which is a mid-way point in the range that represents 100%, after which the % starts to go down to zero again.

Parameters:

nametypeoptionaldescription
valuenumberNoThe value to determine the percentage of.
minnumberNoThe minimum value.
maxnumberYesThe maximum value.
upperMaxnumberYesThe mid-way point in the range that represents 100%.

Returns: number - A value between 0 and 1 representing the percentage.

Source: src/math/Percent.js#L7
Since: 3.0.0


RadToDeg

<static> RadToDeg(radians)

Description:

Convert the given angle in radians, to the equivalent angle in degrees.

Parameters:

nametypeoptionaldescription
radiansnumberNoThe angle in radians to convert ot degrees.

Returns: number - The given angle converted to degrees.

Source: src/math/RadToDeg.js#L9
Since: 3.0.0


RandomXY

<static> RandomXY(vector, [scale])

Description:

Compute a random unit vector.

Computes random values for the given vector between -1 and 1 that can be used to represent a direction.

Optionally accepts a scale value to scale the resulting vector by.

Parameters:

nametypeoptionaldefaultdescription
vectorPhaser.Math.Vector2NoThe Vector to compute random values for.
scalenumberYes1The scale of the random values.

Returns: Phaser.Math.Vector2 - The given Vector.

Source: src/math/RandomXY.js#L7
Since: 3.0.0


RandomXYZ

<static> RandomXYZ(vec3, [radius])

Description:

Compute a random position vector in a spherical area, optionally defined by the given radius.

Parameters:

nametypeoptionaldefaultdescription
vec3Phaser.Math.Vector3NoThe Vector to compute random values for.
radiusnumberYes1The radius.

Returns: Phaser.Math.Vector3 - The given Vector.

Source: src/math/RandomXYZ.js#L7
Since: 3.0.0


RandomXYZW

<static> RandomXYZW(vec4, [scale])

Description:

Compute a random four-dimensional vector.

Parameters:

nametypeoptionaldefaultdescription
vec4Phaser.Math.Vector4NoThe Vector to compute random values for.
scalenumberYes1The scale of the random values.

Returns: Phaser.Math.Vector4 - The given Vector.

Source: src/math/RandomXYZW.js#L7
Since: 3.0.0


Rotate

<static> Rotate(point, angle)

Description:

Rotate a given point by a given angle around the origin (0, 0), in an anti-clockwise direction.

Parameters:

nametypeoptionaldescription
pointPhaser.Geom.Point | objectNoThe point to be rotated.
anglenumberNoThe angle to be rotated by in an anticlockwise direction.

Returns: Phaser.Geom.Point - The given point, rotated by the given angle in an anticlockwise direction.

Source: src/math/Rotate.js#L7
Since: 3.0.0


RotateAround

<static> RotateAround(point, x, y, angle)

Description:

Rotate a point around x and y to the given angle, at the same distance.

In polar notation, this maps a point from (r, t) to (r, angle), vs. the origin (x, y).

Tags:

  • generic

Parameters:

nametypeoptionaldescription
pointPhaser.Geom.Point | objectNoThe point to be rotated.
xnumberNoThe horizontal coordinate to rotate around.
ynumberNoThe vertical coordinate to rotate around.
anglenumberNoThe angle of rotation in radians.

Returns: Phaser.Types.Math.Vector2Like - The given point.

Source: src/math/RotateAround.js#L7
Since: 3.0.0


RotateAroundDistance

<static> RotateAroundDistance(point, x, y, angle, distance)

Description:

Rotate a point around x and y by the given angle and distance.

In polar notation, this maps a point from (r, t) to (distance, t + angle), vs. the origin (x, y).

Tags:

  • generic

Parameters:

nametypeoptionaldescription
pointPhaser.Geom.Point | objectNoThe point to be rotated.
xnumberNoThe horizontal coordinate to rotate around.
ynumberNoThe vertical coordinate to rotate around.
anglenumberNoThe angle of rotation in radians.
distancenumberNoThe distance from (x, y) to place the point at.

Returns: Phaser.Types.Math.Vector2Like - The given point.

Source: src/math/RotateAroundDistance.js#L7
Since: 3.0.0


RotateTo

<static> RotateTo(point, x, y, angle, distance)

Description:

Position a point at the given angle and distance to (x, y).

Tags:

  • generic

Parameters:

nametypeoptionaldescription
pointPhaser.Types.Math.Vector2LikeNoThe point to be positioned.
xnumberNoThe horizontal coordinate to position from.
ynumberNoThe vertical coordinate to position from.
anglenumberNoThe angle of rotation in radians.
distancenumberNoThe distance from (x, y) to place the point at.

Returns: Phaser.Types.Math.Vector2Like - The given point.

Source: src/math/RotateTo.js#L7
Since: 3.24.0


RotateVec3

<static> RotateVec3(vec, axis, radians)

Description:

Rotates a vector in place by axis angle.

This is the same as transforming a point by an

axis-angle quaternion, but it has higher precision.

Parameters:

nametypeoptionaldescription
vecPhaser.Math.Vector3NoThe vector to be rotated.
axisPhaser.Math.Vector3NoThe axis to rotate around.
radiansnumberNoThe angle of rotation in radians.

Returns: Phaser.Math.Vector3 - The given vector.

Source: src/math/RotateVec3.js#L15
Since: 3.0.0


RoundAwayFromZero

<static> RoundAwayFromZero(value)

Description:

Round a given number so it is further away from zero. That is, positive numbers are rounded up, and negative numbers are rounded down.

Parameters:

nametypeoptionaldescription
valuenumberNoThe number to round.

Returns: number - The rounded number, rounded away from zero.

Source: src/math/RoundAwayFromZero.js#L7
Since: 3.0.0


RoundTo

<static> RoundTo(value, [place], [base])

Description:

Round a value to the given precision.

For example:


RoundTo(123.456, 0) = 123

RoundTo(123.456, 1) = 120

RoundTo(123.456, 2) = 100

To round the decimal, i.e. to round to precision, pass in a negative place:


RoundTo(123.456789, 0) = 123

RoundTo(123.456789, -1) = 123.5

RoundTo(123.456789, -2) = 123.46

RoundTo(123.456789, -3) = 123.457

Parameters:

nametypeoptionaldefaultdescription
valuenumberNoThe value to round.
placenumberYes0The place to round to. Positive to round the units, negative to round the decimal.
basenumberYes10The base to round in. Default is 10 for decimal.

Returns: number - The rounded value.

Source: src/math/RoundTo.js#L7
Since: 3.0.0


SinCosTableGenerator

<static> SinCosTableGenerator(length, [sinAmp], [cosAmp], [frequency])

Description:

Generate a series of sine and cosine values.

Parameters:

nametypeoptionaldefaultdescription
lengthnumberNoThe number of values to generate.
sinAmpnumberYes1The sine value amplitude.
cosAmpnumberYes1The cosine value amplitude.
frequencynumberYes1The frequency of the values.

Returns: Phaser.Types.Math.SinCosTable - The generated values.

Source: src/math/SinCosTableGenerator.js#L7
Since: 3.0.0


SmootherStep

<static> SmootherStep(x, min, max)

Description:

Calculate a smoother interpolation percentage of x between min and max.

The function receives the number x as an argument and returns 0 if x is less than or equal to the left edge,

1 if x is greater than or equal to the right edge, and smoothly interpolates, using a Hermite polynomial,

between 0 and 1 otherwise.

Produces an even smoother interpolation than Phaser.Math.SmoothStep.

Parameters:

nametypeoptionaldescription
xnumberNoThe input value.
minnumberNoThe minimum value, also known as the 'left edge', assumed smaller than the 'right edge'.
maxnumberNoThe maximum value, also known as the 'right edge', assumed greater than the 'left edge'.

Returns: number - The percentage of interpolation, between 0 and 1.

Source: src/math/SmootherStep.js#L7
Since: 3.0.0


SmoothStep

<static> SmoothStep(x, min, max)

Description:

Calculate a smooth interpolation percentage of x between min and max.

The function receives the number x as an argument and returns 0 if x is less than or equal to the left edge,

1 if x is greater than or equal to the right edge, and smoothly interpolates, using a Hermite polynomial,

between 0 and 1 otherwise.

Parameters:

nametypeoptionaldescription
xnumberNoThe input value.
minnumberNoThe minimum value, also known as the 'left edge', assumed smaller than the 'right edge'.
maxnumberNoThe maximum value, also known as the 'right edge', assumed greater than the 'left edge'.

Returns: number - The percentage of interpolation, between 0 and 1.

Source: src/math/SmoothStep.js#L7
Since: 3.0.0


ToXY

<static> ToXY(index, width, height, [out])

Description:

Returns a Vector2 containing the x and y position of the given index in a width x height sized grid.

For example, in a 6 x 4 grid, index 16 would equal x: 4 y: 2.

If the given index is out of range an empty Vector2 is returned.

Parameters:

nametypeoptionaldescription
indexnumberNoThe position within the grid to get the x/y value for.
widthnumberNoThe width of the grid.
heightnumberNoThe height of the grid.
outPhaser.Math.Vector2YesAn optional Vector2 to store the result in. If not given, a new Vector2 instance will be created.

Returns: Phaser.Math.Vector2 - A Vector2 where the x and y properties contain the given grid index.

Source: src/math/ToXY.js#L9
Since: 3.19.0


TransformXY

<static> TransformXY(x, y, positionX, positionY, rotation, scaleX, scaleY, [output])

Description:

Takes the x and y coordinates and transforms them into the same space as

defined by the position, rotation and scale values.

Parameters:

nametypeoptionaldescription
xnumberNoThe x coordinate to be transformed.
ynumberNoThe y coordinate to be transformed.
positionXnumberNoHorizontal position of the transform point.
positionYnumberNoVertical position of the transform point.
rotationnumberNoRotation of the transform point, in radians.
scaleXnumberNoHorizontal scale of the transform point.
scaleYnumberNoVertical scale of the transform point.
outputPhaser.Math.Vector2 | Phaser.Geom.PointobjectYes

Returns: Phaser.Math.Vector2, Phaser.Geom.Point, object - The translated point.

Source: src/math/TransformXY.js#L9
Since: 3.0.0


Within

<static> Within(a, b, tolerance)

Description:

Checks if the two values are within the given tolerance of each other.

Parameters:

nametypeoptionaldescription
anumberNoThe first value to use in the calculation.
bnumberNoThe second value to use in the calculation.
tolerancenumberNoThe tolerance. Anything equal to or less than this value is considered as being within range.

Returns: boolean - Returns true if a is less than or equal to the tolerance of b.

Source: src/math/Within.js#L7
Since: 3.0.0


Wrap

<static> Wrap(value, min, max)

Description:

Wrap the given value between min and max.

Parameters:

nametypeoptionaldescription
valuenumberNoThe value to wrap.
minnumberNoThe minimum value.
maxnumberNoThe maximum value.

Returns: number - The wrapped value.

Source: src/math/Wrap.js#L7
Since: 3.0.0


Static functions

Static functions

DEG_TO_RAD

DEG_TO_RAD: number

Description:

For converting degrees to radians (PI / 180)

Source: src/math/const.js#L40
Since: 3.0.0


EPSILON

EPSILON: number

Description:

An epsilon value (1.0e-6)

Source: src/math/const.js#L31
Since: 3.0.0


MAX_SAFE_INTEGER

MAX_SAFE_INTEGER: number

Description:

The maximum safe integer this browser supports.

We use a const for backward compatibility with Internet Explorer.

Source: src/math/const.js#L78
Since: 3.21.0


MIN_SAFE_INTEGER

MIN_SAFE_INTEGER: number

Description:

The minimum safe integer this browser supports.

We use a const for backward compatibility with Internet Explorer.

Source: src/math/const.js#L68
Since: 3.21.0


PI2

PI2: number

Description:

The value of PI * 2.

Source: src/math/const.js#L9
Since: 3.0.0


RAD_TO_DEG

RAD_TO_DEG: number

Description:

For converting radians to degrees (180 / PI)

Source: src/math/const.js#L49
Since: 3.0.0


RND

RND: Phaser.Math.RandomDataGenerator

Description:

An instance of the Random Number Generator.

This is not set until the Game boots.

Source: src/math/const.js#L58
Since: 3.0.0


TAU

TAU: number

Description:

The value of PI * 0.5.

Yes, we understand that this should actually be PI * 2, but

it has been like this for so long we can't change it now.

If you need PI * 2, use the PI2 constant instead.

Source: src/math/const.js#L18
Since: 3.0.0