Lua MathExtra: Difference between revisions
From Spring
Jump to navigationJump to search
→Additional math functions: move to luacallout format |
|||
| (8 intermediate revisions by 2 users not shown) | |||
| Line 1: | Line 1: | ||
[[Engine_Development|Development]] < [[Lua_Scripting|Lua Scripting]] < {{FULLPAGENAME}} | [[Engine_Development|Development]] < [[Lua_Scripting|Lua Scripting]] < {{FULLPAGENAME}} | ||
= Additional math functions= | |||
New in Engine Version 0.95 and up. | |||
{{LuaCallout | |||
|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). | |||
}} | |||
[[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).