Как работает поле шума Perlin? - PullRequest
3 голосов
/ 22 апреля 2011

В частности, я рассматриваю этот пример:

http://www.airtightinteractive.com/demos/processing_js/noisefield08.html

И вот код для него:

http://www.airtightinteractive.com/demos/processing_js/noisefield08.pjs

Я думаю, мне нужно объяснить, что эти линии делают в классе частиц:

d=(noise(id,x/mouseY,y/mouseY)-0.5)*mouseX;  
x+=cos(radians(d))*s;
y+=sin(radians(d))*s;

Я понимаю, что шум вычисляет значение на основе заданных координат, но я не понимаю логики деления частиц 'x pos от мыши Y или y pos от мыши Y.Я также не понимаю, что означает «id», что, по-видимому, означает счетчик, или что выполняют следующие две строки.

Спасибо

Ответы [ 2 ]

2 голосов
/ 06 ноября 2012

При выполнении cos (радианы (d)) и sin (радианы (d)) код превращает угол (d) в единичный вектор.Например, если d равно 1 радиану, то cos (радианы (d)) будет равно -1, а sin (радианы (d)) будет равно 0, поэтому он превращает угол 1 радиан в единичный вектор (-1,0).

Небольшая коррекция: это поворот пи радиан (180 градусов), а не 1 радиан (около 57 градусов).

2 голосов
/ 22 апреля 2011

Переместите мышь, чтобы изменить движение частицы.

d, кажется, направление движения.Помещая mouseY и mouseX в вычисление d, это позволяет основному полю зависеть от положения мыши.Без лучшего понимания самой функции, я не могу точно сказать, что влияет mouseY и mouseX на поле.

Запустив код cos (радианы (d)) и sin (радианы (d))превращает угол (d) в единичный вектор.Например, если d равно 1 радиану, то cos (радианы (d)) будет равно -1, а sin (радианы (d)) будет равно 0, поэтому он превращает угол 1 радиан в единичный вектор (-1,0).

Таким образом, кажется, что существует некоторое основное поле движения, которое определяет направление движения частиц.Поле движения представлено функцией шума и принимает текущее положение частицы, идентификатор частицы (возможно, чтобы дать каждой частице независимое движение или, возможно, запомнить историю движения частицы и основать будущее движение на этой истории) итекущая позиция мыши.

Фактическое расстояние, на которое перемещается частица, равно s, которое случайно определяется в диапазоне от 2 до 7 пикселей.

...