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

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

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


Cat poo.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

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);
  }
}

См.также

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