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

例如 , 对于二维空间来说 , 如果xfyf满足xf>yf , 那么对应的3个单形坐标为:首先找到(00) , 由于x分量比较大 , 因此下一个坐标是(1 0) , 接下来是y分量 , 坐标为(11);对于三维空间来说 , 如果xfyfzf满足xf>zf>yf , 那么对应的4个单形坐标位:首先从(0 00)开始 , 接下来在x分量上加1得(1 0 0) , 再在z分量上加1得(1 0 1) , 最后在y分量上加1得(1 1 1) 。

3.梯度选取:我们在偏斜后的超立方体网格上获取该单形的各个顶点的伪随机梯度向量 。

4.变换回单形网格里的顶点:我们首先需要把单形顶点变回到之前由单形组成的单形网格 。 这一步需要使用第一步公式的逆函数来求得:

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

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

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

5.贡献度取和:我们由此可以得到输入点到这些单形顶点的位移向量 。 这些向量有两个用途 , 一个是为了和顶点梯度向量点乘 , 另一个是为了得到之前提到的距离值dist , 来据此求得每个顶点对结果的贡献度:

推荐阅读