C/C++编程笔记:游戏开发中的噪声算法详解,游戏编程常用技术(13)

一个潜在的问题是如何找到输入点所在的单形 。

在计算Perlin噪声时 , 判断输入点所在的正方形是非常容易的 , 我们只需要对输入点下取整即可找到 。

对于单形来说 , 我们需要对单形进行坐标偏斜(skewing) , 把平铺空间的单形变成一个新的网格结构 , 这个网格结构是由超立方体组成的 , 而每个超立方体又由一定数量的单形构成:

我们之前讲到的单形网格如上图中的红色网格所示 , 它们有一些等边三角形组成(注意到这些等边三角形是沿空间对角线排列的) 。 经过坐标倾斜后 , 它们变成了后面的黑色网格 , 这些网格由正方形组成 , 每个正方形是由之前两个等边三角形变形而来的三角形组成 。 这个把N维空间下的单形网格变形成新网格的公式如下:

x'=x+(x+y+...)?K1

y'=y+(x+y+...)?K1

其中 , K1=n+1√?1n

推荐阅读