Skip to main content

Class: MathUtils

Defined in: src/sdk/math/MathUtils.ts:13

A utitlity class for basic math.

Constructors​

Constructor​

new MathUtils(): MathUtils

Returns​

MathUtils

Properties​

HALF_PI​

readonly static HALF_PI: number

Defined in: src/sdk/math/MathUtils.ts:18

One half the value of pi.


QUARTER_PI​

readonly static QUARTER_PI: number

Defined in: src/sdk/math/MathUtils.ts:24

One quarter the value of pi.


SIXTH_PI​

readonly static SIXTH_PI: number

Defined in: src/sdk/math/MathUtils.ts:27

One sixth the value of pi.


SQRT1_3​

readonly static SQRT1_3: number

Defined in: src/sdk/math/MathUtils.ts:33

Square root of 1/3.


SQRT3​

readonly static SQRT3: number

Defined in: src/sdk/math/MathUtils.ts:30

Square root of 3.


THIRD_PI​

readonly static THIRD_PI: number

Defined in: src/sdk/math/MathUtils.ts:21

One third the value of pi.


TWO_PI​

readonly static TWO_PI: number

Defined in: src/sdk/math/MathUtils.ts:15

Twice the value of pi.

Methods​

angularDistance()​

static angularDistance(startRadians, endRadians, direction): number

Defined in: src/sdk/math/MathUtils.ts:109

Gets the angular distance, in radians, swept from an starting angle to an ending angle.

Parameters​

ParameterTypeDescription
startRadiansnumberThe starting angle, in radians.
endRadiansnumberThe ending angle, in radians.
directionnumberThe direction to sweep from start to end. A positive value indicates sweeping in the direction of increasing angle. A negative value indicates sweeping in the direction of decreasing angle. A value of zero indicates that the direction should be chosen to produce the smallest angular distance.

Returns​

number

The angular distance, in radians, swept from the specified starting angle to the ending angle in the specified direction.


angularDistanceDeg()​

static angularDistanceDeg(startDegrees, endDegrees, direction): number

Defined in: src/sdk/math/MathUtils.ts:125

Gets the angular distance, in degrees, swept from an starting angle to an ending angle.

Parameters​

ParameterTypeDescription
startDegreesnumberThe starting angle, in degrees.
endDegreesnumberThe ending angle, in degrees.
directionnumberThe direction to sweep from start to end. A positive value indicates sweeping in the direction of increasing angle. A negative value indicates sweeping in the direction of decreasing angle. A value of zero indicates that the direction should be chosen to produce the smallest angular distance.

Returns​

number

The angular distance, in degrees, swept from the specified starting angle to the ending angle in the specified direction.


ceil()​

static ceil(value, precision): number

Defined in: src/sdk/math/MathUtils.ts:63

Ceils a number.

Parameters​

ParameterTypeDefault valueDescription
valuenumberundefinedThe number to ceil.
precisionnumber1The precision with which to ceil. Defaults to 1.

Returns​

number

The ceiled number.


clamp()​

static clamp(value, min, max): number

Defined in: src/sdk/math/MathUtils.ts:43

Clamps a numerical value to the min/max range.

Parameters​

ParameterTypeDescription
valuenumberThe value to be clamped.
minnumberThe minimum.
maxnumberThe maximum.

Returns​

number

The clamped numerical value..


diffAngle()​

static diffAngle(start, end, directional): number

Defined in: src/sdk/math/MathUtils.ts:141

Calculates the angular difference between two angles in the range [0, 2 * pi). The calculation supports both directional and non-directional differences. The directional difference is the angle swept from the start angle to the end angle proceeding in the direction of increasing angle. The non-directional difference is the smaller of the two angles swept from the start angle to the end angle proceeding in either direction.

Parameters​

ParameterTypeDefault valueDescription
startnumberundefinedThe starting angle, in radians.
endnumberundefinedThe ending angle, in radians.
directionalbooleantrueWhether to calculate the directional difference. Defaults to true.

Returns​

number

The angular difference between the two angles, in radians, in the range [0, 2 * pi).


diffAngleDeg()​

static diffAngleDeg(start, end, directional): number

Defined in: src/sdk/math/MathUtils.ts:155

Calculates the angular difference between two angles in the range [0, 360). The calculation supports both directional and non-directional differences. The directional difference is the angle swept from the start angle to the end angle proceeding in the direction of increasing angle. The non-directional difference is the smaller of the two angles swept from the start angle to the end angle proceeding in either direction.

Parameters​

ParameterTypeDefault valueDescription
startnumberundefinedThe starting angle, in degrees.
endnumberundefinedThe ending angle, in degrees.
directionalbooleantrueWhether to calculate the directional difference. Defaults to true.

Returns​

number

The angular difference between the two angles, in degrees, in the range [0, 360).


driveExp()​

static driveExp(initialValue, targetValue, timeConstant, dt): number

Defined in: src/sdk/math/MathUtils.ts:251

Drives an initial value toward a target value via an exponential decay curve over a period of time.

Parameters​

ParameterTypeDescription
initialValuenumberThe initial value.
targetValuenumberThe target value.
timeConstantnumberThe exponential decay time constant, in the same units as dt. Must be a positive number.
dtnumberThe amount of time over which to drive the value.

