Namespace goog.math

code »

Classes

goog.math.Box
Class for representing a box.
goog.math.Coordinate
Class for representing coordinates and positions.
goog.math.Rect
Class for representing rectangular regions.
goog.math.Size
Class for representing sizes consisting of a width and height.
Show:

Global Functions

code »goog.math.angle ( x1, y1, x2, y2 )number

Computes the angle between two points (x1,y1) and (x2,y2). Angle zero points in the +X direction, 90 degrees points in the +Y direction (down) and from there we grow clockwise towards 360 degrees.

Parameters
x1: number
x of first point.
y1: number
y of first point.
x2: number
x of second point.
y2: number
y of second point.
Returns
Standardized angle in degrees of the vector from x1,y1 to x2,y2.
code »goog.math.angleDifference ( startAngle, endAngle )number

Computes the difference between startAngle and endAngle (angles in degrees).

Parameters
startAngle: number
Start angle in degrees.
endAngle: number
End angle in degrees.
Returns
The number of degrees that when added to startAngle will result in endAngle. Positive numbers mean that the direction is clockwise. Negative numbers indicate a counter-clockwise direction. The shortest route (clockwise vs counter-clockwise) between the angles is used. When the difference is 180 degrees, the function returns 180 (not -180) angleDifference(30, 40) is 10, and angleDifference(40, 30) is -10. angleDifference(350, 10) is 20, and angleDifference(10, 350) is -20.
code »goog.math.angleDx ( degrees, radius )number

For a given angle and radius, finds the X portion of the offset.

Parameters
degrees: number
Angle in degrees (zero points in +X direction).
radius: number
Radius.
Returns
The x-distance for the angle and radius.
code »goog.math.angleDy ( degrees, radius )number

For a given angle and radius, finds the Y portion of the offset.

Parameters
degrees: number
Angle in degrees (zero points in +X direction).
radius: number
Radius.
Returns
The y-distance for the angle and radius.

Returns the arithmetic mean of the arguments.

Parameters
var_args: ...number
Numbers to average.
Returns
The average of the arguments (NaN if no arguments were provided or any of the arguments is not a valid number).
code »goog.math.clamp ( value, min, max )number

Takes a number and clamps it to within the provided bounds.

Parameters
value: number
The input number.
min: number
The minimum value to return.
max: number
The maximum value to return.
Returns
The input number if it is within bounds, or the nearest number within the bounds.

Returns whether the supplied number is finite and not NaN.

Parameters
num: number
The number to test.
Returns
Whether num is a finite number.

Returns whether the supplied number represents an integer, i.e. that is has no fractional component. No range-checking is performed on the number.

Parameters
num: number
The number to test.
Returns
Whether num is an integer.

Performs linear interpolation between values a and b. Returns the value between a and b proportional to x (when x is between 0 and 1. When x is outside this range, the return value is a linear extrapolation).

Parameters
a: number
A number.
b: number
A number.
x: number
The proportion between a and b.
Returns
The interpolated value between a and b.

Returns the precise value of floor(log10(num)). Simpler implementations didn't work because of floating point rounding errors. For example

  • Math.floor(Math.log(num) / Math.LN10) is off by one for num == 1e+3.
  • Math.floor(Math.log(num) * Math.LOG10E) is off by one for num == 1e+15.
  • Math.floor(Math.log10(num)) is off by one for num == 1e+15 - 1.
Parameters
num: number
A floating point number.
Returns
Its logarithm to base 10 rounded down to the nearest integer if num > 0. -Infinity if num == 0. NaN if num < 0.
code »goog.math.longestCommonSubsequence ( array1, array2, opt_compareFn, opt_collectorFn )!Array.<Object>

JavaScript implementation of Longest Common Subsequence problem. http://en.wikipedia.org/wiki/Longest_common_subsequence Returns the longest possible array that is subarray of both of given arrays.

