sm.util

Offers various math-related functions.

Constants

Name Type Description
easingFunctionIds table The area trigger type list.

easingFunctionIds

Value type: table

Easing function ids can be passed to the easing function instead of the easing function's name.

The easings are:

  • linear
  • easeInQuad
  • easeOutQuad
  • easeInOutQuad
  • easeInCubic
  • easeOutCubic
  • easeInOutCubic
  • easeInQuart
  • easeOutQuart
  • easeInOutQuart
  • easeInQuint
  • easeOutQuint
  • easeInOutQuint
  • easeInSine
  • easeOutSine
  • easeInOutSine
  • easeInCirc
  • easeOutCirc
  • easeInOutCirc
  • easeInExpo
  • easeOutExpo
  • easeInOutExpo
  • easeInElastic
  • easeOutElastic
  • easeInOutElastic
  • easeInBack
  • easeOutBack
  • easeInOutBack
  • easeInBounce
  • easeOutBounce
  • easeInOutBounce

Functions

axesToQuat

sm.util.axesToQuat( xAxis, yAxis )

Constructs a quaternion from a X and Z axis

Parameters:

Name Type Description
xAxis Vec3 The X axis.
yAxis Vec3 The Z axis.

Returns:

Name Type Description
rotation Quat The quaternion.

bezier2

sm.util.bezier2( c0, c1, c2, t )

Quadratic Bezier interpolation. One dimensional bezier curve.

Parameters:

Name Type Description
c0 number The start value.
c1 number The control point.
c2 number The end value.
t number The interpolation step.

Returns:

Type Description
number The interpolated value between two values.

bezier3

sm.util.bezier3( c0, c1, c2, c3, t )

Cubic Bezier interpolation. One dimensional bezier curve.

Parameters:

Name Type Description
c0 number The start value.
c1 number The first control point.
c2 number The second control point.
c3 number The end value.
t number The interpolation step.

Returns:

Type Description
number The interpolated value between two values.

clamp

sm.util.clamp( value, min, max )

Restricts a value to a given range.

Parameters:

Name Type Description
value number The value.
min number The lower limit.
max number The upper limit.

Returns:

Type Description
number The clamped value.

clampUtf8String

sm.util.clampUtf8String( string, maxLength )

Clamps a UTF-8 string to a maximum number of characters without splitting multi-byte sequences.

Parameters:

Name Type Description
string string The input string.
maxLength integer The maximum number of UTF-8 characters.

Returns:

Type Description
string The clamped string.

easing - easingFunctionId

sm.util.easing( easingFunctionId, p )

Applies an easing function to a given input.

Parameters:

Name Type Description
easingFunctionId integer The easing function to use. (See sm.util.easingFunctionIds)
p number The easing function input.

Returns:

Type Description
number The output.

easing - easing

sm.util.easing( easing, p )

Applies an easing function to a given input.

Easing function names:

Value
linear
easeInQuad
easeOutQuad
easeInOutQuad
easeInCubic
easeOutCubic
easeInOutCubic
easeInQuart
easeOutQuart
easeInOutQuart
easeInQuint
easeOutQuint
easeInOutQuint
easeInSine
easeOutSine
easeInOutSine
easeInCirc
easeOutCirc
easeInOutCirc
easeInExpo
easeOutExpo
easeInOutExpo
easeInElastic
easeOutElastic
easeInOutElastic
easeInBack
easeOutBack
easeInOutBack
easeInBounce
easeOutBounce
easeInOutBounce

Parameters:

Name Type Description
easing string The easing function name.
p number The easing function input.

Returns:

Type Description
number The output.

geometricMedian

sm.util.geometricMedian( points, initialGuess, iterations )

Numerically approximates the geometric median from a table of points.

If no initial guess is made, the mean position of all the points will be used as a guess.

Parameters:

Name Type Description
points table The table of points. { Vec3, ... }.
initialGuess (optional) Vec3 A guessed position to start searching from. (Optional)
iterations (optional) integer The number of iterations. (Defaults to 1)

Returns:

Type Description
Vec3 The estimated geometric median.

hash

sm.util.hash( ... )

Create a hash from arguments.

Parameters:

Name Type Description
... any The arguments to be hashed.

Returns:

Type Description
integer The hash.

lerp

sm.util.lerp( a, b, t )

Linear interpolation between two values. This is known as a lerp.

Parameters:

Name Type Description
a number The first value.
b number The second value.
t number The interpolation step.

Returns:

Type Description
number The interpolated value between two values.

positiveModulo

sm.util.positiveModulo( x, n )

Returns the positive remainder after division of x by n.

Parameters:

Name Type Description
x integer The number.
n integer The modulo value.

Returns:

Type Description
number The value.

smootherstep

sm.util.smootherstep( edge0, edge1, x )

An improved version of the smoothstep function which has zero 1st and 2nd order derivatives at x = edge0 and x = edge1.

Parameters:

Name Type Description
edge0 number The value of the lower edge of the Hermite function.
edge1 number The value of the upper edge of the Hermite function.
x number The source value for interpolation.

Returns:

Type Description
number The value.

smoothstep

sm.util.smoothstep( edge0, edge1, x )

Performs smooth Hermite interpolation between 0 and 1 when edge0 < x < edge1. This is useful in cases where a threshold function with a smooth transition is desired.

Parameters:

Name Type Description
edge0 number The value of the lower edge of the Hermite function.
edge1 number The value of the upper edge of the Hermite function.
x number The source value for interpolation.

Returns:

Type Description
number The value.

utf8StringLength

sm.util.utf8StringLength( string )

Returns the number of UTF-8 characters in a string.

Parameters:

Name Type Description
string string The input string.

Returns:

Type Description
integer The number of UTF-8 characters.