生成一堆完美包装的随机 ngon

Generate a bunch of random ngons that are perfectly packed

这里的问题是我真的不知道要问正确的问题,但本质上我想生成一个 ngon 的模式,它们完美地组合在一起,有点像图片。

是否有算法或任何东西可以做到这一点?

仅供参考,我正在 JavaScript

尝试此操作

你想要的算法是Voronoi Diagram。算法的基本描述是这样的:

  1. 生成平面上的随机点列表(或从某处获取点作为输入)。
  2. 创建一个 n 边形的几何图,表示离每个点最近的平面中的所有 space。

生成的图形看起来像这样(风格化和着色):

n 边形的外观和形状取决于点的间距。您可以使用不同的点分布或生成方法来获得具有特定特征的 Voronoi 图。您还可以自己玩 n 边形,例如,您可以将边界视为模糊近似值,混合或在相邻的 n 边形之间留下间隙:

您可以使用 Voronoi 图做很多很酷的事情,而且几乎每种编程语言都有可以非常快速地计算一个的库。例如,Paper.js 的交互式示例之一是 dynamically generated Voronoi Diagram where one of the points is the location of the cursor. Here's another example where someone uses Voronoi Diagrams as one of the steps for procedural terrain generation. Yet another example is a Voronoi Diagram using the locations of all the airports in the world,您可以使用它来查找距地球上任何位置最近的机场。

Javascript 中的一个这样的库是 d3-voronoi,虽然就像我说的那样,那里有很多库,更不用说关于如何自己实现它的大量教程文章了决定走那条路。