sm.util

Offers various math-related functions.

Functions:

  • axesToQuat
  • bezier2
  • bezier3
  • clamp
  • easing
  • lerp
  • positiveModulo
  • smootherstep
  • smoothstep

  • sm.util.axesToQuat(xAxis, yAxis)

    Constructs a quaternion from a X and Z axis

    Parameters:

    TypeNameDescription
    Vec3xAxisThe X axis.
    Vec3yAxisThe Z axis.

    Returns:

    TypeDescription
    Quatrotation The quaternion.

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

    Quadratic Bezier interpolation. One dimensional bezier curve.

    Parameters:

    TypeNameDescription
    numberc0The start value.
    numberc1The control point.
    numberc2The end value.
    numbertThe interpolation step.

    Returns:

    TypeDescription
    numberThe interpolated value between two values.

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

    Cubic Bezier interpolation. One dimensional bezier curve.

    Parameters:

    TypeNameDescription
    numberc0The start value.
    numberc1The first control point.
    numberc2The second control point.
    numberc3The end value.
    numbertThe interpolation step.

    Returns:

    TypeDescription
    numberThe interpolated value between two values.

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

    Restricts a value to a given range.

    Parameters:

    TypeNameDescription
    numbervalueThe value.
    numberminThe lower limit.
    numbermaxThe upper limit.

    Returns:

    TypeDescription
    numberThe clamped value.

    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:

    TypeNameDescription
    stringeasingThe easing function name.
    numberpThe easing function input.

    Returns:

    TypeDescription
    numberThe output.

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

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

    Parameters:

    TypeNameDescription
    numberaThe first value.
    numberbThe second value.
    numbertThe interpolation step.

    Returns:

    TypeDescription
    numberThe interpolated value between two values.

    sm.util.positiveModulo(x, n)

    Returns the positive remainder after division of x by n.

    Parameters:

    TypeNameDescription
    integerxThe number.
    integernThe modulo value.

    Returns:

    TypeDescription
    numberThe 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:

    TypeNameDescription
    numberedge0The value of the lower edge of the Hermite function.
    numberedge1The value of the upper edge of the Hermite function.
    numberxThe source value for interpolation.

    Returns:

    TypeDescription
    numberThe 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:

    TypeNameDescription
    numberedge0The value of the lower edge of the Hermite function.
    numberedge1The value of the upper edge of the Hermite function.
    numberxThe source value for interpolation.

    Returns:

    TypeDescription
    numberThe value.