當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Processing noise()用法及代碼示例


Processing, noise()用法介紹。

用法

  • noise(x)
  • noise(x, y)
  • noise(x, y, z)

參數

  • x (float) 噪聲空間中的 x 坐標
  • y (float) 噪聲空間中的 y 坐標
  • z (float) 噪聲空間中的 z 坐標

返回

  • float

說明

返回指定坐標處的 Perlin 噪聲值。 Perlin 噪聲是一種隨機序列生成器,它產生比標準random() 函數更自然、更和諧的數字序列。它由 Ken Perlin 在 1980 年代開發,並已用於圖形應用程序以生成程序紋理、形狀、地形和其他看似有機的形式。



random() 函數相比,Perlin 噪聲定義在無限的 n 維空間中,其中每對坐標對應一個固定的 semi-random 值(僅在程序的生命周期內固定)。結果值將始終介於 0.0 和 1.0 之間。根據給定的坐標數,處理可以計算 1D、2D 和 3D 噪聲。可以通過在噪聲空間中移動來設置噪聲值,如上麵的第一個示例所示。第二和第三維度也可以解釋為時間。



就函數對頻率的使用而言,實際的噪聲結構類似於音頻信號的結構。與物理學中的諧波概念類似,Perlin 噪聲是在幾個八度音階上計算的,這些八度音階相加得到最終結果。



另一種調整結果序列字符的方法是輸入坐標的比例。由於函數在無限空間內工作,因此坐標值無關緊要;隻有連續坐標之間的 distance 很重要(例如在循環中使用 noise() 時)。作為一般規則,坐標之間的差異越小,得到的噪聲序列越平滑。 0.005-0.03 的步長最適合大多數應用程序,但這會因用途而異。



關於在處理中實現噪聲的準確性一直存在爭議。澄清一下,它是 1983 年“經典 Perlin 噪聲”的實現,而不是 2001 年更新的 "simplex noise" 方法。

例子

float xoff = 0.0;

void draw() {
  background(204);
  xoff = xoff + .01;
  float n = noise(xoff) * width;
  line(n, 0, n, height);
}
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);
  }
}

相關用法


注:本文由純淨天空篩選整理自processing.org大神的英文原創作品 noise()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。