用三角形填充平面(三角测量)
Filling a plane with triangles (Triangulation)
我尝试创建如下图所示的图像作为网站的随机背景,但经过多次尝试后我找不到能够完成工作的算法。
程序应该做什么?
应该可以用三角形随机填充一个平面。这些三角形应该都是独立的,所以我不想简单地在 canvas 颜色上绘制长线创建的三角形。
到目前为止我尝试过的算法:
1.
- 随机点数
- 建立长度低于特定值的随机连接(这可能会导致三角网出现孔洞)
- 试着找出什么连接构成三角形(我在这里失败了)
2.
- 从一个三角形开始
在现有连接附近创建一个新点,并从那里添加一个不会导致任何交叉点的三角形。每当它像这张图片那样留下一个小洞时,就会导致问题:
3.
- 做随机点
- 建立所有可能的连接(每个点都相互连接)
- 按长度对连接进行排序
- 对于以最短绘制开始的每个连接,如果它不与任何其他绘制线相交。否则删除连接。
这实际上是我最好的尝试,即使这个程序花了很长时间才完成它,只需要几个点。结果是这样的:
我没有找到一种方法来找出哪些连接组成三角形,因此我无法独立地给它们上色...
希望您知道如何创建漂亮的三角形填充 canvas,就像第一张图片中那样,让我知道...
一个好的解决方案是从随机点开始(使用您的首选分布)并应用一些 triangulation 算法。其中,Delaunay 三角剖分是一个很好的候选者,因为它具有低计算复杂性和代码可用性。
我尝试创建如下图所示的图像作为网站的随机背景,但经过多次尝试后我找不到能够完成工作的算法。
程序应该做什么?
应该可以用三角形随机填充一个平面。这些三角形应该都是独立的,所以我不想简单地在 canvas 颜色上绘制长线创建的三角形。
到目前为止我尝试过的算法:
1.
- 随机点数
- 建立长度低于特定值的随机连接(这可能会导致三角网出现孔洞)
- 试着找出什么连接构成三角形(我在这里失败了)
2.
- 从一个三角形开始
在现有连接附近创建一个新点,并从那里添加一个不会导致任何交叉点的三角形。每当它像这张图片那样留下一个小洞时,就会导致问题:
3.
- 做随机点
- 建立所有可能的连接(每个点都相互连接)
- 按长度对连接进行排序
- 对于以最短绘制开始的每个连接,如果它不与任何其他绘制线相交。否则删除连接。
这实际上是我最好的尝试,即使这个程序花了很长时间才完成它,只需要几个点。结果是这样的:
我没有找到一种方法来找出哪些连接组成三角形,因此我无法独立地给它们上色...
希望您知道如何创建漂亮的三角形填充 canvas,就像第一张图片中那样,让我知道...
一个好的解决方案是从随机点开始(使用您的首选分布)并应用一些 triangulation 算法。其中,Delaunay 三角剖分是一个很好的候选者,因为它具有低计算复杂性和代码可用性。