NoiseWrapper (日本語)
通常ノイズ ( -1 から 1 までの標準化)または指定された引数の個数に依存するフラクタル・ノイズのいずれかのノイズを生成します。
local function clamp(v, M, m)
return (v > M and M or v) < m and m or v
end
local function fractalNoise2(x, y, n, a, f)
local ca = 1
local cf = 1
local val = 0
for _=1, n do
val = val + (love.math.noise(x*cf, y*cf)*2-1)*ca
ca = ca * a
cf = cf * f
end
return clamp(val, 1, -1)
end
local function fractalNoise3(x, y, z, n, a, f)
local ca = 1
local cf = 1
local val = 0
for _=1, n do
val = val + (love.math.noise(x*cf, y*cf, z*cf)*2-1)*ca
ca = ca * a
cf = cf * f
end
return clamp(val, 1, -1)
end
local function fractalNoise4(x, y, z, w, n, a, f)
local ca = 1
local cf = 1
local val = 0
for _=1, n do
val = val + (love.math.noise(x*cf, y*cf, z*cf, w*cf)*2-1)*ca
ca = ca * a
cf = cf * f
end
return clamp(val, 1, -1)
end
-- 4つ以下の引数を与えると -1 ~ 1の範囲までの平準化された通常の Simplex (シンプレックス) ノイズを生成します。
-- 4つ以上の引数を与えるとフラクタル・ノイズを生成します。
-- フラクタル・ノイズ生成時、最後の3つの引数は、
-- それぞれオクターブ量、振幅基準化計数、
-- および振動数基準化計数になります。
--
-- noiseWrapper(x, [y, [z, [w, [n, a, f]]]])
function noiseWrapper(...)
local l = #{...}
if l <= 4 then
return love.math.noise(...)*2-1
elseif l == 5 then
return fractalNoise2(...)
elseif l == 6 then
return fractalNoise3(...)
elseif l == 7 then
return fractalNoise4(...)
else return nil end
end
寄贈者