51 lines
892 B
Lua
51 lines
892 B
Lua
local MATH={}for k,v in next,math do MATH[k]=v end
|
|
|
|
local int,ceil=math.floor,math.ceil
|
|
local rnd=math.random
|
|
|
|
MATH.tau=2*math.pi
|
|
|
|
function MATH.sign(a)
|
|
return a>0 and 1 or a<0 and -1 or 0
|
|
end
|
|
|
|
function MATH.roll(chance)
|
|
return rnd()<(chance or .5)
|
|
end
|
|
|
|
function MATH.coin(a,b)
|
|
if rnd()<.5 then
|
|
return a
|
|
else
|
|
return b
|
|
end
|
|
end
|
|
|
|
function MATH.interval(v,low,high)
|
|
if v<=low then
|
|
return low
|
|
elseif v>=high then
|
|
return high
|
|
else
|
|
return v
|
|
end
|
|
end
|
|
|
|
function MATH.lerp(s,e,t)
|
|
return s+(e-s)*t
|
|
end
|
|
|
|
do--function MATH.listLerp(list,t)
|
|
local interval,lerp=MATH.interval,MATH.lerp
|
|
function MATH.listLerp(list,t)
|
|
local t2=(#list-1)*interval(t,0,1)+1
|
|
return lerp(list[int(t2)],list[ceil(t2)],t2%1)
|
|
end
|
|
end
|
|
|
|
function MATH.expApproach(a,b,k)
|
|
return b+(a-b)*2.718281828459045^-k
|
|
end
|
|
|
|
return MATH
|