Lua MathExtra: Difference between revisions

From Spring
Jump to navigationJump to search
Jk (talk | contribs)
→Additional math functions: move to luacallout format
 
(5 intermediate revisions by 2 users not shown)
Line 2: Line 2:


= Additional math functions=
= Additional math functions=
'''math.hypot''' {{new|95}}
  ( number x, number y ) -> number
  <span class="note">Returns the length of hypotenuse of right angle triangle with sides x and y, equivalent
  to sqrt(x*x + y*y), but has better numerical stability and internaly handles intermediate
  overflows/underflows, but is also slower.</span>


'''math.diag''' {{new|95}}
New in Engine Version 0.95 and up.
  ( number x1 [, ... ] ] ) -> number
 
  <span class="note">Returns the length of diagonal of an n-dimensional box. Rather quick method that does not
{{LuaCallout
  handle intermediate overflows/underflows nor is made for numerical stability.</span>
|prefix = math.
|name = clamp
|arg1 = {{type|number}} x
|arg2 = {{type|number}} min
|arg3 = {{type|number}} max
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|number}} clamped
|info = Returns x clamped to min and max boundaries.
}}
 
{{LuaCallout
|prefix = math.
|name = diag
|arg1 = {{type|number}} x1
|arg2 = {{type|number}} x2
|arg3 = {{type|number}} x3, ...
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|number}} diagonal
|info = Returns the length of the diagonal of an n-dimensional box (or the length of an n-component vector). Rather quick method that does not handle intermediate overflows/underflows nor is made for numerical stability.
}}
 
{{LuaCallout
|prefix = math.
|name = erf
|arg1 = {{type|number}} x
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|number}} erf
|info = Returns [http://en.wikipedia.org/wiki/Error_function erf](x).
}}
 
{{LuaCallout
|prefix = math.
|name = hypot
|arg1 = {{type|number}} x
|arg2 = {{type|number}} y
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|number}} sqrt(x*x+y*y)
|info = Returns the length of hypotenuse of right angle triangle with sides x and y, equivalent to sqrt(x*x + y*y), but has better numerical stability and internally handles intermediate overflows/underflows, but is also slower.
}}
 
{{LuaCallout
|prefix = math.
|name = mix
|arg1 = {{type|number}} x
|arg2 = {{type|number}} y
|arg3 = {{type|number}} a
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|number}} (x+(y-x)*a)
|info = Returns linear interpolation between x and y with ratio a (x+(y-x)*a).
}}
 
{{LuaCallout
|prefix = math.
|name = round
|arg1 = {{type|number}} x
|arg2 = {{type|number}} decimals
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|number}} rounded
|info = Returns x rounded to n decimals, if n is omitted or <=0, rounds to nearest integer. Note that Spring's Lua interpreter uses 32-bit floats for all numbers so max. precision is ~7 decimal digits.
}}
 
{{LuaCallout
|prefix = math.
|name = sgn
|arg1 = {{type|number}} x
|arg2 =
|arg3 =
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|number}} sign
|info = Returns 0 if x ==0, 1 if x > 0, -1 if x < 0 [http://en.wikipedia.org/wiki/Sign_function sgn](x).
}}
 
{{LuaCallout
|prefix = math.
|name = smoothstep
|arg1 = {{type|number}} edge0
|arg2 = {{type|number}} edge1
|arg3 = {{type|number}} x
|arg4 =
|arg5 =
|arg6 =
|arg7 =
|arg8 =
|arg9 =
|return = {{type|number}} smoothstep
|info = Returns [http://en.wikipedia.org/wiki/Smoothstep smoothstep](edge0, edge1, v).
}}


'''math.clamp''' {{new|95}}
  ( number x, number min, number max ) -> number
  <span class="note">Returns x clamped to min and max boundaries.</span>
[[category: Lua]]
[[category: Lua]]

Latest revision as of 12:42, 1 August 2022

Development < Lua Scripting < Lua MathExtra

Additional math functions

New in Engine Version 0.95 and up.

math.clamp ( number x, number min, number max )
return: number clamped

Returns x clamped to min and max boundaries.

math.diag ( number x1, number x2, number x3, ... )
return: number diagonal

Returns the length of the diagonal of an n-dimensional box (or the length of an n-component vector). Rather quick method that does not handle intermediate overflows/underflows nor is made for numerical stability.

math.erf ( number x )
return: number erf

Returns erf(x).

math.hypot ( number x, number y )
return: number sqrt(x*x+y*y)

Returns the length of hypotenuse of right angle triangle with sides x and y, equivalent to sqrt(x*x + y*y), but has better numerical stability and internally handles intermediate overflows/underflows, but is also slower.

math.mix ( number x, number y, number a )
return: number (x+(y-x)*a)

Returns linear interpolation between x and y with ratio a (x+(y-x)*a).

math.round ( number x, number decimals )
return: number rounded

Returns x rounded to n decimals, if n is omitted or <=0, rounds to nearest integer. Note that Spring's Lua interpreter uses 32-bit floats for all numbers so max. precision is ~7 decimal digits.

math.sgn ( number x )
return: number sign

Returns 0 if x ==0, 1 if x > 0, -1 if x < 0 sgn(x).

math.smoothstep ( number edge0, number edge1, number x )
return: number smoothstep

Returns smoothstep(edge0, edge1, v).