生成随机池或湖泊


9

我已经实现了可以绘制任何多边形的函数,但是我无法生成模仿湖泊圆角的平滑形状。我尝试生成两个圆并连接边缘,但是没有足够的变化或平滑度。是否有人有可能产生这样的形状的指针或想法?


我一直在研究贝塞尔曲线,似乎可以从中产生一个湖。任何人在2D阵列上对它们都有经验吗?
Manderin87

Answers:


8

alwynd提到了Perlin噪音。这是我为多边形地图生成器生成岛形的方法:

  1. 产生珀林噪声。
  2. 对于每一个位置(x, y)在噪声位图,计算从中心的距离,归一化,使得该位图是2×2: (dx, dy) = (2 * x / width - 1, 2 * y / height - 1); d = sqrt(dx*dx + dy*dy)
  3. 位置(x, y)是该岛的一部分noise[x, y] > 0.3 + 0.4*d*d。此步骤试图通过切除远离中心的区域使形状变圆。

不过,岛屿比湖泊还有些参差不齐,所以我不确定这些形状是否符合您的喜好。我已经演示了上述算法,并在底部带有控制两个幻数的按钮。魔术数字0.3和0.4的值可能不同,它们会产生您喜欢的形状。


2
阿米特(Amit)是您工作的主要灵感。如果可以的话,我需要+ 10k的精力,这5年左右的时间使我无法阅读您的博客。
工程师

4

如果您使用的是自顶向下的视图(多边形形状,听起来像您),则可以使用Perlin Noise算法为您生成湖泊,斯坦福大学的那个家伙就是这样做的。

http://www-cs-students.stanford.edu/~amitp/game-programming/polygon-map-generation/


1
“来自斯坦福的那个人”也是该网站的用户,仅供参考。
工程师

谁不是 =)我可能会从一些杂讯(Perlin,分形)开始,但会模糊结果以减少“锯齿状”结果。顺便说一句,很棒的文章-喜欢他在河流中的游乐方式。
贾里·康帕

0

一种方法是从一个基本的多边形开始,也许是两个圆的方法。

首先,随机地将所有点偏移,这样看起来就不会像一个圆,然后将每个边缘分成2个部分,并将中间点偏移一些小的随机量。继续执行此操作,直到获得所需的详细信息为止。
这类似于生成闪电叉时所做的事情。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.