从行数组中查找所有三角形(Delaunay图)

时间:2017-08-11 15:48:52

标签: arrays grid processing mesh delaunay

我在处理中使用网格库来创建基于点阵列的三角形网格。 我的问题是这个库只能返回构成三角形的行数组而不是三角形。 有谁知道如何获得所有的三角形?

图书馆在这里:http://leebyron.com/mesh/

and here's a picture for refrence

1 个答案:

答案 0 :(得分:0)

好问题。首先,解决方案是采用可以为您提供所需格式结果的库。你需要 Delaunay三角剖分不是Delaunay图,这个库提供了什么。

可以从结果库中获取三角形提供的非常简单。如果内部图表点有n edges(getLinked()方法),而不是n个三角形的一部分。三角形的其他边缘由计算 按角度排序边缘。如果点是外部(在凸包上),则一对边缘之间的角度更大 超过180度且该对三角形不存在。

算法就像:

for each point p1:
  neighbours = delaunay.getLinked(p1)
  sort neighbours by angle to point p1
  for i=0 to size(neighbours)
    p2 = neighbours[i]
    p3 = neighbours[(i+1) % size(neighbours)]
    if (angle(p3, p1) - angle(p2, p1)) % 360deg > 180deg:
      continue  # Outer triangle
    if p2 > p1 and p3 > p1:
      continue  # Already processed
    print result triangle (p1, p2, p3)

检查(p2,p3> p1)是删除相同的三角形,因为每个三角形都会产生三次。

相关问题