new Math()
A collection of useful mathematical functions.
These are normally accessed through game.math
.
- Source - math/Math.js, line 17
- See:
Members
-
<static> DEG_TO_RAD
-
Degrees to Radians factor.
- Source - math/Math.js, line 30
Properties:
Name Type Description Phaser.Math#DEG_TO_RAD
number -
<static> PI2
-
Twice PI.
- Default Value:
- ~6.283
- Source - math/Math.js, line 24
Properties:
Name Type Description Phaser.Math#PI2
number -
<static> RAD_TO_DEG
-
Degrees to Radians factor.
- Source - math/Math.js, line 36
Properties:
Name Type Description Phaser.Math#RAD_TO_DEG
number
Methods
-
angleBetween(x1, y1, x2, y2) → {number}
-
Find the angle of a segment from (x1, y1) -> (x2, y2).
Parameters:
Name Type Description x1
number The x coordinate of the first value.
y1
number The y coordinate of the first value.
x2
number The x coordinate of the second value.
y2
number The y coordinate of the second value.
Returns:
number -The angle, in radians.
- Source - math/Math.js, line 534
-
angleBetweenPoints(point1, point2) → {number}
-
Find the angle of a segment from (point1.x, point1.y) -> (point2.x, point2.y).
Parameters:
Name Type Description point1
Phaser.Point The first point.
point2
Phaser.Point The second point.
Returns:
number -The angle between the two points, in radians.
- Source - math/Math.js, line 569
-
angleBetweenPointsY(point1, point2) → {number}
-
Find the angle of a segment from (point1.x, point1.y) -> (point2.x, point2.y).
Parameters:
Name Type Description point1
Phaser.Point point2
Phaser.Point Returns:
number -The angle, in radians.
- Source - math/Math.js, line 583
-
angleBetweenY(x1, y1, x2, y2) → {number}
-
Find the angle of a segment from (x1, y1) -> (x2, y2).
The difference between this method and Math.angleBetween is that this assumes the y coordinate travels
down the screen.Parameters:
Name Type Description x1
number The x coordinate of the first value.
y1
number The y coordinate of the first value.
x2
number The x coordinate of the second value.
y2
number The y coordinate of the second value.
Returns:
number -The angle, in radians.
- Source - math/Math.js, line 550
-
average() → {number}
-
Averages all values passed to the function and returns the result.
Returns:
number -The average of all given values.
- Source - math/Math.js, line 253
-
<internal> bernstein(n, i) → {number}
-
Parameters:
Name Type Description n
number i
number Returns:
number -- Internal:
- This member is internal (protected) and may be modified or removed in the future.
- Source - math/Math.js, line 976
-
between(min, max) → {number}
-
Returns a random integer in the range
[min, max]
. If these parameters are not in order than they will be put in order.
Default is 0 formin
and 1 formax
.Parameters:
Name Type Description min
number The minimum value. Must be a Number.
max
number The maximum value. Must be a Number.
Returns:
number -An integer between min (inclusive) and max (inclusive).
- Source - math/Math.js, line 137
-
bezierInterpolation(v, k) → {number}
-
A Bezier Interpolation Method, mostly used by Phaser.Tween.
Parameters:
Name Type Description v
Array The input array of values to interpolate between.
k
number The percentage of interpolation, between 0 and 1.
Returns:
number -The interpolated value
- Source - math/Math.js, line 899
-
<internal> catmullRom(p0, p1, p2, p3, t) → {number}
-
Calculates a catmum rom value.
Parameters:
Name Type Description p0
number p1
number p2
number p3
number t
number Returns:
number -- Internal:
- This member is internal (protected) and may be modified or removed in the future.
- Source - math/Math.js, line 1012
-
catmullRomInterpolation(v, k) → {number}
-
A Catmull Rom Interpolation Method, mostly used by Phaser.Tween.
Parameters:
Name Type Description v
Array The input array of values to interpolate between.
k
number The percentage of interpolation, between 0 and 1.
Returns:
number -The interpolated value
- Source - math/Math.js, line 921
-
ceilTo(value, place, base) → {number}
-
Ceils to some place comparative to a
base
, default is 10 for decimal place.
Theplace
is represented by the power applied tobase
to get that place.Parameters:
Name Type Argument Default Description value
number The value to round.
place
number <optional>
0 The place to round to.
base
number <optional>
10 The base to round in. Default is 10 for decimal.
Returns:
number -The rounded value.
- Source - math/Math.js, line 432
-
clamp(v, min, max) → {number}
-
Force a value within the boundaries by clamping it to the range
min
,max
.Parameters:
Name Type Description v
float The value to be clamped.
min
float The minimum bounds.
max
float The maximum bounds.
Returns:
number -The clamped value.
- Source - math/Math.js, line 1158
-
clampBottom(x, a) → {number}
-
Clamp
x
to the range[a, Infinity)
.
Roughly the same asMath.max(x, a)
, except for NaN handling.Parameters:
Name Type Description x
number a
number Returns:
number -- Source - math/Math.js, line 1184
-
degToRad(degrees) → {number}
-
Convert degrees to radians.
Parameters:
Name Type Description degrees
number Angle in degrees.
Returns:
number -Angle in radians.
- Source - math/Math.js, line 38
-
difference(a, b) → {number}
-
The absolute difference between two values.
Parameters:
Name Type Description a
number The first value to check.
b
number The second value to check.
Returns:
number -The absolute difference between the two values.
- Source - math/Math.js, line 1032
-
distance(x1, y1, x2, y2) → {number}
-
Returns the euclidian distance between the two given set of coordinates.
Parameters:
Name Type Description x1
number y1
number x2
number y2
number Returns:
number -The distance between the two sets of coordinates.
- Source - math/Math.js, line 1100
-
distancePow(x1, y1, x2, y2, pow) → {number}
-
Returns the distance between the two given set of coordinates at the power given.
Parameters:
Name Type Argument Default Description x1
number y1
number x2
number y2
number pow
number <optional>
2 Returns:
number -The distance between the two sets of coordinates.
- Source - math/Math.js, line 1139
-
distanceSq(x1, y1, x2, y2) → {number}
-
Returns the euclidean distance squared between the two given set of
coordinates (cuts out a square root operation before returning).Parameters:
Name Type Description x1
number y1
number x2
number y2
number Returns:
number -The distance squared between the two sets of coordinates.
- Source - math/Math.js, line 1119
-
factorial(value) → {number}
-
Parameters:
Name Type Description value
number the number you want to evaluate
Returns:
number -- Source - math/Math.js, line 989
-
floorTo(value, place, base) → {number}
-
Floors to some place comparative to a
base
, default is 10 for decimal place.
Theplace
is represented by the power applied tobase
to get that place.Parameters:
Name Type Argument Default Description value
number The value to round.
place
number <optional>
0 The place to round to.
base
number <optional>
10 The base to round in. Default is 10 for decimal.
Returns:
number -The rounded value.
- Source - math/Math.js, line 411
-
fuzzyCeil(val, epsilon) → {number}
-
Applies a fuzzy ceil to the given value.
Parameters:
Name Type Argument Default Description val
number The value to ceil.
epsilon
number <optional>
0.0001 The epsilon (a small value used in the calculation)
Returns:
number -ceiling(val-epsilon)
- Source - math/Math.js, line 221
-
fuzzyEqual(a, b, epsilon) → {boolean}
-
Two number are fuzzyEqual if their difference is less than epsilon.
Parameters:
Name Type Argument Default Description a
number The first number to compare.
b
number The second number to compare.
epsilon
number <optional>
0.0001 The epsilon (a small value used in the calculation)
Returns:
boolean -True if |a-b|<epsilon
- Source - math/Math.js, line 170
-
fuzzyFloor(val, epsilon) → {number}
-
Applies a fuzzy floor to the given value.
Parameters:
Name Type Argument Default Description val
number The value to floor.
epsilon
number <optional>
0.0001 The epsilon (a small value used in the calculation)
Returns:
number -floor(val+epsilon)
- Source - math/Math.js, line 237
-
fuzzyGreaterThan(a, b, epsilon) → {boolean}
-
a
is fuzzyGreaterThanb
if it is more than b - epsilon.Parameters:
Name Type Argument Default Description a
number The first number to compare.
b
number The second number to compare.
epsilon
number <optional>
0.0001 The epsilon (a small value used in the calculation)
Returns:
boolean -True if a>b+epsilon
- Source - math/Math.js, line 204
-
fuzzyLessThan(a, b, epsilon) → {boolean}
-
a
is fuzzyLessThanb
if it is less than b + epsilon.Parameters:
Name Type Argument Default Description a
number The first number to compare.
b
number The second number to compare.
epsilon
number <optional>
0.0001 The epsilon (a small value used in the calculation)
Returns:
boolean -True if a<b+epsilon
- Source - math/Math.js, line 187
-
getNextPowerOfTwo(value) → {number}
-
Given a number, this function returns the closest number that is a power of two.
This function is from the Starling Framework.Parameters:
Name Type Description value
number The value to get the closest power of two from.
Returns:
number -The closest number that is a power of two.
- Source - math/Math.js, line 64
-
getShortestAngle(angle1, angle2) → {number}
-
Gets the shortest angle between
angle1
andangle2
.
Both angles must be in the range -180 to 180, which is the same clamped
range thatsprite.angle
uses, so you can pass in two sprite angles to
this method, and get the shortest angle back between the two of them.The angle returned will be in the same range. If the returned angle is
greater than 0 then it's a counter-clockwise rotation, if < 0 then it's
a clockwise rotation.Parameters:
Name Type Description angle1
number The first angle. In the range -180 to 180.
angle2
number The second angle. In the range -180 to 180.
Returns:
number -The shortest angle, in degrees. If greater than zero it's a counter-clockwise rotation.
- Source - math/Math.js, line 504
-
isEven(n) → {boolean}
-
Returns true if the number given is even.
Parameters:
Name Type Description n
integer The number to check.
Returns:
boolean -True if the given number is even. False if the given number is odd.
- Source - math/Math.js, line 719
-
isOdd(n) → {boolean}
-
Returns true if the number given is odd.
Parameters:
Name Type Description n
integer The number to check.
Returns:
boolean -True if the given number is odd. False if the given number is even.
- Source - math/Math.js, line 705
-
isPowerOfTwo(width, height) → {boolean}
-
Checks if the given dimensions make a power of two texture.
Parameters:
Name Type Description width
number The width to check.
height
number The height to check.
Returns:
boolean -True if the width and height are a power of two.
- Source - math/Math.js, line 93
-
linear(p0, p1, t) → {number}
-
Calculates a linear (interpolation) value over t.
Parameters:
Name Type Description p0
number p1
number t
number A value between 0 and 1.
Returns:
number -- Source - math/Math.js, line 961
-
linearInterpolation(v, k) → {number}
-
A Linear Interpolation Method, mostly used by Phaser.Tween.
Parameters:
Name Type Description v
Array The input array of values to interpolate between.
k
number The percentage of interpolation, between 0 and 1.
Returns:
number -The interpolated value
- Source - math/Math.js, line 871
-
mapLinear(x, a1, a2, b1, b2) → {number}
-
Linear mapping from range
to range Parameters:
Name Type Description x
number The value to map
a1
number First endpoint of the range
a2
number Final endpoint of the range
b1
number First endpoint of the range
b2
number Final endpoint of the range
Returns:
number -- Source - math/Math.js, line 1215
-
max() → {number}
-
Variation of Math.max that can be passed either an array of numbers or the numbers as parameters.
Prefer the standard
Math.max
function when appropriate.Returns:
number -The largest value from those given.
- Source - math/Math.js, line 765
- See:
-
maxAdd(value, amount, max) → {number}
-
Adds the given amount to the value, but never lets the value go over the specified maximum.
Parameters:
Name Type Description value
number The value to add the amount to.
amount
number The amount to add to the value.
max
number The maximum the value is allowed to be.
Returns:
number -The new value.
- Source - math/Math.js, line 621
-
maxProperty() → {number}
-
Variation of Math.max that can be passed a property and either an array of objects or the objects as parameters.
It will find the largest matching property value from the given objects.Returns:
number -The largest value from those given.
- Source - math/Math.js, line 827
-
min() → {number}
-
Variation of Math.min that can be passed either an array of numbers or the numbers as parameters.
Prefer the standard
Math.min
function when appropriate.Returns:
number -The lowest value from those given.
- Source - math/Math.js, line 733
- See:
-
minProperty() → {number}
-
Variation of Math.min that can be passed a property and either an array of objects or the objects as parameters.
It will find the lowest matching property value from the given objects.Returns:
number -The lowest value from those given.
- Source - math/Math.js, line 797
-
minSub(value, amount, min) → {number}
-
Subtracts the given amount from the value, but never lets the value go below the specified minimum.
Parameters:
Name Type Description value
number The base value.
amount
number The amount to subtract from the base value.
min
number The minimum the value is allowed to be.
Returns:
number -The new value.
- Source - math/Math.js, line 636
-
normalizeAngle(angleRad) → {number}
-
Normalizes an angle to the [0,2pi) range.
Parameters:
Name Type Description angleRad
number The angle to normalize, in radians.
Returns:
number -The angle, fit within the [0,2pi] range, in radians.
- Source - math/Math.js, line 608
-
percent(a, b, base) → {number}
-
Work out what percentage value
a
is of valueb
using the given base.Parameters:
Name Type Argument Default Description a
number The value to work out the percentage for.
b
number The value you wish to get the percentage of.
base
number <optional>
0 The base value.
Returns:
number -The percentage a is of b, between 0 and 1.
- Source - math/Math.js, line 1283
-
radToDeg(radians) → {number}
-
Convert radians to degrees.
Parameters:
Name Type Description radians
number Angle in radians.
Returns:
number -Angle in degrees
- Source - math/Math.js, line 51
-
random(min, max) → {number}
-
Returns a random float in the range
[min, max)
. If these parameters are not in order than they will be put in order.
Default is 0 formin
and 1 formax
.Parameters:
Name Type Description min
number The minimum value. Must be a Number.
max
number The maximum value. Must be a Number.
Returns:
number -A floating point number between min (inclusive) and max (exclusive).
- Source - math/Math.js, line 107
-
reverseAngle(angleRad) → {number}
-
Reverses an angle.
Parameters:
Name Type Description angleRad
number The angle to reverse, in radians.
Returns:
number -The reverse angle, in radians.
- Source - math/Math.js, line 596
-
rotateToAngle(currentAngle, targetAngle, lerp) → {number}
-
Rotates currentAngle towards targetAngle, taking the shortest rotation distance.
The lerp argument is the amount to rotate by in this call.Parameters:
Name Type Argument Default Description currentAngle
number The current angle, in radians.
targetAngle
number The target angle to rotate to, in radians.
lerp
number <optional>
0.05 The lerp value to add to the current angle.
Returns:
number -The adjusted angle.
- Source - math/Math.js, line 453
-
roundAwayFromZero(value) → {integer}
-
Round to the next whole number away from zero.
Parameters:
Name Type Description value
number Any number.
Returns:
integer -The rounded value of that number.
- Source - math/Math.js, line 1046
-
roundTo(value, place, base) → {number}
-
Round to some place comparative to a
base
, default is 10 for decimal place.
Theplace
is represented by the power applied tobase
to get that place.e.g. 2000/7 ~= 285.714285714285714285714 ~= (bin)100011101.1011011011011011 roundTo(2000/7,3) === 0 roundTo(2000/7,2) == 300 roundTo(2000/7,1) == 290 roundTo(2000/7,0) == 286 roundTo(2000/7,-1) == 285.7 roundTo(2000/7,-2) == 285.71 roundTo(2000/7,-3) == 285.714 roundTo(2000/7,-4) == 285.7143 roundTo(2000/7,-5) == 285.71429 roundTo(2000/7,3,2) == 288 -- 100100000 roundTo(2000/7,2,2) == 284 -- 100011100 roundTo(2000/7,1,2) == 286 -- 100011110 roundTo(2000/7,0,2) == 286 -- 100011110 roundTo(2000/7,-1,2) == 285.5 -- 100011101.1 roundTo(2000/7,-2,2) == 285.75 -- 100011101.11 roundTo(2000/7,-3,2) == 285.75 -- 100011101.11 roundTo(2000/7,-4,2) == 285.6875 -- 100011101.1011 roundTo(2000/7,-5,2) == 285.71875 -- 100011101.10111
Note what occurs when we round to the 3rd space (8ths place), 100100000, this is to be assumed
because we are rounding 100011.1011011011011011 which rounds up.Parameters:
Name Type Argument Default Description value
number The value to round.
place
number <optional>
0 The place to round to.
base
number <optional>
10 The base to round in. Default is 10 for decimal.
Returns:
number -The rounded value.
- Source - math/Math.js, line 365
-
shear(n) → {number}
-
Parameters:
Name Type Description n
number Returns:
number -n mod 1
- Source - math/Math.js, line 274
-
sign(x) → {integer}
-
A value representing the sign of the value: -1 for negative, +1 for positive, 0 if value is 0.
This works differently from
Math.sign
for values of NaN and -0, etc.Parameters:
Name Type Description x
number Returns:
integer -An integer in {-1, 0, 1}
- Source - math/Math.js, line 1268
-
sinCosGenerator(length, sinAmplitude, cosAmplitude, frequency) → {Object}
-
Generate a sine and cosine table simultaneously and extremely quickly.
The parameters allow you to specify the length, amplitude and frequency of the wave.
This generator is fast enough to be used in real-time.
Code based on research by Franky of scene.atParameters:
Name Type Description length
number The length of the wave
sinAmplitude
number The amplitude to apply to the sine table (default 1.0) if you need values between say -+ 125 then give 125 as the value
cosAmplitude
number The amplitude to apply to the cosine table (default 1.0) if you need values between say -+ 125 then give 125 as the value
frequency
number The frequency of the sine and cosine table data
Returns:
Object -Returns the table data.
- Source - math/Math.js, line 1060
-
smootherstep(x, min, max) → {float}
-
Smootherstep function as detailed at http://en.wikipedia.org/wiki/Smoothstep
Parameters:
Name Type Description x
float The input value.
min
float The left edge. Should be smaller than the right edge.
max
float The right edge.
Returns:
float -A value between 0 and 1.
- Source - math/Math.js, line 1251
-
smoothstep(x, min, max) → {float}
-
Smoothstep function as detailed at http://en.wikipedia.org/wiki/Smoothstep
Parameters:
Name Type Description x
float The input value.
min
float The left edge. Should be smaller than the right edge.
max
float The right edge.
Returns:
float -A value between 0 and 1.
- Source - math/Math.js, line 1232
-
snapTo(input, gap, start) → {number}
-
Snap a value to nearest grid slice, using rounding.
Example: if you have an interval gap of 5 and a position of 12... you will snap to 10 whereas 14 will snap to 15.
Parameters:
Name Type Argument Default Description input
number The value to snap.
gap
number The interval gap of the grid.
start
number <optional>
0 Optional starting offset for gap.
Returns:
number -The snapped value.
- Source - math/Math.js, line 285
-
snapToCeil(input, gap, start) → {number}
-
Snap a value to nearest grid slice, using ceil.
Example: if you have an interval gap of 5 and a position of 12... you will snap to 15.
As will 14 will snap to 15... but 16 will snap to 20.Parameters:
Name Type Argument Default Description input
number The value to snap.
gap
number The interval gap of the grid.
start
number <optional>
0 Optional starting offset for gap.
Returns:
number -The snapped value.
- Source - math/Math.js, line 338
-
snapToFloor(input, gap, start) → {number}
-
Snap a value to nearest grid slice, using floor.
Example: if you have an interval gap of 5 and a position of 12... you will snap to 10.
As will 14 snap to 10... but 16 will snap to 15.Parameters:
Name Type Argument Default Description input
number The value to snap.
gap
number The interval gap of the grid.
start
number <optional>
0 Optional starting offset for gap.
Returns:
number -The snapped value.
- Source - math/Math.js, line 311
-
within(a, b, tolerance) → {boolean}
-
Checks if two values are within the given tolerance of each other.
Parameters:
Name Type Description a
number The first number to check
b
number The second number to check
tolerance
number The tolerance. Anything equal to or less than this is considered within the range.
Returns:
boolean -True if a is <= tolerance of b.
- Source - math/Math.js, line 1199
- See:
-
- Phaser.Math.fuzzyEqual
-
wrap(value, min, max) → {number}
-
Ensures that the value always stays between min and max, by wrapping the value around.
If
max
is not larger thanmin
the result is 0.Parameters:
Name Type Description value
number The value to wrap.
min
number The minimum the value is allowed to be.
max
number The maximum the value is allowed to be, should be larger than
min
.Returns:
number -The wrapped value.
- Source - math/Math.js, line 651
-
wrapAngle(angle, radians) → {number}
-
Keeps an angle value between -180 and +180; or -PI and PI if radians.
Parameters:
Name Type Argument Default Description angle
number The angle value to wrap
radians
boolean <optional>
false Set to
true
if the angle is given in radians, otherwise degrees is expected.Returns:
number -The new angle value; will be the same as the input angle if it was within bounds.
- Source - math/Math.js, line 857
-
wrapValue(value, amount, max) → {number}
-
Adds value to amount and ensures that the result always stays between 0 and max, by wrapping the value around.
Values must be positive integers, and are passed through Math.abs. See Phaser.Math#wrap for an alternative.
Parameters:
Name Type Description value
number The value to add the amount to.
amount
number The amount to add to the value.
max
number The maximum the value is allowed to be.
Returns:
number -The wrapped value.
- Source - math/Math.js, line 682