Charakterbewegungen hinzugefügt, Deko hinzugefügt, Kochrezepte angepasst
This commit is contained in:
parent
95945c0306
commit
a0c893ca0b
1124 changed files with 64294 additions and 763 deletions
42
mods/futil/util/limiters.lua
Normal file
42
mods/futil/util/limiters.lua
Normal file
|
@ -0,0 +1,42 @@
|
|||
--[[
|
||||
functions to limit the growth of a variable.
|
||||
the intention here is to provide a family of functions for which
|
||||
* f(x) is defined for all x >= 0
|
||||
* f(0) = 0
|
||||
* f(1) = 1
|
||||
* f is continuous
|
||||
* f is nondecreasing
|
||||
* f\'(x) is nonincreasing when x > 1 (when the parameters are appropriate)
|
||||
]]
|
||||
|
||||
local log = math.log
|
||||
local pow = math.pow
|
||||
local tanh = math.tanh
|
||||
|
||||
futil.limiters = {
|
||||
-- no limiting
|
||||
none = futil.functional.identity,
|
||||
-- f(x) = x ^ param_1. param_1 should be < 1 for f\'(x) to be nonincreasing
|
||||
-- f(x) will grow arbitrarily, but at a decreasing rate.
|
||||
gamma = function(x, param_1)
|
||||
return pow(x, param_1)
|
||||
end,
|
||||
-- the hyperbolic tangent scaled so that f(0) = 0 and f(1) = 1.
|
||||
-- f(x) will grow approximately linearly for small x, but it will never grow beyond a maximum value, which is
|
||||
-- approximately equal to param_1 + 1
|
||||
tanh = function(x, param_1)
|
||||
return (tanh((x - 1) / param_1) - tanh(-1 / param_1)) / -tanh(-1 / param_1)
|
||||
end,
|
||||
-- f(x) = log^param_2(param_1 * x + 1), scaled so that f(0) = 0 and f(1) = 1.
|
||||
-- f(x) will grow arbitrarily, but at a much slower rate than a gamma limiter
|
||||
log__n = function(x, param_1, param_2)
|
||||
return (log(x + 1) * pow(log(param_1 * x + 1), param_2) / (log(2) * pow(log(param_1 + 1), param_2)))
|
||||
end,
|
||||
}
|
||||
|
||||
function futil.create_limiter(name, param_1, param_2)
|
||||
local f = futil.limiters[name]
|
||||
return function(x)
|
||||
return f(x, param_1, param_2)
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue