function generateHeight (width, height) { const data = [], perlin = new ImprovedNoise(), size = width * height, z = Math.random() * 100; let quality = 2; for (let j = 0; j < 4; j++) { if (j === 0) for (let i = 0; i < size; i++) data[i] = 0; for (let i = 0; i < size; i++) { const x = i % width, y = (i / width) | 0; data[i] += perlin.noise(x / quality, y / quality, z) * quality; } quality *= 4; } return data; }
时间: 2024-04-11 12:31:09 浏览: 126
dom-max-size:确定HTMLElement的最大可伸缩尺寸
这是一个生成地形高度图的函数。它使用了改进的噪声算法(ImprovedNoise)来生成地形的高度值。函数接受两个参数:width(宽度)和height(高度),返回一个包含地形高度值的数组。
函数首先创建了一个空数组 data 和一个 ImprovedNoise 的实例 perlin。然后,它计算了地形的大小 size(width * height)和一个随机的 z 值,用于生成噪声。
接下来,函数使用一个循环来生成四个不同质量的噪声层。在第一次循环(j = 0)中,数组 data 的所有元素被初始化为 0。在每次循环中,函数遍历数组 data 的每个元素,并根据其对应的坐标位置(x 和 y)调用 perlin.noise 方法来生成噪声值,并将其乘以当前质量值 quality,然后加到对应的数组元素上。
每次循环结束后,质量值 quality 乘以 4,以增加噪声的细节。最后,函数返回生成的地形高度数据数组 data。
阅读全文