随机生成二维多边形/区域以填充[length,width]区域的方法?

z9smfwbn  于 2021-09-13  发布在  Java
关注(0)|答案(0)|浏览(250)

最终,我想去一个地方,在一个假“大陆”上生成多个假“国家”,但首先,我把问题归结为一些简单的问题,我已经在这第一步卡住了:
给定一个区域(比如说10个平铺x 10个平铺)和一些多边形(比如说6个),我正在寻找一种方法来随机给出多边形平铺坐标,这样6个大小大致相同的多边形(可以+/-10%,诚实地说,甚至是计划好的)将填充整个网格。不是确切的代码本身,而是我如何在纸上完成它。
我也考虑过使用螺旋。从该区域的近似中心(比如[4,4])开始,顺时针旋转并在100/6=~16处切断。虽然这看起来是一种非常直接的方法,无论是在纸面上还是在代码中,但它肯定会产生外观怪异的多边形:

不管我如何调整一些随机变量(例如多边形的大小,我从哪里开始,等等),它总是这样。在一个变体中,从左下角点开始向上,然后向右,然后向下,然后向右,等等,得到相同的结果:

为了创建一些模糊的真实感,我想我需要在[10,10]区域生成6个质心,然后使用螺旋方法从中创建区域。

我发现自己很快就遇到了三个问题:
如何“平均间隔”出质心?
我如何处理“重叠”区域,如?s或?!s(第二次通过时)
如何处理“间隙”区域,如上面的字母g所示?
最后。。。这种质心法是最好的方法吗?我听说过(并通过“点击按钮”)k-means聚类。。。从理论上讲,将我的100个点设置为输入点并尝试生成6个簇是否有效?
任何帮助都将不胜感激!

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题