当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。