Parameters
array1: Array.<Object>
First array of objects.
array2: Array.<Object>
Second array of objects.
opt_compareFn: Function=
Function that acts as a custom comparator for the array ojects. Function should return true if objects are equal, otherwise false.
opt_collectorFn: Function=
Function used to decide what to return as a result subsequence. It accepts 2 arguments: index of common element in the first array and index in the second. The default function returns element from the first array.
Returns
A list of objects that are common to both arrays such that there is no common subsequence with size greater than the length of the list.

The % operator in JavaScript returns the remainder of a / b, but differs from some other languages in that the result will have the same sign as the dividend. For example, -1 % 8 == -1, whereas in some other languages (such as Python) the result would be 7. This function emulates the more correct modulo behavior, which is useful for certain applications such as calculating an offset index in a circular list.

Parameters
a: number
The dividend.
b: number
The divisor.
Returns
a % b where the result is between 0 and b (either 0 <= x < b or b < x <= 0, depending on the sign of b).
code »goog.math.nearlyEquals ( a, b, opt_tolerance )boolean

Tests whether the two values are equal to each other, within a certain tolerance to adjust for floating point errors.

Parameters
a: number
A number.
b: number
A number.
opt_tolerance: number=
Optional tolerance range. Defaults to 0.000001. If specified, should be greater than 0.
Returns
Whether a and b are nearly equal.

Returns a random integer greater than or equal to 0 and less than a.

Parameters
a: number
The upper bound for the random integer (exclusive).
Returns
A random integer N such that 0 <= N < a.
code »goog.math.safeCeil ( num, opt_epsilon )number

A tweaked variant of Math.ceil. See goog.math.safeFloor for details.

Parameters
num: number
A number.
opt_epsilon: number=
An infinitesimally small positive number, the rounding error to tolerate.
Returns
The smallest integer greater than or equal to num.
code »goog.math.safeFloor ( num, opt_epsilon )number

A tweaked variant of Math.floor which tolerates if the passed number is infinitesimally smaller than the closest integer. It often happens with the results of floating point calculations because of the finite precision of the intermediate results. For example Math.floor(Math.log(1000) / Math.LN10) == 2, not 3 as one would expect.

Parameters
num: number
A number.
opt_epsilon: number=
An infinitesimally small positive number, the rounding error to tolerate.
Returns
The largest integer less than or equal to num.

Returns the unbiased sample variance of the arguments. For a definition, see e.g. http://en.wikipedia.org/wiki/Variance

Parameters
var_args: ...number
Number samples to analyze.
Returns
The unbiased sample variance of the arguments (0 if fewer than two samples were provided, or NaN if any of the samples is not a valid number).

Returns the sign of a number as per the "sign" or "signum" function.

Parameters
x: number
The number to take the sign of.
Returns
-1 when negative, 1 when positive, 0 when 0.

Normalizes an angle to be in range [0-360). Angles outside this range will be normalized to be the equivalent angle with that range.

Parameters
angle: number
Angle in degrees.
Returns
Standardized angle.

Normalizes an angle to be in range [0-2*PI). Angles outside this range will be normalized to be the equivalent angle with that range.

Parameters
angle: number
Angle in radians.
Returns
Standardized angle.

Returns the sample standard deviation of the arguments. For a definition of sample standard deviation, see e.g. http://en.wikipedia.org/wiki/Standard_deviation

Parameters
var_args: ...number
Number samples to analyze.
Returns
The sample standard deviation of the arguments (0 if fewer than two samples were provided, or NaN if any of the samples is not a valid number).
code »goog.math.sum ( var_args )number

Returns the sum of the arguments.

Parameters
var_args: ...number
Numbers to add.
Returns
The sum of the arguments (0 if no arguments were provided, NaN if any of the arguments is not a valid number).
code »goog.math.toDegrees ( angleRadians )number

Converts radians to degrees.

Parameters
angleRadians: number
Angle in radians.
Returns
Angle in degrees.
code »goog.math.toRadians ( angleDegrees )number

Converts degrees to radians.

Parameters
angleDegrees: number
Angle in degrees.
Returns
Angle in radians.

Returns a random number greater than or equal to a and less than b.

Parameters
a: number
The lower bound for the random number (inclusive).
b: number
The upper bound for the random number (exclusive).
Returns
A random number N such that a <= N < b.