javascript - 在 JavaScript 中识别位掩码中的湖泊

标签 javascript algorithm flood-fill

我有一个使用单纯形噪声生成“大陆”的算法,因此它会生成高度图,当像素/图 block 高于某个水平时,它会被识别为陆地,否则就是水。

我遇到的问题是,有时陆地会包围低于海平面的部分。我希望能够识别这些区域,因为它们不是海洋,而是陆地或湖泊。

所以后面的 0 代表水,1 代表陆地:

000000000
001110100
011111110
011001110
001101100
001111000
000000000

中间的3个0会被识别为非海。

我熟悉洪水填充算法。所以我可以做到的一种方法是遍历随机点,如果我找到水,就使用洪水填充,如果它超过一定大小,那么它将是大海。然后,一旦识别出海洋,我就可以通过并识别非海洋物体以获取水。

这似乎效率低下,因为我将不得不处理比装载区域更大的区域,否则它会错误地将区域识别为非海洋区域。

有没有更好的办法?

最佳答案

您提到您已经熟悉洪水填充。为什么不从 map 边缘进行洪水填充以获取海域?任何不从边缘淹没的水体都将成为湖泊。

关于javascript - 在 JavaScript 中识别位掩码中的湖泊,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13919358/

相关文章:

c++ - 面对昂贵的交换,双枢轴快速排序

iPhone 油漆桶

python - 洪水填充 NumPy 数组 `numpy.ndarray` ,i。 e.为元素分配新值并更改相同值的相邻元素

javascript - 等待内部的等待不会给出正确的输出

algorithm - 优化搜索最近点的暴力解决方案

algorithm - 检查两个节点或顶点之间是否存在路径的各种方法及其运行时?

javascript - 如何用此字符串中的两个不同字符替换第一个和最后一个引号 "{0}"

javascript - Protractor 滤芯全部坏了

javascript - 如何在一次搜索中获取匹配的员工详细信息而不循环