三维随机分形地形生成(8)
发布时间:2021-06-07
发布时间:2021-06-07
参考前五幅插图,下图示意了使用我们的 diamond-square 算法两次经过数组时发生的情况。
对于第一遍经过 diamond 步时,我们依据四个角的值在数组中心生成一个值。我们平均四个角的值(如果种子值相等则完全没必要),并加上一个 -1.0 到 1.0 之间的随机值。在插图 b 中,新值显示成黑色,已经存在的点显示为灰色。
对于 square 步,我们在相同的范围内生成随机值。这一步时有四个棱锥;他们在数组中心相交,这样我们计算四个 diamond 中心。 diamonds 的角被平均以找出新值的基数。插图 C 用黑色显示新值,现存值为灰色。
以上是第一遍,如果用线将这 9 个点边起来,就可以得到一个线框的表面,看起来就象:
现在进行第二遍。再次从 diamond 步开始。第二遍与第一遍有两点不同。首先,我们现在有四人四边形面不是一个,因此我们得计算四个方面的中心。其次,这是关键,生成随机数的范围已经被减小了。因为例子的缘故,让我们认为正在使用一个 H=1.0 的值。这将把我们的随机数取值范围将从 (-1.0,1.0) 到 (-0.5,0.5) 。在插图 D 中,我们这一步计算得到的四个正方形中心值显示为黑色。
最后,我们进行第二遍的 square 步。有 12 个棱锥中心,我们现在需要计算 12 个新值,如图 e 中黑色所示。
现在数组中全部 25 个元素都已经生成。我们可以得到如下的线框曲面。