【互动媒体创意编程0】柏林噪声生成的随机地形
前言
重接从结课以来陆陆续续一边学一边写的大作业。
这大概是最近时间里写得最舒服的一科作业了。除了偶尔有的bug,整体来说难度都不高,并且写出来真的非常好看也非常有意思。
《代码本色》是我从大一的时候就知道的一本书,但知道最近才真正仔仔细细去看一遍。现在我将前面五章内容的作业写到一个文档中,因为它们之间彼此有一些联系,也可以从相互之间得到一些启发。
我在构思的前期花费了很多时间。相关的想法网上有很多,但是都不是很有趣。因此我花费了很多时间在油管上找了一些实例,参考了一些,也仿写了一些。(有一些想法真的是很妙呀。)
第0章:随机游走和泊林噪声
这是模仿youtube上的一个代码挑战编写的程序。先来看效果:
比较显而易见的是,这样的地形很显然是由一块平整地形进行局部节点拔高形成的。
在二维平面中,我们很容易能够将整块画布切分为一定密度的网格,只需要计算它的行和列,并连接成线即可。
不过,我们如果想要一块可以动的地形,那么就必然不可能通过画线来实现这样的网格,除非我们计算每一个节点的位置,然而这样的做法很显然是没有必要的。
processing为用户定义了绘制特定图形的方法,即beginShape()、vertex()以及endShape()。通过这三个函数,我们将能够利用计算好的节点位置批量生成图形。在这里,这个方法显现出了巨大的优势。
代码也很简单:
int cols,rows;
int density =20;
color currentColor;
int scl = 20;
void setup(){
size(900,600,P3D);
int w = 900;
int h = 600;
cols = w/scl;
rows = h/ scl;
}
void draw() {
background(0);
stroke(255);
noFill();
for(int y=0;y < rows;y++){
beginShape(TRIANGLE_STRIP)