1

我正在制作地形/地图生成器。地形生成工作正常,但是在地形周围放置城市时会出现问题。我根据地形的湿度、温度、土壤质量和地下矿物质含量将城市放置在给定的地形上。自然地,最佳地形将在附近具有次优地形,因此我的城市出现在集群中,就像这样(城市是红点):

在此处输入图像描述

我倾向于的解决方案是确定两个城市是否在一定的距离内,如果是,则将其中一个城市移动到远离其他城市的位置。我的问题是:

  1. 这是分散城市的最佳方法吗?
  2. 如果是这样,我可以使用什么技术来确定两个城市的距离(我读过最近的邻居搜索,它看起来很有希望,也许是这样)?
4

2 回答 2

4

我会降低对可能的城市位置的限制。计算一个城市每个位置的概率。

比根据所有尚未被城市占据的位置的概率随机设置一个城市。

比降低新设置城市周围的概率(在一定半径内,靠近城市的概率会降低很多(甚至将它们设置为 0),并且随着距离的增加,概率会越来越低。

这样,城市应该很自然地分布在您的地形周围。

示例(非常少) 如何获取下一个位置:
您有 3 个可能的位置,概率为 0.9、0,2 和 0.4 现在总结概率 0.9 + 0.2 + 0.4 = 1.5
现在取一个介于 0 和 1.5 之间的随机数。

0   .. 0.9 take the first location  
0.9 .. 1.1 take the second location  
1.1 .. 1.5 take the third location
于 2013-08-29T07:13:10.710 回答
0

两种方法:

如果您只有几个城市,那么每当您考虑添加新的城市时,只需计算新站点到现有城市的距离,如果距离低于您设置的阈值,则不要添加城市。

如果您有很多城市,请分配与原始地图网格相同大小的掩码,并且每当您添加城市时,将该城市附近的所有点标记为“已占用”,这意味着您无法向这些点添加新城市。基本上,您可以通过在掩码中标记该地形点,将现有城市附近的地形点的适用性设置为零。创建一个圆盘形蒙版以获得最佳效果。如果需要,您可以使用从城市开始的洪水填充物,然后仅通过陆路填充磁盘掩码,这样城市的影响就会停止到河流的一侧。(想想布达和佩斯)。

于 2013-08-29T08:32:34.337 回答