Math
Class: Phaser.Math
Constructor
new Math()
A collection of useful mathematical functions.
These are normally accessed through game.math
.
- Source code: math/Math.js (Line 17)
- See
Public Properties
- Default Value
- ~6.283
- Source code: math/Math.js (Line 24)
<static> PI2
Twice PI.
Properties:
Name | Type | Description |
---|---|---|
Phaser.Math#PI2 | number |
Public Methods
- Source code: math/Math.js (Line 404)
- Source code: math/Math.js (Line 439)
- Source code: math/Math.js (Line 453)
- Source code: math/Math.js (Line 420)
- Source code: math/Math.js (Line 123)
- Internal:
- This member is internal (protected) and may be modified or removed in the future.
- Source code: math/Math.js (Line 846)
- Source code: math/Math.js (Line 26)
- Source code: math/Math.js (Line 769)
- Internal:
- This member is internal (protected) and may be modified or removed in the future.
- Source code: math/Math.js (Line 882)
- Source code: math/Math.js (Line 791)
- Source code: math/Math.js (Line 302)
- Source code: math/Math.js (Line 1028)
- Source code: math/Math.js (Line 1054)
- Source code: math/Math.js (Line 1186)
- Source code: math/Math.js (Line 902)
- Source code: math/Math.js (Line 970)
- Source code: math/Math.js (Line 1009)
- Source code: math/Math.js (Line 989)
- Source code: math/Math.js (Line 859)
- Source code: math/Math.js (Line 281)
- Source code: math/Math.js (Line 91)
- Source code: math/Math.js (Line 40)
- Source code: math/Math.js (Line 107)
- Source code: math/Math.js (Line 74)
- Source code: math/Math.js (Line 57)
- Source code: math/Math.js (Line 374)
- Source code: math/Math.js (Line 589)
- Source code: math/Math.js (Line 575)
- Source code: math/Math.js (Line 831)
- Source code: math/Math.js (Line 741)
- Source code: math/Math.js (Line 1085)
- Source code: math/Math.js (Line 635)
- See
- Source code: math/Math.js (Line 491)
- Source code: math/Math.js (Line 697)
- Source code: math/Math.js (Line 603)
- See
- Source code: math/Math.js (Line 667)
- Source code: math/Math.js (Line 506)
- Source code: math/Math.js (Line 478)
- Source code: math/Math.js (Line 1153)
- Source code: math/Math.js (Line 1197)
- Source code: math/Math.js (Line 466)
- Source code: math/Math.js (Line 323)
- Source code: math/Math.js (Line 916)
- Source code: math/Math.js (Line 235)
- Source code: math/Math.js (Line 144)
- Source code: math/Math.js (Line 1138)
- Source code: math/Math.js (Line 930)
- Source code: math/Math.js (Line 1121)
- Source code: math/Math.js (Line 1102)
- Source code: math/Math.js (Line 155)
- Source code: math/Math.js (Line 208)
- Source code: math/Math.js (Line 181)
- Source code: math/Math.js (Line 1069)
- See
-
- Phaser.Math.fuzzyEqual
- Source code: math/Math.js (Line 521)
- Source code: math/Math.js (Line 727)
- Source code: math/Math.js (Line 552)
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
The angle, in radians.
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
The angle between the two points, in radians.
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
The angle, in radians.
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
The angle, in radians.
average() → {number}
Averages all values passed to the function and returns the result.
Returns
The average of all given values.
<internal> bernstein(n, i) → {number}
Parameters
Name | Type | Description |
---|---|---|
n | number | |
i | number |
Returns
between(min, max) → {number}
Returns a number between the min
and max
values.
Parameters
Name | Type | Description |
---|---|---|
min | number | The minimum value. Must be positive, and less than 'max'. |
max | number | The maximum value. Must be position, and greater than 'min'. |
Returns
A value between the range min to max.
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
The interpolated value
<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
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
The interpolated value
ceilTo(value, place, base) → {number}
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
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
The rounded value.
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
The clamped value.
clampBottom(x, a) → {number}
Clamp x
to the range [a, Infinity)
.
Roughly the same as Math.max(x, a)
, except for NaN handling.
Parameters
Name | Type | Description |
---|---|---|
x | number | |
a | number |
Returns
degToRad(degrees) → {number}
Convert degrees to radians.
Parameters
Name | Type | Description |
---|---|---|
degrees | number | Angle in degrees. |
Returns
Angle in radians.
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
The absolute difference between the two values.
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
The distance between the two sets of coordinates.
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
The distance between the two sets of coordinates.
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
The distance squared between the two sets of coordinates.
factorial(value) → {number}
Parameters
Name | Type | Description |
---|---|---|
value | number | the number you want to evaluate |
Returns
floorTo(value, place, base) → {number}
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
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
The rounded value.
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
ceiling(val-epsilon)
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
True if | a-b | <epsilon
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
floor(val+epsilon)
fuzzyGreaterThan(a, b, epsilon) → {boolean}
a
is fuzzyGreaterThan b
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
True if a>b+epsilon
fuzzyLessThan(a, b, epsilon) → {boolean}
a
is fuzzyLessThan b
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
True if a<b+epsilon
getShortestAngle(angle1, angle2) → {number}
Gets the shortest angle between angle1
and angle2
.
Both angles must be in the range -180 to 180, which is the same clamped
range that sprite.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
The shortest angle, in degrees. If greater than zero it's a counter-clockwise rotation.
isEven(n) → {boolean}
Returns true if the number given is even.
Parameters
Name | Type | Description |
---|---|---|
n | integer | The number to check. |
Returns
True if the given number is even. False if the given number is odd.
isOdd(n) → {boolean}
Returns true if the number given is odd.
Parameters
Name | Type | Description |
---|---|---|
n | integer | The number to check. |
Returns
True if the given number is odd. False if the given number is even.
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
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
The interpolated value
mapLinear(x, a1, a2, b1, b2) → {number}
Linear mapping from 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
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
The largest value from those given.
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
The new value.
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
The largest value from those given.
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
The lowest value from those given.
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
The lowest value from those given.
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
The new value.
normalizeAngle(angleRad) → {number}
Normalizes an angle to the [0,2pi) range.
Parameters
Name | Type | Description |
---|---|---|
angleRad | number | The angle to normalize, in radians. |
Returns
The angle, fit within the [0,2pi] range, in radians.
percent(a, b, base) → {number}
Work out what percentage value a
is of value b
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
The percentage a is of b, between 0 and 1.
radToDeg(radians) → {number}
Convert radians to degrees.
Parameters
Name | Type | Description |
---|---|---|
radians | number | Angle in radians. |
Returns
Angle in degrees
reverseAngle(angleRad) → {number}
Reverses an angle.
Parameters
Name | Type | Description |
---|---|---|
angleRad | number | The angle to reverse, in radians. |
Returns
The reverse angle, in radians.
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
The adjusted angle.
roundAwayFromZero(value) → {integer}
Round to the next whole number away from zero.
Parameters
Name | Type | Description |
---|---|---|
value | number | Any number. |
Returns
The rounded value of that number.
roundTo(value, place, base) → {number}
Round 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.
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
The rounded value.
shear(n) → {number}
Parameters
Name | Type | Description |
---|---|---|
n | number |
Returns
n mod 1
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
An integer in {-1, 0, 1}
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.at
Parameters
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
Returns the table data.
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
A value between 0 and 1.
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
A value between 0 and 1.
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
The snapped value.
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
The snapped value.
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
The snapped value.
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
True if a is <= tolerance of b.
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 than min
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 |
Returns
The wrapped value.
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 |
Returns
The new angle value; will be the same as the input angle if it was within bounds.
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
The wrapped value.
© 2016 Richard Davey, Photon Storm Ltd.
Licensed under the MIT License.
http://phaser.io/docs/2.6.2/Phaser.Math.html