程序化的锯齿状山峰

我想生成类似于下面显示的随机洞穴types背景。

在这里输入图像描述

我怀疑我产生的任何东西看起来都和图像一样好,但是那种尖锐的锯齿状峰值应该是可能的。

我没有任何程序生成的经验,因此不知道从哪里开始….

注意:我在Android上使用libGdx

只要您input正确的数值,中点位移就可以工作。

要获得更清晰的山峰和山谷,您需要在抑制中等数字的同时倾向于高低数字。 例如,假设某个函数rnd()在[0-1]范围内返回一个统一的随机数。 然后(sin(rnd()*PI)+1)/2.0会偏离那个结果,使值更接近于0或1.其他的math变换可以起作用,这个变换很容易在电子表格中建立原型。 如果您需要实时执行此操作,则可能需要比sin()更快的操作。

另外,我只会将上面的值应用于中点位移所使用的第一组值。 在algorithm的“内部”,我会使用统一的噪声。 这就是说,很容易尝试两种方式,看看哪个更适合你。

这个解决scheme不会做的一件事就是将钟乳石与石笋配对,而不是偶然的机会。 如果这是一个要求,你应该相应地更新问题。

一个简单的方法就是使用中点位移algorithm :

  1. 从代表天花板的线开始。
  2. 在中点处,将其移动一些随机数量,离开它们的终点。
  3. 现在把所得到的2条线段分成两部分,把它们分成两部分(把它们分成两半,并把它们的中心置换一个随机数)。
  4. 继续这样做,直到你有一个你喜欢的形状。 为地板做同样的事情。
  5. 重复该过程的地板,但位移向上,而不是向下。

另外,看到这个答案 。