给定平面中的“密度”标量场,如何将平面划分为良好的(低惯性矩)区域,以便每个区域包含相似数量的“质量”?
这不是对我的实际问题的最佳描述,但这是我能想到的最简洁的措辞。
我有一张用于游戏的虚构世界的大地图。我很清楚一个人从这张地图上的任何给定点一天可以走多远,并且这根据地形等而变化很大。我想通过将地图划分为多个区域来表示此信息,以便步行一天就可以从任何地区到达其任何邻近地区。它不一定是完美的,但它应该比简单地将地图划分为六边形网格(这是许多游戏所做的)要好得多。
我的想法是,我可以创建一个与地图尺寸相同的灰度图像,其中每个像素的颜色值代表人们可以多快地穿过地图上同一位置的像素。维护良好的道路将被编码为白色像素,不可逾越的悬崖将被编码为黑色,或类似的东西。
我的问题是:有人知道如何使用这样的灰度图像(“密度”标量场)从上一段(类似“质量”的区域)生成我的“网格”吗?
我考虑过使用灰度图像作为离散概率分布,从中我可以生成一堆坐标,然后使用某种聚类算法来创建区域,但是a)聚类算法必须创建我认为,为了使这个想法发挥作用,我认为它们通常不会这样做,并且b)我几乎不知道其中任何一个是否有意义,因为我已经脱离了我的舒适感区在这里。
抱歉,如果这不属于这里,我的想法一直是以某种方式以编程方式解决它,所以这似乎是最明智的提问地点。
UPDATE:只是想分享到目前为止我得到的结果,尝试@samgak建议的第二种方法 - 递归地将区域细分为相似质量的盒子,找到每个区域的质心,并根据这些创建一个 voronoi 图。
我会继续调整,也许会尝试找到一种方法来使其不那么像网格(如右上角),但这比我预期的要好得多!
基于@samgak 的解决方案,如果您不想要网格状结构,您可以向您的中心添加一个小的随机扰动。例如,您可以在下面看到我获得的差异:
without perturbation
adding some random perturbation
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)