Difference between revisions of "NoiseWrapper (日本語)"

(Created page with "通常ノイズ ( -1 から 1 までの標準化)または指定された引数の個数に依存するフラクタル・ノイズのいずれかのノイズを生成します...")
 
m
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
通常ノイズ ( -1 から 1 までの標準化)または指定された引数の個数に依存するフラクタル・ノイズのいずれかのノイズを生成します。
+
正規ノイズ ( -1 から 1 までの正規化) または指定された引数の個数に依存するフラクタル・ノイズのいずれかのノイズを生成します。
  
 
<source lang="lua">
 
<source lang="lua">
Line 42: Line 42:
 
end
 
end
  
-- 4つ以下の引数を与えると -1 ~ 1の範囲までの平準化された通常の Simplex (シンプレックス) ノイズを生成します。
+
-- 二個以下の引数を与えると -1 ~ 1の範囲までの正規化された通常の Simplex (シンプレックス) ノイズを生成します。
-- 4つ以上の引数を与えるとフラクタル・ノイズを生成します。
+
-- 二、三個の引数では、 Perlin ノイズを生成します、四個以上の引数を与えるとフラクタル・ノイズを生成します。
-- フラクタル・ノイズ生成時、最後の3つの引数は、
+
-- フラクタル・ノイズ生成時、最後にある三個の引数は、
 
-- それぞれオクターブ量、振幅基準化計数、
 
-- それぞれオクターブ量、振幅基準化計数、
 
-- および振動数基準化計数になります。
 
-- および振動数基準化計数になります。
Line 62: Line 62:
 
end
 
end
 
</source>
 
</source>
 
== 寄贈者 ==
 
* [[User:Substitute541|Substitute541]]
 
  
 
[[Category:Snippets (日本語)]]
 
[[Category:Snippets (日本語)]]
 
{{#set:Author=User:Substitute541}}
 
{{#set:Author=User:Substitute541}}
{{#set:Description=LOVE のノイズ関数に対するノイズラッパーです。}}
+
{{#set:LOVE Version=>0.9.0}}
 +
{{#set:Description=LÖVE のノイズ関数に対するノイズラッパーです。}}

Latest revision as of 01:46, 15 November 2016

正規ノイズ ( -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

-- 二個以下の引数を与えると -1 ~ 1の範囲までの正規化された通常の Simplex (シンプレックス) ノイズを生成します。
-- 二、三個の引数では、 Perlin ノイズを生成します、四個以上の引数を与えるとフラクタル・ノイズを生成します。
-- フラクタル・ノイズ生成時、最後にある三個の引数は、
-- それぞれオクターブ量、振幅基準化計数、
-- および振動数基準化計数になります。
--
-- 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