欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【互动编程习作】引言——表现随机行为

程序员文章站 2022-07-15 08:07:05
...

前言

在《代码本色》的第0章 引言 中,主要讲到了随机行为和噪声,以下为第0章的内容目录:
【互动编程习作】引言——表现随机行为
针对随机行为和噪声,我进行了自己的习作。

关于习作

学习了《代码本色》第0章的内容之后,关于习作,我想表现的元素就是:

  1. 随机性
  2. 噪声平滑
  3. 三维图像

针对这三个我想要表现的元素,可以使用Perlin Noise去实现。

noise()函数传入三个参数,在柏林噪声随机序列中,就可以产生三维的柏林噪声,使用立方体阵以通过颜色和体积对不同空间点的强度进行可视化。这样就实现了随机性、噪声平滑以及最后的三维可视化。

下面是效果图和具体代码实现:
【互动编程习作】引言——表现随机行为

void setup(){
  size(800, 400, P3D); 
  background(100,100,100);
  noStroke();
  lights();
}
float t = 0;
void draw(){
  ++t;
  clear();
  for (int x = 0; x < width; x += 20){
    for (int y = 0; y < height; y += 20){
      for (int z = 40; z < 500; z += 20){
        float n = noise(0.02*(x), 0.02*(y), 0.02*(z+t));
        translate(x,y,-z);
        fill(t*100,n*160);
        box(n*25);
        translate(-x,-y,z);
      }
    }
  }
}

关于代码

首先是在setup()函数里面创建三维画布,设置背景色等等。
设置一个变量 t ,这个变量用于使得图像动态随时间变化,这个变量在draw()函数中递增。
在draw()函数里面嵌套了三层for循环。
其中设置一个变量 n,用来接收返回的 noise()函数的值,这个随机产生的噪声值,用来控制box立方体的体积以及颜色。
这样就满足了随机性,噪声以及三维效果可视化等多方面的要求。