Java: создание 2D Perlin Noise - PullRequest
0 голосов
/ 26 декабря 2011

Существует не так много простых в изучении Perlin Noise руководств, и, конечно же, не на Java или 2D. Я следовал этому уроку, но он совсем не объясняет 2D-шум. Я знаю, что вы должны сгенерировать массив чисел, затем интерполировать их и все. Моя проблема в том, что я не знаю, как реализовать частоту, постоянство или амплитуду, чтобы помочь повлиять на результат чисел. Кто-нибудь может дать мне некоторые основные функции Perlin Noise или ссылку на учебник по 2D Perlin Noise на Java или похожих языках? Спасибо!

РЕДАКТИРОВАТЬ: Может кто-то просто кратко объяснить процесс по крайней мере или как один реализует частоту, амплитуду и постоянство, чтобы повлиять на поколение? Пожалуйста:)

1 Ответ

2 голосов
/ 26 декабря 2011

Амплитуда и частота не являются свободными переменными в генерации шума Перлина. Вместо этого они параметризованы чем-то, что называется постоянство .

Функция шума - это сумма по нескольким основным функциям.

n(x) = sum( n_i(x*f_i) * a_i, i=0..N-1)

Каждая функция называется октава и поэтому пронумерована индексом i. Значения f_i обозначают частоты, а a_i - амплитуды. Как упоминалось ранее, они полностью определяются самим индексом i, параметризованным постоянством p:

f_i = 2^i
a_i = p^i

В то время как каждая шумовая функция n_i(x) нормализуется для частоты 1 и амплитуды 1, общий термин n_i(x*f_i) * a_i теперь имеет частоту и амплитуду, заданные выражениями выше.

Другими словами, шумовая функция n(x) является суммой октав, где первая имеет частоту 1 и амплитуду 1, вторая имеет частоту 2 и амплитуду p, третья имеет частоту 4 и амплитуда p^2 и т. Д.

...