区域地图生成
是否有一种简单的方法,或者至少是一种中等程度的方法来生成区域地图(例如,风险)?
我回顾了过去,所能找到的最好的东西是对Voronoi图的模糊引用。 Voronoi图的示例如下:
此处http://www.dma.fi.upm.es/mabellanas/tfcs/fvd/images/voronoi.gif。
这些保留了希望,但是我想我还没有看到任何直接呈现它们的方法,更不用说将它们保留在某种形式的数据结构中以将每个领土都当作一个对象了。
充满希望的另一种方法是洪水填埋,但我仍然不确定从这种方法开始的最佳方法。
任何建议将不胜感激。
解决方案
回答
为什么不使用图元的地图(三角形,正方形),分配国家/地区的起点("资本"),然后通过向国家/地区添加随机相邻的国家/地区来随机扩展国家/地区。
回答
我在它们上看到的最好的参考是《计算几何:算法和应用程序》,其中涵盖了Voronoi图,Delaunay三角剖分(类似于Voronoi图,并且每个都可以转换为另一个)以及其他类似的数据结构。
他们讨论了我们需要的所有数据结构,但没有为我们提供实现它所必需的代码(这可能是一个很好的练习)。在代码方面,亚马逊搜索显示了《用C语言计算几何》一书,这大概是随代码一起提供的(尽管由于我们被困在C中,所以我们还可以获取另一本书并以所需的任何语言实现它)。我也没有任何关于这本书的经验,只有第一本书。
对不起,只有书值得推荐!我在他们身上看到的唯一不错的在线资源是Wikipedia的两篇文章,它们并没有真正告诉我们实现的细节。该链接可能会有所帮助。
回答
CGAL是一个C ++库,具有在计算几何中使用的数据结构和算法。
回答
实际上,我正在为公司的视频游戏处理这类东西。我发现的最有用的信息是在以下两个链接上:
保罗·伯克(Paul Bourke)在华盛顿大学的页面,及其1989年有关Delaunay的论文以及一系列实施链接。
可以在codeGuru.com上对伪代码进行很好的解释,并可以直观地看到Delaunay。
就渲染这些大多数实现而言,我需要进行按摩以获取所需的内容,但是由于将其用于游戏地图会导致许多点以及它们之间的线条,因此这可能非常简单重要的是将此绘制到屏幕上。