【问题标题】:Duplicate edges not being removed in Delaunay Triangle construction在 Delaunay 三角形构造中未删除重复的边
【发布时间】:2015-06-20 19:20:20
【问题描述】:

我正在尝试实施 Delaunay 三角测量。但是,我似乎在创建重叠三角形的边缘时遇到了问题:

我的实现基于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

【问题讨论】:

    标签: javascript delaunay


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2014-01-21
      • 2016-05-19
      • 2016-04-29
      • 2013-07-14
      • 1970-01-01
      • 2012-09-03
      • 2016-02-08
      • 2014-05-29
      • 2011-04-08
      相关资源
      最近更新 更多