在Delaunay三角形结构中没有删除重复边缘

时间:2015-04-15 01:07:19

标签: javascript delaunay

我试图实施Delaunay Triangulation。但是,我似乎遇到了边缘创建重叠三角形的问题:

enter image description here

我基于this网站上描述的实施方式。我只是使用暴力循环来检查集合中是否已存在边缘。

v = vertex to be added
edgeBuffer = [];
for each triangle
    if v is in the triangle's circumscribed circle
        for each edge in the triangle
            check if it's already in edgeBuffer
            if not, add it
        remove triangle

我怀疑它是我的算法的另一部分出错并导致这种情况发生,但我已经以非常简单的方式实现了所有内容。这段代码有什么问题? Fiddle

1 个答案:

答案 0 :(得分:0)

如果边缘已经存在于边缘缓冲区中并且它不是超级三角形之后的第一个三角形,则需要从边缘缓冲区中移除它而不是跳过循环。新计算需要此边的顶点。只需将顶点重新插入另一个缓冲区或从边缘缓冲区中删除边缘。