我需要将瓷砖放置在从中心点放射出的大网格上,看上去自然而随机。新的图块将需要在网格上找到一个至少与另外1个图块接触的开放空间。
谁能指出我对任何可能对此有帮助的方向权?
还是我能读懂的一些基本概念?
例如,在这张照片中,已经创建了一个形状(黄色),我可能正在接收一个新的图块,该图块可能是1x1、2x2或3x3。试图找到一种很好的方法来弄清楚我可以在哪里放置新的图块,以便它将接触到当前图块的最大数量。
图片:
alt text http://osomer.com/grid.JPG
最佳答案
或者,您可能会遇到此问题,因为黄色瓷砖会逐渐侵 eclipse 蓝色/背景。为此,在每个步骤中,让一个黄色磁贴向基数方向上与其相邻的所有背景磁贴的“侵 eclipse 总和” E 添加一个固定的数字(也许是与该背景磁贴相邻的背景磁贴的一小部分)对角线)。
然后,当需要放置新图块时,您可以为每个背景图块选择一个从0到 E 的随机数;最伟大的是被“侵 eclipse ”了。或者,您可以执行简单的加权随机选择,用 E 作为权重。
对于2x2或3x3的瓷砖,您只能从合适地“适合”其中2x2或3x3正方形的瓷砖中进行挑选(也就是说,其边缘上的2x2或3x3侵 eclipse 的瓷砖,以免与已经存在的瓷砖重叠)放置瓷砖)。但是,实际上,您永远都不会得到像一对一的侵 eclipse /贴砖放置一样自然的东西。
您可以通过在每次迭代中保留侵 eclipse 总和来节省重新计算侵 eclipse 总和的时间,仅当您添加一个新的图块时,将其周围的侵 eclipse 总和上调一下即可(一个简单的+=
)。在这一点上,它与提出的另一个答案基本相同,尽管具有不同的观点/理念。
侵 eclipse 求和的样本网格 E ,直接主要邻居为+4,对角邻居为+1:
Erosion Sums http://img199.imageshack.us/img199/4766/erosion.png
E 较高的那些很可能被“侵 eclipse ”掉了;例如,在这一幅图中,西面和南面的两个小入口最有可能被黄色侵 eclipse ,其次是北面和东面的较小海湾。极有可能是勉强触及黄色的人。您可以通过为每个图块分配从0到 E 的随机数并侵 eclipse 具有最高随机数的图块,或者进行简单的加权随机选择,或者通过您选择的任何决策方法,来决定使用哪个。
关于algorithm - 随机图块布局,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3115669/