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 noiseSeed()用法及代碼示例
- Processing noiseDetail()用法及代碼示例
- Processing normal()用法及代碼示例
- Processing norm()用法及代碼示例
- Processing noFill()用法及代碼示例
- Processing noTint()用法及代碼示例
- Processing noStroke()用法及代碼示例
- Processing noClip()用法及代碼示例
- Processing noSmooth()用法及代碼示例
- Processing noLoop()用法及代碼示例
- Processing noCursor()用法及代碼示例
- Processing new用法及代碼示例
- Processing nf()用法及代碼示例
- Processing null用法及代碼示例
- Processing nfp()用法及代碼示例
- Processing nfs()用法及代碼示例
- Processing nfc()用法及代碼示例
- Processing FFT用法及代碼示例
- Processing SawOsc.pan()用法及代碼示例
- Processing FloatDict用法及代碼示例
- Processing FFT.stop()用法及代碼示例
- Processing join()用法及代碼示例
- Processing () (parentheses)用法及代碼示例
- Processing Pulse用法及代碼示例
- Processing PShader用法及代碼示例
注:本文由純淨天空篩選整理自processing.org大神的英文原創作品 noise()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。