Difference between revisions of "FractalNoise"
(Created page with "Generates a fractal noise using LOVE's noise functions <source lang="lua"> -- returns a fractal noise value in the range [-1.0, 1.0] function genFractalNoise2(x, y, iter, factor...") |
(minor edit to the code, added comments.) |
||
Line 2: | Line 2: | ||
<source lang="lua"> | <source lang="lua"> | ||
+ | -- x, y, z are the positions to sample | ||
+ | -- iter is how many iterations (octaves) of the noise (default: 1) | ||
+ | -- amp is the amplitude factor (default: 0.5) | ||
+ | -- freq is the frequency factor (default: 2) | ||
+ | |||
-- returns a fractal noise value in the range [-1.0, 1.0] | -- returns a fractal noise value in the range [-1.0, 1.0] | ||
− | function genFractalNoise2(x, y, iter, | + | function genFractalNoise2(x, y, iter, amp, freq) |
val = love.math.noise(x, y)*2-1 | val = love.math.noise(x, y)*2-1 | ||
− | + | freq = freq or 2 | |
iter = iter or 1 | iter = iter or 1 | ||
− | + | amp = amp or 0.5 | |
local n = 0 | local n = 0 | ||
while n < iter-1 do | while n < iter-1 do | ||
− | val = val + (love.math.noise(x* | + | val = val + (love.math.noise(x*freq, y*freq)*2-1)*amp |
+ | freq = freq * freq | ||
+ | amp = amp * amp | ||
n = n + 1 | n = n + 1 | ||
end | end | ||
Line 17: | Line 24: | ||
-- returns a fractal noise value in the range [-1.0, 1.0] | -- returns a fractal noise value in the range [-1.0, 1.0] | ||
− | function genFractalNoise3(x, y, z, iter, | + | function genFractalNoise3(x, y, z, iter, amp, freq) |
− | val = love.math.noise(x, y, z)*2-1 | + | local val = love.math.noise(x, y, z)*2-1 |
− | + | freq = freq or 2 | |
+ | iter = iter or 1 | ||
+ | amp = amp or 0.5 | ||
local n = 0 | local n = 0 | ||
while n < iter-1 do | while n < iter-1 do | ||
− | val = val + (love.math.noise(x* | + | val = val + (love.math.noise(x*freq, y*freq, z*freq)*2-1)*amp |
+ | freq = freq * freq | ||
+ | amp = amp * amp | ||
n = n + 1 | n = n + 1 | ||
end | end |
Revision as of 07:50, 25 March 2014
Generates a fractal noise using LOVE's noise functions
-- x, y, z are the positions to sample
-- iter is how many iterations (octaves) of the noise (default: 1)
-- amp is the amplitude factor (default: 0.5)
-- freq is the frequency factor (default: 2)
-- returns a fractal noise value in the range [-1.0, 1.0]
function genFractalNoise2(x, y, iter, amp, freq)
val = love.math.noise(x, y)*2-1
freq = freq or 2
iter = iter or 1
amp = amp or 0.5
local n = 0
while n < iter-1 do
val = val + (love.math.noise(x*freq, y*freq)*2-1)*amp
freq = freq * freq
amp = amp * amp
n = n + 1
end
return math.max(math.min(val, 1.0), -1.0)
end
-- returns a fractal noise value in the range [-1.0, 1.0]
function genFractalNoise3(x, y, z, iter, amp, freq)
local val = love.math.noise(x, y, z)*2-1
freq = freq or 2
iter = iter or 1
amp = amp or 0.5
local n = 0
while n < iter-1 do
val = val + (love.math.noise(x*freq, y*freq, z*freq)*2-1)*amp
freq = freq * freq
amp = amp * amp
n = n + 1
end
return math.max(math.min(val, 1.0), -1.0)
end
Contributors