用三角形填充飞机(三角测量)

时间:2017-07-04 19:24:11

标签: javascript algorithm canvas triangulation triangular

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

enter image description here

该计划应该做什么?

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

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

1

  • 随机点
  • 使用长度低于特定值的随机连接(这可能会导致三角网中的孔)
  • 尝试找出哪个连接成三角形(我在这里失败了)

2

  • 以单个三角形开头
  • 创建一个靠近现有连接的新Point,并从那里添加一个不会导致任何交叉的三角形。每当它像这张照片中留下一个小洞时就会出现问题:

    enter image description here

第3

  • 随机点
  • 建立所有可能的连接(每个点都相互连接)
  • 按长度排列连接
  • 对于以最短绘制开始的每个连接,如果它不与任何其他绘制线相交。否则删除连接。

这实际上是我最好的,即使它花了很长时间才完成它只需要几点。结果如下:

enter image description here

我没有办法找出哪个连接形成三角形,因此我无法独立地为它们着色......

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

1 个答案:

答案 0 :(得分:2)

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