Processing:Справочник языка Processing/noise()

Материал из Онлайн справочника
Перейти к: навигация, поиск

Проверка/Оформление/Редактирование: Мякишев Е.А.


Ambox content.png Черновик


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

  1. float xoff = 0.0;
  2.  
  3. void draw() {
  4.   background(204);
  5.   xoff = xoff + .01;
  6.   float n = noise(xoff) * width;
  7.   line(n, 0, n, height);
  8. }

№2

  1. float noiseScale = 0.02;
  2.  
  3. void draw() {
  4.   background(0);
  5.   for (int x=0; x < width; x++) {
  6.     float noiseVal = noise((mouseX+x)*noiseScale, mouseY*noiseScale);
  7.     stroke(noiseVal*255);
  8.     line(x, mouseY+noiseVal*80, x, height);
  9.   }
  10. }

См.также

Внешние ссылки

  1. processing.org - noise()