Utility functions for JS Numbers.

Methods

(inner) average(numbers) → {number}

Returns the average of the numbers contained in the array numbers

Parameters:
NameTypeDescription
numbersArray.<number>
Returns:
Type: 
number

(inner) averageInc(newVal, oldAvg, n) → {number}

Returns the increase of the average of a (hypothetical) colletion when newVal would be added to the collection.

Parameters:
NameTypeDescription
newValnumber

The value to "add" to the collection

oldAvgnumber

Average of a collection

nnumber

Number of elements in the collection

Returns:
Type: 
number

(inner) backoff(attempt, base, cap) → {number}

Calculates the waiting time for attempt according to exponential backoff.

Parameters:
NameTypeDefaultDescription
attemptnumber

Number of attempt

basenumber5

Wait time for the first try

capnumber30000

Maximum waiting time

Returns:
Type: 
number

(inner) between(x, a, b, eps) → {boolean}

Returns wether x is between a and b and keeps eps distance from both of them.

Parameters:
NameTypeDescription
xnumber

The number that should be between two bounds

anumber

One bound (can be upper or lower)

bnumber

Another bound (can be upper or lower)

epsnumber

Epsilon value that indicates the distance that should be kept from the boundaries

Returns:
Type: 
boolean

(inner) clamp(x, lower, upper) → {number}

Clamps x between lower and upper, i.e. if x is smaller than lower, return lower. If it is higher than upper return upper. If x is between lower and upper, x is returned.

Parameters:
NameTypeDescription
xnumber

The number to clamp

lowernumber

The lower bound

uppernumber

The upper bound

Returns:
Type: 
number

(inner) detent(n, detent, grid, snap) → {number}

This function is useful to implement smooth transitions and snapping.

Map all values that are within detent/2 of any multiple of grid to that multiple. Otherwise, if snap is true, return self, meaning that the values in the dead zone will never be returned.

If snap is false, then expand the range between dead zone so that it covers the range between multiples of the grid, and scale the value by that factor.

Examples:

// With snapping:
num.detent(0.11, 0.2, 0.5, true) => 0.11
num.detent(0.39, 0.2, 0.5, true) => 0.39
num.detent(0.55, 0.2, 0.5, true) => 0.5
num.detent(0.61, 0.2, 0.5, true) => 0.61
// Smooth transitions without snapping:
num.detent(0.1,  0.2, 0.5) => 0
num.detent(0.11,  0.2, 0.5) => 0.0166666
num.detent(0.34,  0.2, 0.5)  => 0.4
num.detent(0.39,  0.2, 0.5) => 0.4833334
num.detent(0.4,  0.2, 0.5) => 0.5
num.detent(0.6,  0.2, 0.5) => 0.5
Parameters:
NameTypeDescription
nnumber

The number to detent

detentnumber

The width of the 'dead zone' around the grid

gridnumber

The width of the grid

snapboolean

Wether snapping is active

Returns:
Type: 
number

(inner) humanReadableByteSize(n) → {string}

Interpret n as byte size and return a more readable version. E.g. num.humanReadableByteSize(Math.pow(2,32)) returns "4096MB"

Parameters:
NameTypeDescription
nnumber

The number of bytes

Returns:
Type: 
string

(inner) interpolate(i, a, b) → {number}

Linearly interpolates between a and b to i percent.

Parameters:
NameTypeDescription
inumber

Percentage to which the interpolation is done

anumber

Start value of the interpolation

bnumber

End value of the interpolation

Returns:
Type: 
number

(inner) median(numbers) → {number}

Returns the median of the numbers contained in the array numbers

Parameters:
NameTypeDescription
numbersArray.<numbers>
Returns:
Type: 
number

(inner) normalRandom(mean, stdDev) → {number}

Returns randomized numbers in a normal distribution that can be controlled using the mean and stdDev parameters

Parameters:
NameTypeDescription
meannumber

Mean of the distribution to use

stdDevnumber

Standard deviation of the distribution to use

Returns:
Type: 
number

(inner) parseLength(string, toUnit) → {number}

This converts the length value string to pixels or the specified toUnit.

Supported units are: mm, cm, in, px, pt, pc.

Parameters:
NameTypeDescription
stringstring

A string denoting a length (e.g. '3cm')

toUnitstring

A string denoting a supported unit (e.g. 'mm')

Returns:
Type: 
number

(inner) precision(f) → {number}

Given a float value f, returns the number of decimals it has.

Parameters:
NameTypeDescription
fnumber
Returns:
Type: 
number

(inner) random(min, max) → {number}

Returns a random number between (and including) min and max.

Parameters:
NameTypeDescription
minnumber
maxnumber
Returns:
Type: 
number

(inner) randomSmallerInteger(n) → {number}

Returns a random, whole number smaller than n

Parameters:
NameTypeDescription
nnumber

Exclkusive upper bound of the number to return

Returns:
Type: 
number

(inner) roundTo(n, quantum) → {number}

Rounds a number n with quantum used as precision.

Parameters:
NameTypeDescription
nnumber

The number to round

quantumnumber

e.g. 0.01

Returns:
Type: 
number

(inner) sort(arr) → {Array.<number>}

Numerically sort an array of numbers arr. By default, JavaScripts sort() is lexically.

Parameters:
NameTypeDescription
arrArray.<number>
Returns:
Type: 
Array.<number>

(inner) toDegrees(n) → {number}

Returns n radians converted to degrees.

Parameters:
NameTypeDescription
nnumber

A value in radiants

Returns:
Type: 
number

(inner) toRadians(n) → {number}

Returns n degrees converted to radiants.

Parameters:
NameTypeDescription
nnumber

A value in degrees

Returns:
Type: 
number