Math
A system for common math functions
Damp
Smoothly move a source value toward a destination value. Framerate independent.
Sig: value = Math.Damp(source, target, smoothing, deltaTime)
- Arg: Vector/number source Source value
- Arg: Vector/number target Target value
- Arg: number smoothing Smoothing factor (0 - 1) Lower values will move slower. Try 0.005.
- Arg: number deltaTime Delta time
- Ret: number value Smoothed value
DampAngle
Smoothly move a source angle toward a destination angle. Framerate independent. Will handle the 0/360 degree boundary correctly.
Sig: value = Math.DampAngle(source, target, smoothing, deltaTime)
- Arg: number source Source angle in degrees
- Arg: number target Target angle in degrees
- Arg: number smoothing Smoothing factor (0 - 1) Lower values will move slower. Try 0.005.
- Arg: number deltaTime Delta time
- Ret: number value Smoothed angle
Approach
Approach a target value from a source value based on a given speed.
Sig: value = Math.Approach(source, target, speed, deltaTime)
- Arg: Vector/number source Source value
- Arg: Vector/number target Target value
- Arg: number speed Rate at which the source should be moving toward the target
- Arg: number deltaTime Delta time
- Ret: number value The updated value
ApproachAngle
Approach a target angle from a source angle based on a given speed.
Sig: value = Math.ApproachAngle(source, target, speed, deltaTime)
- Arg: number source Source angle in degrees
- Arg: number target Target angle in degrees
- Arg: number speed Rate at which the source should be moving toward the target
- Arg: number deltaTime Delta time
- Ret: number value The updated value
Wrap
Wrap a value into a particular range.
Alias: NormalizeRange
Sig: wrapped = Math.Wrap(value, start, end)
- Arg: number value Input value
- Arg: number start Range start
- Arg: number end Range end
- Ret: number wrapped Wrapped value within the start and end range
Map
Map a value from an input range to an output range.
Sig: outX = Math.Map(inX, inMin, inMax, outMin, outMax)
- Arg: number inX Input value
- Arg: number inMin Input range min
- Arg: number inMax Input range max
- Arg: number outMin Output range min
- Arg: number outMax Output range max
- Ret: number outX Output value
MapClamped
Map a value from an input range to an output range, clamping it within the output range.
Sig: outX = Math.MapClamped(inX, inMin, inMax, outMin, outMax)
- Arg: number inX Input value
- Arg: number inMin Input range min
- Arg: number inMax Input range max
- Arg: number outMin Output range min
- Arg: number outMax Output range max
- Ret: number outX Output value clamped within the output range
IsPowerOfTwo
Check if an integer is a power of 2.
Sig: pow2 = Math.IsPowerOfTwo(value)
- Arg: integer value Value to check
- Ret: boolean pow2 Whether the input value is a power of 2
Min
Get the minimum of two numbers.
Sig: min = Math.Min(a, b)
- Arg: integer/number a First number
- Arg: integer/number b Second number
- Ret: integer/number min Minimum number
Max
Get the maximum of two numbers.
Sig: max = Math.Max(a, b)
- Arg: integer/number a First number
- Arg: integer/number b Second number
- Ret: integer/number max Maximum number
Clamp
Clamp an input value between two numbers.
Sig: clamped = Math.Clamp(value, min, max)
- Arg: integer/number value Input value
- Arg: integer/number min Min value
- Arg: integer/number max Max value
- Ret: integer/number clamped Clamped value
Lerp
Linearly interpolate a value between two numbers based on a ratio.
Alias: Mix
Sig: res = Math.Lerp(a, b, alpha)
- Arg: number a First number
- Arg: number b Second number
- Arg: number alpha Ratio (should be between 0 and 1)
- Ret: number res The mixed result
Sign
Check if a number is positive or negative. If positive (or 0) 1 is returned. If negative, -1 is returned.
Sig: sign = Math.Sign(value)
- Arg: integer/number value Input value to test
- Ret: integer/number sign Sign of the value (-1 or 1)
RotateYawTowardDirection
Rotate a yaw angle towards a 3D direction. Useful for things like rotating a character to look in the direction they are running.
Sig: resYaw = Math.RotateYawTowardDirection(srcYaw, dir, speed, deltaTime)
- Arg: number srcYaw Source yaw in degrees
- Arg: Vector dir Direction to rotate towards
- Arg: number speed Angular speed
- Arg: number deltaTime Delta time
- Ret: number resYaw Resulting yaw
Reflect
Reflect a vector against a normal.
Sig: res = Math.Reflect(incident, normal)
- Arg: Vector incident Incident vector
- Arg: Vector normal Normal direction
- Ret: Vector res Reflected vector
VectorToRotation
Convert a vector to an euler angle rotation that would map the forward vector (0,0,-1) to the input vector.
Sig: rotEuler = Math.VectorToRotation(vector)
- Arg: Vector vector Input vector
- Ret: Vector rotEuler Rotation as euler angles in degrees
VectorToQuat
Convert a vector to a quaternion rotation that would map the forward vector (0,0,-1) to the input vector.
Sig: rotQuat = Math.VectorToQuat(vector)
- Arg: Vector vector Input vector
- Ret: Vector rotQuat Rotation as a quaternion
RotationToVector
Convert an euler angle rotation in degrees to a normalized directional vector.
Sig: vect = Math.RotationToVector(rotEuler)
- Arg: Vector rotEuler Euler angle rotation in degrees
- Ret: Vector vect Equivalent vector
QuatToVector
Convert a quaternion rotation to a normalized directional vector.
Sig: vect = Math.QuatToVector(rotQuat)
- Arg: Vector rotQuat Quaternion rotation
- Ret: Vector vect Equivalent vector
SeedRand
Seed the Math system's random number generator.
Sig: Math.SeedRand(seed)
- Arg: integer seed RNG seed
RandRange
Get a random number between a minimum and maximum value.
Sig: rand = Math.RandRange(min, max)
- Arg: number min Min range
- Arg: number max Max range
- Ret: number rand Random number
RandRangeInt
Get a random integer between a minimum and maximum value.
Sig: rand = Math.RandRangeInt(min, max)
- Arg: integer min Min range
- Arg: integer max Max range
- Ret: integer rand Random number
RandRangeVec
Get a random Vector between a minimum and maximum value.
Sig: rand = Math.RandRangeVec(min, max)
- Arg: Vector/number min Min range
- Arg: Vector/number max Max range
- Ret: Vector rand Random vector
Rand
Get a random number between 0 and 1.
Sig: random = Math.Rand()
- Ret: number random Random number between 0 and 1.