Returns​

number

The final driven value after the specified amount of time has elapsed.


driveLinear()​

static driveLinear(initialValue, targetValue, rate, dt, clampStart, clampEnd): number

Defined in: src/sdk/math/MathUtils.ts:227

Drives an initial value toward a target value linearly over a period of time.

Parameters​

ParameterTypeDefault valueDescription
initialValuenumberundefinedThe initial value.
targetValuenumberundefinedThe target value.
ratenumberundefinedThe rate at which to drive the value, in the same units as dt.
dtnumberundefinedThe amount of time over which to drive the value.
clampStartbooleantrueWhether to clamp the driven value such that it cannot be driven in the opposite direction from the target value. Defaults to true.
clampEndbooleantrueWhether to clamp the driven value such that it cannot be driven past the target value. Defaults to true.

Returns​

number

The final driven value after the specified amount of time has elapsed.


floor()​

static floor(value, precision): number

Defined in: src/sdk/math/MathUtils.ts:73

Floors a number.

Parameters​

ParameterTypeDefault valueDescription
valuenumberundefinedThe number to floor.
precisionnumber1The precision with which to floor. Defaults to 1.

Returns​

number

The floored number.


fuzzyEquals()​

static fuzzyEquals(left, right, tolerance): boolean

Defined in: src/sdk/math/MathUtils.ts:263

Checks whether two numbers are equal to a given tolerance (meaning that the absolute difference between them is less than or equal to the tolerance).

Parameters​

ParameterTypeDescription
leftnumberThe first number to compare.
rightnumberThe second number to compare.
tolerancenumberThe tolerance within which the two numbers are considered equal.

Returns​

boolean

Whether the two numbers are equal to the given tolerance.


hardSign()​

static hardSign(n): number

Defined in: src/sdk/math/MathUtils.ts:211

Gets the sign of a number, including 0.

Parameters​

ParameterTypeDescription
nnumberThe number to get the sign of.

Returns​

number

1.0 if the number is positive, +0 or Infinity; -1.0 if the number is negative, -0 or -Infinity; NaN if the number is NaN


lerp()​

static lerp(x, x0, x1, y0, y1, clampStart, clampEnd): number

Defined in: src/sdk/math/MathUtils.ts:170

Linearly interpolates a keyed value along one dimension.

Parameters​

ParameterTypeDefault valueDescription
xnumberundefinedThe key of the value to interpolate.
x0numberundefinedThe key of the first known value.
x1numberundefinedThe key of the second known value.
y0numberundefinedThe first known value.
y1numberundefinedThe second known value.
clampStartbooleanfalseWhether to clamp the interpolated value to the first known value. Defaults to false.
clampEndbooleanfalseWhether to clamp the interpolated value to the second known value. Defaults to false.

Returns​

number

The interpolated value corresponding to the specified key.


lerpVector()​

static lerpVector(out, x, x0, x1, y0, y1, clampStart, clampEnd): Float64Array

Defined in: src/sdk/math/MathUtils.ts:194

Linearly interpolates a keyed vector along one dimension. If the known vectors and the result vector have unequal lengths, then only the components shared by all vectors are interpolated in the result.

Parameters​

ParameterTypeDefault valueDescription
outFloat64ArrayundefinedThe object to which to write the result.
xnumberundefinedThe key of the vector to interpolate.
x0numberundefinedThe key of the first known vector.
x1numberundefinedThe key of the second known vector.
y0ArrayLike<number>undefinedThe first known vector.
y1ArrayLike<number>undefinedThe second known vector.
clampStartbooleanfalseWhether to clamp the components of the interpolated vector to those of the first known vector. Defaults to false.
clampEndbooleanfalseWhether to clamp the components of the interpolated vector to those of the second known vector. Defaults to false.

Returns​

Float64Array

The interpolated vector corresponding to the specified key.


normalizeAngle()​

static normalizeAngle(radians, lowerBound): number

Defined in: src/sdk/math/MathUtils.ts:84

Normalizes an angle in radians.

Parameters​

ParameterTypeDefault valueDescription
radiansnumberundefinedThe angle to normalize, in radians.
lowerBoundnumber0The lower bound of the normalized angle, in radians. The normalized angle will fall in the range [lowerBound, lowerBound + 2 * pi). Defaults to 0.

Returns​

number

The specified angle after normalization, in radians.


normalizeAngleDeg()​

static normalizeAngleDeg(degrees, lowerBound): number

Defined in: src/sdk/math/MathUtils.ts:95

Normalizes an angle in degrees.

Parameters​

ParameterTypeDefault valueDescription
degreesnumberundefinedThe angle to normalize, in degrees.
lowerBoundnumber0The lower bound of the normalized angle, in degrees. The normalized angle will fall in the range [lowerBound, lowerBound + 360). Defaults to 0.

Returns​

number

The specified angle after normalization, in degrees.


round()​

static round(value, precision): number

Defined in: src/sdk/math/MathUtils.ts:53

Rounds a number.

Parameters​

ParameterTypeDefault valueDescription
valuenumberundefinedThe number to round.
precisionnumber1The precision with which to round. Defaults to 1.

Returns​

number

The rounded number.