3

我试图创建一个像下面这样的图像作为网站的随机背景,但经过多次尝试,我找不到完成工作的算法。

在此处输入图像描述

程序应该做什么?

它应该能够用三角形随机填充平面。这些三角形都应该是独立的,所以我不想简单地在画布上绘制长线并为创建的三角形着色。

到目前为止我尝试过的算法:

1.

  • 制作随机点
  • 进行长度低于特定值的随机连接(这可能会导致三角网中的孔)
  • 试着找出什么连接构成一个三角形(我在这里失败了)

2.

  • 从一个三角形开始
  • 在现有连接附近创建一个新点,并从那里添加一个不会导致任何相交的三角形。每当它像这张图片一样留下一个小洞时,就会导致问题:

    在此处输入图像描述

3.

  • 制作随机点
  • 建立所有可能的连接(每个点到另一个)
  • 按长度对连接进行排序
  • 对于从最短绘制开始的每个连接,如果它不与任何其他绘制的线相交。否则删除连接。

这实际上是我最好的尝试,即使程序花了很长时间才完成它,只用了几个点。结果是这样的:

在此处输入图像描述

我没有找到一种方法来找出什么连接构成了一个三角形,因此我不能独立地给它们上色......

所以希望你知道一种方法来创建一个漂亮的三角形填充画布,就像第一张图片一样,让我知道......

4

1 回答 1

2

一个好的解决方案是从随机点(使用您的首选分布)开始并应用一些三角测量算法。其中,Delaunay 三角剖分是一个很好的候选者,因为它的计算复杂度和代码可用性都很低。

于 2017-07-04T21:34:18.913 回答