美文网首页
映射噪声(漫步游走程序)

映射噪声(漫步游走程序)

作者: 大龙10 | 来源:发表于2022-03-22 09:57 被阅读0次

书名:代码本色:用编程模拟自然系统
作者:Daniel Shiffman
译者:周晗彬
ISBN:978-7-115-36947-5

0.6.1 映射噪声

1、如何处理得到的噪声值

  我们开始研究如何处理得到的噪声值。

  • 得到0~1的噪声值之后,我们需要将它映射到我们想要的范围内
  • 最方便的方法是使用Processing的map()函数。
    map()函数有5个参数。
    第一个参数是我们想要映射的值(这里即n),
    后面的两个参数是该值原来的范围(最大值和最小值),
    最后两个参数是目标范围。
图0-8

2、映射

  我们知道噪声函数的返回值在0~1的范围内,但我们想要在0到窗口宽度的范围内画这个圆。

float t = 0;
void draw() {
  float n = noise(t);
  float x = map(n,0,1,0,width); 用map()函数定制Perlin噪声的范围
  ellipse(x,180,16,16);
  t += 0.01;
}

3、Perlin噪声游走模型

class Walker {
  float x, y;
  float tx, ty;

  float prevX, prevY;

  Walker() {
    tx = 0;
    ty = 10000;
    x = map(noise(tx), 0, 1, 0, width);
    y = map(noise(ty), 0, 1, 0, height);
  }

  void render() {
    stroke(255);
    line(prevX, prevY, x, y);
  }

  // Randomly move according to floating point values
  void step() {

    prevX = x;
    prevY = y;

    x = map(noise(tx), 0, 1, 0, width);
    y = map(noise(ty), 0, 1, 0, height);

    tx += 0.01;
    ty += 0.01;

  }
}
  • 请注意上面的例子是如何使用tx和ty这对变量做参数的。
    我们同时需要跟踪两个时间变量,一个用于产生游走对象的x坐标,另一个用于产生y坐标,
    但是这两个变量还有一些奇怪的地方,为什么tx从0开始,而ty从10 000开始?
    尽管这两个初始值是随意确定的,但我们故意用了不同的值来初始化这两个时间变量。
    这是因为噪声函数的返回结果是确定的:无论何时调用它,只要传入的时间点t相同,返回的结果也相同。
    如果我们通过同一个时间点t获取两个坐标,返回的x坐标和y坐标会是相等的,这意味着游走对象Walker只会在一条对角线上移动。
    在这里,我们用了噪声空间的两个不同区域,x坐标对应的区域从0开始,y坐标对应的区域从10 000开始,这样x坐标和y坐标就会彼此独立。
图0-9
  • 实际上,Perlin噪声是没有时间轴这个概念的。
    为了让大家更容易地理解噪声函数的工作方式,我引入了时间轴这个隐喻。但是,我们应该有空间的概念,而不该有时间轴的概念。
    上图描述了噪声序列在一维空间上的排列,我们可以获取任意x坐标上的噪声值。
    比如,你经常会在噪声图中看到一个叫xoff的变量,它表示x轴上的偏移量,取代上面说的时间点变量t(见图表注解)。

相关文章

  • 映射噪声(漫步游走程序)

    书名:代码本色:用编程模拟自然系统作者:Daniel Shiffman译者:周晗彬ISBN:978-7-115-3...

  • Procedural程序

    Procedural——程序 Checkerboard——棋盘 Noise——噪声 Gradient Noise—...

  • 图像平滑处理

    对于受噪声干扰严重的图象,由于噪声点多在频域中映射为高频分量,因此可以在通过低也可以直接在空域中用求邻域平均值的方...

  • 如何正确地给图像添加高斯噪声

    高斯噪声是一个均值为 0 方差为 的正态分布,是一个加性噪声。但要正确地给图片添加高斯噪声,还要取决于程序中读入...

  • 如何正确地给图像添加高斯噪声

    高斯噪声是一个均值为 0 方差为 的正态分布,是一个加性噪声。但要正确地给图片添加高斯噪声,还要取决于程序中读入...

  • Procedural Noise Adversarial Exa

    3. 程序化噪声方法 该文章提出一种利用程序化噪声来生成对抗样本的方法, 所提出的方法和那些通过梯度不断修改以至于...

  • 赵原野传 历史

    寻找梦想,战争来临。天堂幻想,军阀飞翔。可爱游走,无情漫步。大胆坚持,成就辉煌。努力进取,游走,胆大飞翔。天堂进取...

  • 基于内存映射的设备驱动程序

    基于内存映射的设备驱动程序 通过添加内核模块实现一个基于内存映射的杂项设备驱动程序。

  • 寒冬渐远,祈盼暖春的到来!

    原创: 漫步的思绪 (随笔). 有时候 ,我喜欢漫无目的地在户外游走。 游走于我来说,既没有目标...

  • 降噪 Noise Reduction

    降噪是声音录制和后期制作中经常会用到的程序。降噪的原理是利用噪声和信号之间的模式差别识别出噪声。信噪比越高,声音之...

网友评论

      本文标题:映射噪声(漫步游走程序)

      本文链接:https://www.haomeiwen.com/subject/oitwdrtx.html