sm.util
Offers various math-related functions.
Constants:
Functions:
axesToQuat bezier2 bezier3 clamp clampUtf8String easing easing geometricMedian hash lerp positiveModulo smootherstep smoothstep utf8StringLength
sm.util.easingFunctionIds 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
sm.util.axesToQuat(xAxis, yAxis)
Constructs a quaternion from a X and Z axis
Parameters:
| Type | Name | Description |
| Vec3 | xAxis | The X axis. |
| Vec3 | yAxis | The Z axis. |
Returns:
| Type | Description |
| Quat | rotation The quaternion. |
sm.util.bezier2(c0, c1, c2, t)
Quadratic Bezier interpolation. One dimensional bezier curve.
Parameters:
| Type | Name | Description |
| number | c0 | The start value. |
| number | c1 | The control point. |
| number | c2 | The end value. |
| number | t | The interpolation step. |
Returns:
| Type | Description |
| number | The interpolated value between two values. |
sm.util.bezier3(c0, c1, c2, c3, t)
Cubic Bezier interpolation. One dimensional bezier curve.
Parameters:
| Type | Name | Description |
| number | c0 | The start value. |
| number | c1 | The first control point. |
| number | c2 | The second control point. |
| number | c3 | The end value. |
| number | t | The interpolation step. |
Returns:
| Type | Description |
| number | The interpolated value between two values. |
sm.util.clamp(value, min, max)
Restricts a value to a given range.
Parameters:
| Type | Name | Description |
| number | value | The value. |
| number | min | The lower limit. |
| number | max | The upper limit. |
Returns:
| Type | Description |
| number | The clamped value. |
sm.util.clampUtf8String(string, maxLength)
Clamps a UTF-8 string to a maximum number of characters without splitting multi-byte sequences.
Parameters:
| Type | Name | Description |
| string | string | The input string. |
| integer | maxLength | The maximum number of UTF-8 characters. |
Returns:
| Type | Description |
| string | The clamped string. |
sm.util.easing(easingFunctionId, p)
Applies an easing function to a given input.
Parameters:
| Type | Name | Description |
| integer | easingFunctionId | The easing function to use. (See sm.util.easingFunctionIds) |
| number | p | The easing function input. |
Returns:
| Type | Description |
| number | The output. |
sm.util.easing(easing, p)
Applies an easing function to a given input.
Easing function names:
| 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:
| Type | Name | Description |
| string | easing | The easing function name. |
| number | p | The easing function input. |
Returns:
| Type | Description |
| number | The output. |
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:
| Type | Name | Description |
| table | points | The table of points. { Vec3, ... }. |
| Vec3 | initialGuess? | A guessed position to start searching from. (Optional) |
| integer | iterations? | The number of iterations. (Defaults to 1) |
Returns:
| Type | Description |
| Vec3 | The estimated geometric median. |
sm.util.hash(...)
Create a hash from arguments.
Parameters:
| Type | Name | Description |
| any | ... | The arguments to be hashed. |
Returns:
| Type | Description |
| integer | The hash. |
sm.util.lerp(a, b, t)
Linear interpolation between two values. This is known as a lerp.
Parameters:
| Type | Name | Description |
| number | a | The first value. |
| number | b | The second value. |
| number | t | The interpolation step. |
Returns:
| Type | Description |
| number | The interpolated value between two values. |
sm.util.positiveModulo(x, n)
Returns the positive remainder after division of x by n.
Parameters:
| Type | Name | Description |
| integer | x | The number. |
| integer | n | The modulo value. |
Returns:
| Type | Description |
| number | The value. |
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:
| Type | Name | Description |
| number | edge0 | The value of the lower edge of the Hermite function. |
| number | edge1 | The value of the upper edge of the Hermite function. |
| number | x | The source value for interpolation. |
Returns:
| Type | Description |
| number | The value. |
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:
| Type | Name | Description |
| number | edge0 | The value of the lower edge of the Hermite function. |
| number | edge1 | The value of the upper edge of the Hermite function. |
| number | x | The source value for interpolation. |
Returns:
| Type | Description |
| number | The value. |
sm.util.utf8StringLength(string)
Returns the number of UTF-8 characters in a string.
Parameters:
| Type | Name | Description |
| string | string | The input string. |
Returns:
| Type | Description |
| integer | The number of UTF-8 characters. |