Processing:Справочник языка Processing/noise()
Содержание | Среда разработки Processing | Справочник языка Processing | Библиотеки | Примеры | Режимы программирования |
Черновик |
noise() [1]
Обозначение
noise()
Описание
Возвращает шум Перлина в указанных координатах. Шум Перлина представляет собой генератор случайной последовательности, создающий более естественную гармоническую последовательность чисел, чем стандартная функция random(). Он был разработан Кеном Перлином в 1980-х годах и использовался в графических приложениях для создания процедурных текстур, форм, ландшафтов и других, казалось бы, органических форм.
В отличие от функции random(), шум Перлина определяется в бесконечном n-мерном пространстве, в котором каждая пара координат соответствует фиксированному полуслучайному значению (фиксированному только для времени работы программы). Результирующее значение всегда будет между 0.0 и 1.0. Processing может вычислять 1D, 2D и 3D шум, в зависимости от количества заданных координат. Значение шума можно анимировать, перемещаясь через шумовое пространство, как показано в первом примере. Второе и третье измерения также можно интерпретировать как время.
Фактическая структура шума аналогична структуре звукового сигнала в отношении использования частот функциями. Подобно понятию гармоник в физике, шум Перлина вычисляется на несколько октав, которые объединяются для окончательного результата.
Другим способом настройки характера результирующей последовательности является масштаб входных координат. Поскольку функция работает в бесконечном пространстве, значение координат не имеет значения как таковое; важно только расстояние между последовательными координатами (например, при использовании noise() в цикле). Как правило, чем меньше разница между координатами, тем более плавная результирующая шумовая последовательность. Шаги 0.005-0.03 работают лучше всего для большинства приложений, но будет отличаться в зависимости от использования.
Были проведены споры о точности внедрения шума в Processing . Для уточнения, это реализация «классического шума Перлина» 1983 года, а не новый метод «симплекс-шума» 2001 года.
Синтаксис
noise(x)
noise(x, y)
noise(x, y, z)
Параметры
x - тип float: x-координата в шумовом пространстве
y - тип float: y-координата в шумовом пространстве
z - тип float: z-координата в шумовом пространстве
Возвращаемое значение
float
Пример
№1
float xoff = 0.0;
void draw() {
background(204);
xoff = xoff + .01;
float n = noise(xoff) * width;
line(n, 0, n, height);
}
№2
float noiseScale = 0.02;
void draw() {
background(0);
for (int x=0; x < width; x++) {
float noiseVal = noise((mouseX+x)*noiseScale, mouseY*noiseScale);
stroke(noiseVal*255);
line(x, mouseY+noiseVal*80, x, height);
}
}